aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he/moonbase/ai_tree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/he/moonbase/ai_tree.cpp')
-rw-r--r--engines/scumm/he/moonbase/ai_tree.cpp27
1 files changed, 18 insertions, 9 deletions
diff --git a/engines/scumm/he/moonbase/ai_tree.cpp b/engines/scumm/he/moonbase/ai_tree.cpp
index 7bd44f6644..2571928074 100644
--- a/engines/scumm/he/moonbase/ai_tree.cpp
+++ b/engines/scumm/he/moonbase/ai_tree.cpp
@@ -33,6 +33,8 @@ Tree::Tree() {
pBaseNode = new Node;
_maxDepth = MAX_DEPTH;
_maxNodes = MAX_NODES;
+ _currentNode = 0;
+ _currentChildIndex = 0;
_currentMap = new Common::SortedArray<TreeNode *>(compareTreeNodes);
}
@@ -42,6 +44,8 @@ Tree::Tree(IContainedObject *contents) {
pBaseNode->setContainedObject(contents);
_maxDepth = MAX_DEPTH;
_maxNodes = MAX_NODES;
+ _currentNode = 0;
+ _currentChildIndex = 0;
_currentMap = new Common::SortedArray<TreeNode *>(compareTreeNodes);
}
@@ -51,6 +55,8 @@ Tree::Tree(IContainedObject *contents, int maxDepth) {
pBaseNode->setContainedObject(contents);
_maxDepth = maxDepth;
_maxNodes = MAX_NODES;
+ _currentNode = 0;
+ _currentChildIndex = 0;
_currentMap = new Common::SortedArray<TreeNode *>(compareTreeNodes);
}
@@ -60,6 +66,8 @@ Tree::Tree(IContainedObject *contents, int maxDepth, int maxNodes) {
pBaseNode->setContainedObject(contents);
_maxDepth = maxDepth;
_maxNodes = maxNodes;
+ _currentNode = 0;
+ _currentChildIndex = 0;
_currentMap = new Common::SortedArray<TreeNode *>(compareTreeNodes);
}
@@ -81,6 +89,8 @@ Tree::Tree(const Tree *sourceTree) {
_maxDepth = sourceTree->getMaxDepth();
_maxNodes = sourceTree->getMaxNodes();
_currentMap = new Common::SortedArray<TreeNode *>(compareTreeNodes);
+ _currentNode = 0;
+ _currentChildIndex = 0;
duplicateTree(sourceTree->getBaseNode(), pBaseNode);
}
@@ -151,7 +161,7 @@ Node *Tree::aStarSearch() {
Node *Tree::aStarSearch_singlePassInit() {
Node *retNode = NULL;
- currentChildIndex = 1;
+ _currentChildIndex = 1;
float temp = pBaseNode->getContainedObject()->calcT();
@@ -164,18 +174,17 @@ Node *Tree::aStarSearch_singlePassInit() {
return retNode;
}
-Node *Tree::aStarSearch_singlePass(Node **currentNode) {
- currentNode = NULL;
- float currentT;
+Node *Tree::aStarSearch_singlePass() {
+ float currentT = 0.0;
Node *retNode = NULL;
static int maxTime = 0;
- if (currentChildIndex == 1) {
+ if (_currentChildIndex == 1) {
maxTime = getPlayerMaxTime();
}
- if (currentChildIndex) {
+ if (_currentChildIndex) {
if (!(_currentMap->size())) {
retNode = _currentNode;
return retNode;
@@ -187,13 +196,13 @@ Node *Tree::aStarSearch_singlePass(Node **currentNode) {
if ((_currentNode->getDepth() < _maxDepth) && (Node::getNodeCount() < _maxNodes) && ((!maxTime) || (getTimerValue(3) < maxTime))) {
// Generate nodes
- currentChildIndex = _currentNode->generateChildren();
+ _currentChildIndex = _currentNode->generateChildren();
- if (currentChildIndex) {
+ if (_currentChildIndex) {
Common::Array<Node *> vChildren = _currentNode->getChildren();
if (!vChildren.size() && !_currentMap->size()) {
- currentChildIndex = 0;
+ _currentChildIndex = 0;
retNode = _currentNode;
}