mirror of
https://codeberg.org/ProgramSnail/konkr_game_3d.git
synced 2025-12-26 08:18:44 +00:00
init
This commit is contained in:
commit
5408d75267
2834 changed files with 377523 additions and 0 deletions
54
scripts/PlayerActions.gd
Normal file
54
scripts/PlayerActions.gd
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
extends Spatial
|
||||
|
||||
onready var map = get_node("/root/Level/Map")
|
||||
onready var characters = get_node("/root/Level/Map/Characters")
|
||||
onready var money = get_node("/root/Level/Map/Money")
|
||||
onready var utils = get_node("/root/Level/Map/Utils")
|
||||
|
||||
func make_turn(position : Vector3):
|
||||
if map.is_connected_to_house(position, map.current_player_tile()):
|
||||
var mouse_position_character_and_player_ids = characters.find_character_and_player_ids_on(position)
|
||||
if map.get_tile_cell(position) == map.current_player_tile() and \
|
||||
mouse_position_character_and_player_ids != null and \
|
||||
mouse_position_character_and_player_ids[0] == characters.current_player and \
|
||||
not characters.is_current_player_character_used(mouse_position_character_and_player_ids[1]):
|
||||
characters.switch_character_to(mouse_position_character_and_player_ids[0],
|
||||
mouse_position_character_and_player_ids[1])
|
||||
elif characters.is_current_character_exist():
|
||||
map.move_to_tile(position)
|
||||
|
||||
func upgrade_character_on_position(position : Vector3):
|
||||
var character_on_position = characters.find_character_on(position)
|
||||
if character_on_position != null and \
|
||||
map.get_tile_cell(position) == map.current_player_tile() and \
|
||||
money.count_connected_money(position, map.current_player_tile()) \
|
||||
>= money.CHARACTER_UPGRADE_COSTS[character_on_position.level] and \
|
||||
character_on_position.upgrade():
|
||||
money.spend_connected_money(position, map.current_player_tile(), money.CHARACTER_COST)
|
||||
|
||||
func try_spawn_character(position : Vector3):
|
||||
if map.get_tile_cell(position) == map.current_player_tile() and \
|
||||
map.get_building_cell(position) == GridMap.INVALID_CELL_ITEM and \
|
||||
map.is_connected_to_house(position, map.current_player_tile()) and \
|
||||
characters.find_character_and_player_ids_on(position) == null and \
|
||||
money.count_connected_money(position, map.current_player_tile()) >= money.CHARACTER_COST:
|
||||
|
||||
money.spend_connected_money(position, map.current_player_tile(), money.CHARACTER_COST)
|
||||
|
||||
characters.spawn_current_player_character(position)
|
||||
|
||||
if characters.current_character + 1 == characters.current_player_characters_count():
|
||||
characters.current_character_obj().active = true
|
||||
|
||||
func _physics_process(_delta):
|
||||
if Input.is_action_just_released("turn"):
|
||||
make_turn(utils.world_to_grid_position(utils.mouse_position()))
|
||||
|
||||
if Input.is_action_just_released("upgrade"):
|
||||
upgrade_character_on_position(utils.world_to_grid_position(utils.mouse_position()))
|
||||
|
||||
if Input.is_action_just_released("pass"):
|
||||
characters.set_next_player()
|
||||
|
||||
if Input.is_action_just_released("spawn"):
|
||||
try_spawn_character(utils.world_to_grid_position(utils.mouse_position()))
|
||||
Loading…
Add table
Add a link
Reference in a new issue