Files
tekton/scripts/managers/notification_manager.gd

58 lines
1.7 KiB
GDScript

class_name NotificationManager
extends RefCounted
# Centralized usage of display_message RPC
# Ensures consistent message types and easy refactoring
enum MessageType {
NORMAL = 0,
POWERUP = 1,
GOAL = 2,
CYCLE = 3,
WARNING = 4
}
const MESSAGES = {
# Turn / Game Flow
"TURN_START": "It's your turn!",
"GOAL_COMPLETED": "Goal completed!",
# Attack / Damage
"CRUSHED": "C R U S H E D !",
"CRITICALLY_HIT": "CRITICALLY HIT!",
"DROPPED_ITEM": "Dropped item!",
"CANT_TARGET_SELF": "Can't target self!",
# Special Effects (Format strings)
"BURNED_BY": "Burned by %s!",
"TILES_SPAWNED": "Tiles Spawned!",
"FROZEN_BY": "Frozen by %s!",
"FLOOR_BLOCKED": "Floor Blocked!",
"INVISIBLE": "Invisible!",
"INVISIBILITY_ENDED": "Invisibility Ended!", # Changed slightly to be consistent if needed, or keep original
"SHIELD_BLOCKED": "Shield blocked an attack!",
"UNFROZEN": "Unfrozen!",
# Powerups
"ATTACK_MODE_READY": "ATTACK MODE READY!",
"USED_SPECIAL_POWER": "Used a special power!"
}
static func send_message(target: Node, message: String, _type: int = MessageType.NORMAL):
if is_instance_valid(target) and target.has_method("rpc"):
# Check if the text is empty, do nothing
if message.is_empty():
return
# Call the RPC on the target (usually a Player node)
# "any_peer" allows any client to send this message to the target
# COMMENTED OUT PER USER REQUEST (Hide MessageBar/Notifications)
# target.rpc("display_message", message, type)
pass
# Helper for broadcasting to all players (if needed in future)
static func broadcast_to_all(tree: SceneTree, message: String, type: int = MessageType.NORMAL):
var players = tree.get_nodes_in_group("Players")
for player in players:
send_message(player, message, type)