This commit is contained in:
ProgramSnail 2023-08-10 12:18:17 +03:00
parent 5408d75267
commit a795665b54
7 changed files with 462 additions and 366 deletions

View file

@ -28,7 +28,9 @@ func pay_tower_salaries(player : int):
func pay_character_salaries(player : int):
var alive_characters = []
var new_rogues_positions = []
# find new rogue characters (not fully paid characters)
for character in characters.player_characters[player]:
var character_position = utils.world_to_grid_position(character.translation)
if spend_connected_money(character_position, map.player_tiles[player], CHARACTER_SALARIES[character.level]):
@ -36,6 +38,22 @@ func pay_character_salaries(player : int):
else:
character.became_rogue()
characters.rogue_characters.append(character)
new_rogues_positions.append(character_position)
characters.player_characters[player] = alive_characters
# better solution ??
# find characters, connected to new rogues (not fully paid characters)
alive_characters = []
for character in characters.player_characters[player]:
var character_position = utils.world_to_grid_position(character.translation)
if map.is_tile_connected_to_tiles(character_position,
new_rogues_positions,
map.player_tiles[player]):
character.became_rogue()
characters.rogue_characters.append(character)
else:
alive_characters.append(character)
characters.player_characters[player] = alive_characters
@ -85,6 +103,28 @@ func spend_connected_money(starting_position : Vector3, tile_cell : int, money_t
to_visit.append(current_position + direction)
return money_to_spend <= 0
func add_money_to_nearest_other_house(starting_position : Vector3, tile_cell : int, money_added : int):
if money_added <= 0:
return
var visited = {}
var to_visit = [starting_position]
visited[utils.position_to_string(starting_position)] = null
for current_position in to_visit:
for direction in map.directions:
var new_position = current_position + direction
if map.get_tile_cell(new_position) == tile_cell and \
not visited.has(utils.position_to_string(new_position)):
visited[utils.position_to_string(new_position)] = null
to_visit.append(new_position)
if map.HOUSE_CELLS.has(map.get_building_cell(new_position)):
houses_money[utils.position_to_string(new_position)] += money_added
update_house_info(new_position)
return
func update_house_info(position : Vector3):
var position_string = utils.position_to_string(position)