Files
FFCardGame/scripts/game/Enums.gd
2026-01-24 16:29:11 -05:00

142 lines
3.0 KiB
GDScript

class_name Enums
extends RefCounted
## Card Elements
enum Element {
FIRE,
ICE,
WIND,
LIGHTNING,
WATER,
EARTH,
LIGHT,
DARK
}
## Card Types
enum CardType {
FORWARD,
BACKUP,
SUMMON,
MONSTER
}
## Ability Types
enum AbilityType {
FIELD,
AUTO,
ACTION,
SPECIAL
}
## Game Phases
enum TurnPhase {
ACTIVE,
DRAW,
MAIN_1,
ATTACK,
MAIN_2,
END
}
## Attack Phase Steps
enum AttackStep {
PREPARATION,
DECLARATION,
BLOCK_DECLARATION,
DAMAGE_RESOLUTION
}
## Zone Types
enum ZoneType {
DECK,
HAND,
FIELD_FORWARDS,
FIELD_BACKUPS,
DAMAGE,
BREAK,
STACK,
REMOVED
}
## Card States
enum CardState {
ACTIVE,
DULL
}
## Helper functions for Element
static func element_from_string(s: String) -> Element:
match s.to_lower():
"fire": return Element.FIRE
"ice": return Element.ICE
"wind": return Element.WIND
"lightning": return Element.LIGHTNING
"water": return Element.WATER
"earth": return Element.EARTH
"light": return Element.LIGHT
"dark": return Element.DARK
push_error("Unknown element: " + s)
return Element.FIRE
static func element_to_string(e: Element) -> String:
match e:
Element.FIRE: return "Fire"
Element.ICE: return "Ice"
Element.WIND: return "Wind"
Element.LIGHTNING: return "Lightning"
Element.WATER: return "Water"
Element.EARTH: return "Earth"
Element.LIGHT: return "Light"
Element.DARK: return "Dark"
return "Unknown"
static func element_to_color(e: Element) -> Color:
match e:
Element.FIRE: return Color(0.9, 0.2, 0.2) # Red
Element.ICE: return Color(0.4, 0.8, 0.9) # Cyan
Element.WIND: return Color(0.3, 0.8, 0.3) # Green
Element.LIGHTNING: return Color(0.6, 0.3, 0.8) # Purple
Element.WATER: return Color(0.2, 0.4, 0.9) # Blue
Element.EARTH: return Color(0.8, 0.7, 0.3) # Yellow
Element.LIGHT: return Color(1.0, 1.0, 0.9) # White
Element.DARK: return Color(0.2, 0.1, 0.3) # Dark Purple
return Color.WHITE
## Helper functions for CardType
static func card_type_from_string(s: String) -> CardType:
match s.to_lower():
"forward": return CardType.FORWARD
"backup": return CardType.BACKUP
"summon": return CardType.SUMMON
"monster": return CardType.MONSTER
push_error("Unknown card type: " + s)
return CardType.FORWARD
static func card_type_to_string(t: CardType) -> String:
match t:
CardType.FORWARD: return "Forward"
CardType.BACKUP: return "Backup"
CardType.SUMMON: return "Summon"
CardType.MONSTER: return "Monster"
return "Unknown"
## Helper functions for TurnPhase
static func phase_to_string(p: TurnPhase) -> String:
match p:
TurnPhase.ACTIVE: return "Active Phase"
TurnPhase.DRAW: return "Draw Phase"
TurnPhase.MAIN_1: return "Main Phase 1"
TurnPhase.ATTACK: return "Attack Phase"
TurnPhase.MAIN_2: return "Main Phase 2"
TurnPhase.END: return "End Phase"
return "Unknown Phase"
## Check if element is Light or Dark (special rules apply)
static func is_light_or_dark(e: Element) -> bool:
return e == Element.LIGHT or e == Element.DARK
## Alias for element_to_color
static func get_element_color(e: Element) -> Color:
return element_to_color(e)