Client/scripts/channel/match/match_channel.gd

50 lines
1.2 KiB
GDScript3
Raw Normal View History

2025-03-05 11:35:40 +01:00
extends Channel
2025-03-10 13:25:09 +01:00
signal on_match_update(msg: TowerPlacedMessage)
signal on_invalid_placing(msg: InvalidPlacementMessage)
2025-03-13 13:21:53 +01:00
signal on_money_update(msg: PlayerMoneyMessage)
signal on_hitpoints_update(msg: PlayerHitpointsMessage)
2025-03-05 11:35:40 +01:00
func get_channel_location() -> String:
return "match"
func _process(_delta: float) -> void:
self.socket.poll()
if self.socket.get_ready_state() != WebSocketPeer.STATE_OPEN:
return
while self.socket.get_available_packet_count():
2025-03-10 13:25:09 +01:00
var msg: Message = (
Message
2025-03-10 13:25:09 +01:00
. deserialize(
self.socket.get_packet().get_string_from_utf8(),
2025-03-13 13:21:53 +01:00
[
TowerPlacedMessage,
InvalidPlacementMessage,
PlayerMoneyMessage,
PlayerHitpointsMessage,
],
2025-03-10 13:25:09 +01:00
)
2025-03-05 11:35:40 +01:00
)
2025-03-10 13:25:09 +01:00
match msg.get_message_id():
TowerPlacedMessage.MESSAGE_ID:
on_match_update.emit(msg)
InvalidPlacementMessage.MESSAGE_ID:
on_invalid_placing.emit(msg)
2025-03-13 13:21:53 +01:00
PlayerMoneyMessage.MESSAGE_ID:
on_money_update.emit(msg)
PlayerHitpointsMessage.MESSAGE_ID:
on_hitpoints_update.emit(msg)
2025-03-10 13:25:09 +01:00
_:
continue
func send_request_place(x: int, y: int) -> void:
if self.socket.get_ready_state() != WebSocketPeer.STATE_OPEN:
return
var msg := RequestTowerPlacingMessage.new()
msg.x = x
msg.y = y
self.socket.send_text(Message.serialize(msg))