Attempt to using Nakama as replacement of Low-Level ENet
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
extends Node
|
||||
|
||||
# UIManager - Handles all UI setup and updates
|
||||
|
||||
const item_tex = [
|
||||
preload("res://assets/textures/player_board_and_blue_print/tile_null.tres"),
|
||||
preload("res://assets/textures/player_board_and_blue_print/tile_heart.tres"),
|
||||
preload("res://assets/textures/player_board_and_blue_print/tile_diamond.tres"),
|
||||
preload("res://assets/textures/player_board_and_blue_print/tile_star.tres"),
|
||||
preload("res://assets/textures/player_board_and_blue_print/tile_coin.tres")
|
||||
]
|
||||
|
||||
# Node references - will be set by Main
|
||||
var action_menu
|
||||
var move_button
|
||||
var grab_button
|
||||
var put_button
|
||||
var randomize_button
|
||||
var arrange_button
|
||||
var playerboard_ui
|
||||
|
||||
var local_player_character
|
||||
|
||||
enum ActionState {
|
||||
NONE,
|
||||
MOVING,
|
||||
GRABBING,
|
||||
PUTTING,
|
||||
RANDOMIZING,
|
||||
ARRANGING,
|
||||
PLACING_OBSTACLE
|
||||
}
|
||||
|
||||
var current_action_state = ActionState.NONE
|
||||
|
||||
func initialize(main_node):
|
||||
# Get node references from main scene
|
||||
action_menu = main_node.get_node("ActionMenu")
|
||||
move_button = main_node.get_node("ActionMenu/ActionButtonContainer/MoveButton")
|
||||
grab_button = main_node.get_node("ActionMenu/ActionButtonContainer/GrabButton")
|
||||
put_button = main_node.get_node("ActionMenu/ActionButtonContainer/PutButton")
|
||||
randomize_button = main_node.get_node("ActionMenu/ActionButtonContainer/RandomizeButton")
|
||||
arrange_button = main_node.get_node("ActionMenu/ActionButtonContainer/ArrangeButton")
|
||||
playerboard_ui = main_node.get_node("PlayerboardUI")
|
||||
|
||||
func setup_action_buttons(action_state_callback):
|
||||
move_button.pressed.connect(func(): action_state_callback.call(ActionState.MOVING))
|
||||
grab_button.pressed.connect(func(): action_state_callback.call(ActionState.GRABBING))
|
||||
put_button.pressed.connect(func():
|
||||
if local_player_character:
|
||||
local_player_character.auto_put_item()
|
||||
)
|
||||
randomize_button.pressed.connect(func(): action_state_callback.call(ActionState.RANDOMIZING))
|
||||
arrange_button.pressed.connect(func():
|
||||
if local_player_character and local_player_character.action_points >= 2:
|
||||
action_state_callback.call(ActionState.ARRANGING)
|
||||
)
|
||||
|
||||
func setup_playerboard_ui():
|
||||
for child in playerboard_ui.get_children():
|
||||
child.queue_free()
|
||||
|
||||
playerboard_ui.columns = 5
|
||||
|
||||
for i in range(25):
|
||||
var slot = TextureRect.new()
|
||||
|
||||
var highlight_rect = TextureRect.new()
|
||||
var hr_tex = load("res://assets/models/pboard/HighlightRect.tres")
|
||||
|
||||
var select_rect = TextureRect.new()
|
||||
var sr_tex = load("res://assets/models/pboard/SelectRect.tres")
|
||||
|
||||
var adjacent_rect = TextureRect.new()
|
||||
var ar_tex = load("res://assets/models/pboard/AdjacentRect.tres")
|
||||
|
||||
slot.custom_minimum_size = Vector2(36, 36)
|
||||
slot.texture = item_tex[0]
|
||||
playerboard_ui.add_child(slot, true)
|
||||
|
||||
highlight_rect.texture = hr_tex
|
||||
highlight_rect.size = Vector2(36, 36)
|
||||
select_rect.texture = sr_tex
|
||||
select_rect.size = Vector2(36, 36)
|
||||
adjacent_rect.texture = ar_tex
|
||||
adjacent_rect.size = Vector2(36, 36)
|
||||
|
||||
slot.add_child(highlight_rect)
|
||||
slot.add_child(select_rect)
|
||||
slot.add_child(adjacent_rect)
|
||||
|
||||
slot.get_child(0).hide()
|
||||
slot.get_child(1).hide()
|
||||
slot.get_child(2).hide()
|
||||
|
||||
func update_playerboard_ui():
|
||||
if not local_player_character:
|
||||
return
|
||||
|
||||
for i in range(25):
|
||||
var slot = playerboard_ui.get_child(i)
|
||||
var item = local_player_character.playerboard[i]
|
||||
|
||||
slot.texture = item_tex[0]
|
||||
|
||||
match item:
|
||||
7: slot.texture = item_tex[1]
|
||||
8: slot.texture = item_tex[2]
|
||||
9: slot.texture = item_tex[3]
|
||||
10: slot.texture = item_tex[4]
|
||||
|
||||
func update_button_states():
|
||||
if not local_player_character or local_player_character.is_in_group("Bots"):
|
||||
move_button.visible = false
|
||||
grab_button.visible = false
|
||||
put_button.visible = false
|
||||
randomize_button.visible = false
|
||||
arrange_button.visible = false
|
||||
return
|
||||
|
||||
move_button.visible = true
|
||||
grab_button.visible = true
|
||||
put_button.visible = true
|
||||
randomize_button.visible = true
|
||||
arrange_button.visible = true
|
||||
|
||||
move_button.disabled = false
|
||||
grab_button.disabled = false
|
||||
put_button.disabled = false
|
||||
arrange_button.disabled = false
|
||||
|
||||
func set_local_player(player):
|
||||
local_player_character = player
|
||||
Reference in New Issue
Block a user