49 lines
1.2 KiB
GDScript
49 lines
1.2 KiB
GDScript
extends Channel
|
|
|
|
signal on_match_update(msg: TowerPlacedMessage)
|
|
signal on_invalid_placing(msg: InvalidPlacementMessage)
|
|
signal on_money_update(msg: PlayerMoneyMessage)
|
|
signal on_hitpoints_update(msg: PlayerHitpointsMessage)
|
|
|
|
|
|
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():
|
|
var msg: Message = (
|
|
Message
|
|
. deserialize(
|
|
self.socket.get_packet().get_string_from_utf8(),
|
|
[
|
|
TowerPlacedMessage,
|
|
InvalidPlacementMessage,
|
|
PlayerMoneyMessage,
|
|
PlayerHitpointsMessage,
|
|
],
|
|
)
|
|
)
|
|
match msg.get_message_id():
|
|
TowerPlacedMessage.MESSAGE_ID:
|
|
on_match_update.emit(msg)
|
|
InvalidPlacementMessage.MESSAGE_ID:
|
|
on_invalid_placing.emit(msg)
|
|
PlayerMoneyMessage.MESSAGE_ID:
|
|
on_money_update.emit(msg)
|
|
PlayerHitpointsMessage.MESSAGE_ID:
|
|
on_hitpoints_update.emit(msg)
|
|
_:
|
|
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))
|