142 lines
3.0 KiB
GDScript
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)
|