diff options
| author | tpart <tpart120@proton.me> | 2024-08-15 23:22:02 +0200 | 
|---|---|---|
| committer | tpart <tpart120@proton.me> | 2024-08-15 23:22:02 +0200 | 
| commit | 82446e9f9b626f47e18b90e6841b1bec2b7800f6 (patch) | |
| tree | 8a13a6d4c78057737f61e505c6d106b30fa8247a | |
| parent | e0ce9534563de59c080b0bd4f014cccbf329fcad (diff) | |
| download | hurrycurry-82446e9f9b626f47e18b90e6841b1bec2b7800f6.tar hurrycurry-82446e9f9b626f47e18b90e6841b1bec2b7800f6.tar.bz2 hurrycurry-82446e9f9b626f47e18b90e6841b1bec2b7800f6.tar.zst  | |
Implement new message protocol in client
| -rw-r--r-- | client/game.gd | 12 | ||||
| -rw-r--r-- | client/menu/lobby.gd | 5 | ||||
| -rw-r--r-- | client/multiplayer.gd | 15 | ||||
| -rw-r--r-- | client/player/player.gd | 22 | 
4 files changed, 25 insertions, 29 deletions
diff --git a/client/game.gd b/client/game.gd index d7bb90a7..52beca7b 100644 --- a/client/game.gd +++ b/client/game.gd @@ -214,19 +214,19 @@ func _ready():  		p.finish(warn)  	) -	mp.text_message.connect(func(player: int, text: String, persist: bool): +	mp.text_message.connect(func(player: int, text: String, timeout_initial: float, timeout_remaining: float):  		var p: Player = players[player] -		p.text_message(text, persist) +		p.text_message(text, timeout_initial, timeout_remaining)  	) -	mp.item_message.connect(func(player: int, item: int, persist: bool): +	mp.item_message.connect(func(player: int, item: int, timeout_initial: float, timeout_remaining: float):  		var p: Player = players[player] -		p.item_message(item_names[item], persist) +		p.item_message(item_names[item], timeout_initial, timeout_remaining)  	) -	mp.effect_message.connect(func(player: int, effect: String, persist: bool): +	mp.effect_message.connect(func(player: int, effect: String, timeout_initial: float, timeout_remaining: float):  		var p: Player = players[player] -		p.effect_message(effect, persist) +		p.effect_message(effect, timeout_initial, timeout_remaining)  	)  	mp.clear_message.connect(func(player: int): diff --git a/client/menu/lobby.gd b/client/menu/lobby.gd index 5136798d..a419c636 100644 --- a/client/menu/lobby.gd +++ b/client/menu/lobby.gd @@ -99,6 +99,7 @@ func initialize():  		h.add_child(reset)  		h.add_child(add)  		add.pressed.connect(increase_bot_count.bind(algo_id)) +		reset.pressed.connect(reset_bot_count.bind(algo_id))  		remove.pressed.connect(decrease_bot_count.bind(algo_id))  		bot_settings.add_child(h) @@ -124,6 +125,10 @@ func decrease_bot_count(algo_id: String):  	bot_counts[algo_id] = new_count  	update_bot_reset_text(algo_id) +func reset_bot_count(algo_id: String): +	bot_counts[algo_id] = 0 +	update_bot_reset_text(algo_id) +  func update_bot_reset_text(algo_id: String):  	var display_name: String = bot_display_names[algo_id] if bot_display_names.has(algo_id) else algo_id  	bot_reset_buttons[algo_id].text = "%s (%d)" % [display_name, bot_counts[algo_id]] diff --git a/client/multiplayer.gd b/client/multiplayer.gd index e77b74c5..d5b13d20 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -30,9 +30,9 @@ signal data(  signal set_tile(tile: Vector2i, kind: int, neighbors: Array[String])  signal remove_tile(tile: Vector2i)  signal clear_message(player: int) -signal text_message(player: int, text: String, persist: bool) -signal item_message(player: int, item: int, persist: bool) -signal effect_message(player: int, effect: String, persist: bool) +signal text_message(player: int, text: String, timeout_initial: float, timeout_remaining: float) +signal item_message(player: int, item: int, timeout_initial: float, timeout_remaining: float) +signal effect_message(player: int, effect: String, timeout_initial: float, timeout_remaining: float)  signal add_player(player: int, name: String, pos: Vector2, character: int)  signal remove_player(player: int)  signal movement(player: int, position: Vector2, rotation: float, boost: bool, direction: Vector2) @@ -227,17 +227,18 @@ func handle_packet(bytes: PackedByteArray):  		"communicate":  			var player: int = decoded["player"]  			var message = decoded.get("message") -			var persist: bool = decoded["persist"] +			var timeout_initial: float = decoded["timeout"]["initial"] if decoded["timeout"] != null else 5. +			var timeout_remaining: float = decoded["timeout"]["remaining"] if decoded["timeout"] != null else 5.  			if message != null:  				var item = message.get("item")  				var text = message.get("text")  				var effect = message.get("effect")  				if item != null: -					item_message.emit(player, item, persist) +					item_message.emit(player, item, timeout_initial, timeout_remaining)  				elif text != null: -					text_message.emit(player, text, persist) +					text_message.emit(player, text, timeout_initial, timeout_remaining)  				elif effect != null: -					effect_message.emit(player, effect, persist) +					effect_message.emit(player, effect, timeout_initial, timeout_remaining)  				else:  					push_error("neither text, item nor effect provided")  			else: diff --git a/client/player/player.gd b/client/player/player.gd index 0e06d521..0a4d24db 100644 --- a/client/player/player.gd +++ b/client/player/player.gd @@ -66,7 +66,6 @@ func _init(_id: int, new_name: String, pos: Vector2, new_character_idx: int, new  	movement_base.add_child(effect)  	clear_timer.one_shot = true -	clear_timer.wait_time = 5.  	add_child(clear_timer)  	marker.visible = false  	add_child(marker) @@ -151,23 +150,14 @@ func clear_message():  	chat_bubble.remove_text()  	effect.clear_effect() -func item_message(item_name: String, persist: bool): +func item_message(item_name: String, timeout_initial: float, timeout_remaining: float):  	item_bubble.set_item(item_name) -	if persist: -		clear_timer.stop() -	else: -		clear_timer.start() +	clear_timer.start(timeout_remaining) -func text_message(m: String, persist: bool): +func text_message(m: String, timeout_initial: float, timeout_remaining: float):  	chat_bubble.set_text(m) -	if persist: -		clear_timer.stop() -	else: -		clear_timer.start() +	clear_timer.start(timeout_remaining) -func effect_message(effect_name: String, persist: bool): +func effect_message(effect_name: String, timeout_initial: float, timeout_remaining: float):  	effect.set_effect(effect_name) -	if persist: -		clear_timer.stop() -	else: -		clear_timer.start() +	clear_timer.start(timeout_remaining)  |