-
-
Save SamuXarick/8d52f07327ac1e80c2b699786fa3df53 to your computer and use it in GitHub Desktop.
Rail::_Cost
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function Rail::_Cost(path, new_node, self) | |
{ | |
/* path == null means this is the first node of a path, so the cost is 0. */ | |
if (path == null) return 0; | |
local new_tile; | |
local prev_tile; | |
local pprev_tile; | |
local ppprev_tile; | |
local costs = 0; | |
for (local j = 0; j < new_node.len(); j++) { | |
local num_tiles_new_node = new_node[j].len(); | |
new_tile = new_node[j][0][0]; | |
AILog.Info("new_tile = " + new_tile); | |
local prev_node = path.GetParent(); | |
local num_tiles_prev_node = prev_node[j].len(); | |
prev_tile = prev_node[j].top()[0]; | |
AILog.Info("prev_tile " + prev_tile); | |
num_tiles_prev_node--; | |
if (num_tiles_prev_node > 0) { | |
pprev_tile = prev_node[j][num_tiles_prev_node - 1][0]; | |
num_tiles_prev_node--; | |
if (num_tiles_prev_node > 0) { | |
ppprev_tile = prev_node[j][num_tiles_prev_node - 1][0]; | |
} else { | |
/* num_tiles_prev_node == 0 */ | |
local pprev_node = prev_node.GetParent(); | |
if (pprev_node != null) { | |
ppprev_tile = pprev_node[j].top()[0]; | |
} else { | |
ppprev_tile = 0; | |
} | |
} | |
} else { | |
/* num_tiles_prev_node == 0 */ | |
local pprev_node = prev_node.GetParent(); | |
if (pprev_node != null) { | |
pprev_tile = pprev_node[j].top()[0]; | |
local num_tiles_pprev_node = pprev_node[j].len(); | |
num_tiles_pprev_node--; | |
if (num_tiles_pprev_node > 0) { | |
ppprev_tile = pprev_node[j][num_tiles_pprev_node - 1][0]; | |
} else { | |
/* num_tiles_pprev_node == 0 */ | |
local ppprev_node = pprev_node.GetParent(); | |
if (ppprev_node != null) { | |
ppprev_tile = ppprev_node[j].len()[0]; | |
} else { | |
ppprev_tile = 0; | |
} | |
} | |
} else { | |
pprev_tile = 0; | |
ppprev_tile = 0; | |
} | |
} | |
for (local i = 0; i < new_node[j].len(); i++) { | |
costs += self._CostSingleTile(ppprev_tile, pprev_tile, prev_tile, new_tile, self); | |
ppprev_tile = pprev_tile; | |
pprev_tile = prev_tile; | |
prev_tile = new_tile; | |
new_tile = new_node[j][i][0]; | |
} | |
} | |
return path.GetCost() + costs; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment