integrated map with board, deck manager and shop
This commit is contained in:
parent
dfcd0dcc63
commit
be9a84d8bd
9 changed files with 168 additions and 31 deletions
|
|
@ -112,6 +112,12 @@ func playEffect(card: Card, target_piece: Pawn, board_flow = null, game_state =
|
||||||
# print("Failed Play Card 2")
|
# print("Failed Play Card 2")
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
func cleanup():
|
||||||
|
if hand.size() > 0:
|
||||||
|
for card in hand:
|
||||||
|
deck.push_back(card)
|
||||||
|
hand.clear()
|
||||||
|
|
||||||
func updateEffectDurations():
|
func updateEffectDurations():
|
||||||
var expired_entries = [] # Store [piece_id, card_id] pairs to remove
|
var expired_entries = [] # Store [piece_id, card_id] pairs to remove
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ const StockfishController = preload("res://Systems/FairyStockfish/StockfishClien
|
||||||
# Signals
|
# Signals
|
||||||
signal tile_pressed(location: String)
|
signal tile_pressed(location: String)
|
||||||
signal send_location(location: String)
|
signal send_location(location: String)
|
||||||
|
signal map_open_requested(options)
|
||||||
signal turn_changed
|
signal turn_changed
|
||||||
signal game_initialized
|
signal game_initialized
|
||||||
|
|
||||||
|
|
@ -55,6 +56,7 @@ var is_initialized: bool = false
|
||||||
@onready var boardContainer: FlowContainer = $Flow
|
@onready var boardContainer: FlowContainer = $Flow
|
||||||
@onready var stateMachine: StateMachine = $StateMachine
|
@onready var stateMachine: StateMachine = $StateMachine
|
||||||
@onready var menuContainer = get_node_or_null("/root/Board/MenuContainer")
|
@onready var menuContainer = get_node_or_null("/root/Board/MenuContainer")
|
||||||
|
@onready var mapContainer = get_node_or_null("/root/Board/MapScreen")
|
||||||
|
|
||||||
|
|
||||||
# Export parameters
|
# Export parameters
|
||||||
|
|
@ -99,8 +101,18 @@ func _ready() -> void:
|
||||||
func _on_new_game_requested(options = {}):
|
func _on_new_game_requested(options = {}):
|
||||||
print("ChessGame received new_game_requested signal ", is_initialized)
|
print("ChessGame received new_game_requested signal ", is_initialized)
|
||||||
turnIndicator.visible = true
|
turnIndicator.visible = true
|
||||||
|
if options and "fen" in options:
|
||||||
|
currentFen = options.fen
|
||||||
|
if cameraController:
|
||||||
|
cameraController.reset_view()
|
||||||
if is_initialized:
|
if is_initialized:
|
||||||
resetBoard()
|
resetBoard()
|
||||||
|
initializeDeckSystem()
|
||||||
|
if cardDisplay:
|
||||||
|
cardDisplay.visible = true
|
||||||
|
if stateMachine:
|
||||||
|
stateMachine.start()
|
||||||
|
stateMachine.transitionToNextState(Constants.WHITE_TURN)
|
||||||
else:
|
else:
|
||||||
initialize_game_system()
|
initialize_game_system()
|
||||||
|
|
||||||
|
|
@ -156,13 +168,13 @@ func initializeTiles() -> void:
|
||||||
|
|
||||||
|
|
||||||
func initializeBoard() -> void:
|
func initializeBoard() -> void:
|
||||||
# Parse FEN to get board dimensions
|
# Parse FEN
|
||||||
var fen_parts = FEN.split(" ")
|
var fen_parts = currentFen.split(" ")
|
||||||
var rows = fen_parts[0].split("/")
|
var rows = fen_parts[0].split("/")
|
||||||
boardYSize = rows.size()
|
boardYSize = rows.size()
|
||||||
boardXSize = 0
|
boardXSize = 0
|
||||||
|
|
||||||
# Calculate width from first row by counting both pieces and numbers
|
# Calculate width from first row by counting both pieces numbers and tiles
|
||||||
for c in rows[0]:
|
for c in rows[0]:
|
||||||
if c.is_valid_int():
|
if c.is_valid_int():
|
||||||
boardXSize += int(c) # Add the number of empty squares
|
boardXSize += int(c) # Add the number of empty squares
|
||||||
|
|
@ -211,7 +223,6 @@ func initializeDeckSystem() -> void:
|
||||||
deckManager.connect("hand_updated", func(hand): cardDisplay.update_hand(hand))
|
deckManager.connect("hand_updated", func(hand): cardDisplay.update_hand(hand))
|
||||||
|
|
||||||
func setupCameraController() -> void:
|
func setupCameraController() -> void:
|
||||||
# Set up the camera controller for board navigation
|
|
||||||
cameraController = CameraController.new(boardContainer)
|
cameraController = CameraController.new(boardContainer)
|
||||||
cameraController.name = "CameraController"
|
cameraController.name = "CameraController"
|
||||||
add_child(cameraController)
|
add_child(cameraController)
|
||||||
|
|
@ -287,9 +298,10 @@ func createBoard() -> void:
|
||||||
print("CREATING BOARD X " + str(boardXSize) + " Y " + str(boardYSize))
|
print("CREATING BOARD X " + str(boardXSize) + " Y " + str(boardYSize))
|
||||||
while numberY != boardYSize:
|
while numberY != boardYSize:
|
||||||
boardContainer.size.y += tileYSize + 5
|
boardContainer.size.y += tileYSize + 5
|
||||||
boardContainer.size.x += tileXSize + 5
|
|
||||||
|
|
||||||
while numberX != boardXSize:
|
while numberX != boardXSize:
|
||||||
|
if numberY == 0:
|
||||||
|
boardContainer.size.x += tileXSize + 5
|
||||||
createTile(numberX, numberY, isWhite)
|
createTile(numberX, numberY, isWhite)
|
||||||
isWhite = !isWhite
|
isWhite = !isWhite
|
||||||
numberX += 1
|
numberX += 1
|
||||||
|
|
@ -302,8 +314,13 @@ func createTile(x: int, y: int, isWhite: bool) -> void:
|
||||||
# Create a single tile for the chess board
|
# Create a single tile for the chess board
|
||||||
var tile = PieceContainer.new(str(x) + "-" + str(y))
|
var tile = PieceContainer.new(str(x) + "-" + str(y))
|
||||||
tile.set_custom_minimum_size(Vector2(tileXSize, tileYSize))
|
tile.set_custom_minimum_size(Vector2(tileXSize, tileYSize))
|
||||||
|
# if x == 0:
|
||||||
|
# var style = StyleBoxFlat.new()
|
||||||
|
# style.bg_color = Utils.GREEN_CELL
|
||||||
|
# tile.add_theme_stylebox_override("normal", style )
|
||||||
|
# else:
|
||||||
tile.add_theme_stylebox_override("normal", lightStyle if isWhite else darkStyle)
|
tile.add_theme_stylebox_override("normal", lightStyle if isWhite else darkStyle)
|
||||||
print(" Create Tile " + str(x) + "-" + str(y) )
|
# print(" Create Tile " + str(x) + "-" + str(y) )
|
||||||
tile.set_name(str(x) + "-" + str(y))
|
tile.set_name(str(x) + "-" + str(y))
|
||||||
# tile.pressed.connect(func(): handleTileSelection(tile.name))
|
# tile.pressed.connect(func(): handleTileSelection(tile.name))
|
||||||
tile.pressed.connect(func():
|
tile.pressed.connect(func():
|
||||||
|
|
@ -315,7 +332,7 @@ func createTile(x: int, y: int, isWhite: bool) -> void:
|
||||||
|
|
||||||
func setupPiecesFromFEN() -> void:
|
func setupPiecesFromFEN() -> void:
|
||||||
# Set up chess pieces from the FEN string
|
# Set up chess pieces from the FEN string
|
||||||
var fen_parts = FEN.split(" ")
|
var fen_parts = currentFen.split(" ")
|
||||||
var rows = fen_parts[0].split("/")
|
var rows = fen_parts[0].split("/")
|
||||||
|
|
||||||
# Iterate through rows in reverse to place black pieces at top
|
# Iterate through rows in reverse to place black pieces at top
|
||||||
|
|
@ -335,7 +352,7 @@ func setupPiecesFromFEN() -> void:
|
||||||
|
|
||||||
func setupTilesFromFEN() -> void:
|
func setupTilesFromFEN() -> void:
|
||||||
# Set up special tiles from the FEN string
|
# Set up special tiles from the FEN string
|
||||||
var fen_parts = FEN.split(" ")
|
var fen_parts = currentFen.split(" ")
|
||||||
var rows = fen_parts[0].split("/")
|
var rows = fen_parts[0].split("/")
|
||||||
var matchedPortals = {}
|
var matchedPortals = {}
|
||||||
var portalCnt = 0;
|
var portalCnt = 0;
|
||||||
|
|
@ -369,7 +386,7 @@ func setupTilesFromFEN() -> void:
|
||||||
x += 1
|
x += 1
|
||||||
|
|
||||||
func placePiece(position: String, pieceName: String, color: int) -> void:
|
func placePiece(position: String, pieceName: String, color: int) -> void:
|
||||||
print("Placing Piece")
|
# print("Placing Piece ", position)
|
||||||
var piece = summonPiece(pieceName, color)
|
var piece = summonPiece(pieceName, color)
|
||||||
var container = boardContainer.get_node(position) as PieceContainer
|
var container = boardContainer.get_node(position) as PieceContainer
|
||||||
await container.set_piece(piece, false)
|
await container.set_piece(piece, false)
|
||||||
|
|
@ -491,6 +508,13 @@ func evaluatePosition() -> Dictionary:
|
||||||
func isCheckmate() -> bool:
|
func isCheckmate() -> bool:
|
||||||
return gamecheckMate
|
return gamecheckMate
|
||||||
|
|
||||||
|
func endRound() -> void:
|
||||||
|
print("****************ENDROUND*************")
|
||||||
|
deckManager.cleanup()
|
||||||
|
cardDisplay.visible = false
|
||||||
|
mapContainer.visible = true
|
||||||
|
resetBoard()
|
||||||
|
|
||||||
func isDraw() -> bool:
|
func isDraw() -> bool:
|
||||||
return gamedraw
|
return gamedraw
|
||||||
|
|
||||||
|
|
@ -516,13 +540,7 @@ func executeMove(targetLocation: String) -> void:
|
||||||
# Handle capture if there's a piece in target location
|
# Handle capture if there's a piece in target location
|
||||||
if targetContainer.has_piece():
|
if targetContainer.has_piece():
|
||||||
var capturedPiece = targetContainer.get_piece()
|
var capturedPiece = targetContainer.get_piece()
|
||||||
if Turn == 0:
|
updatePointsAndCapture(capturedPiece, true)
|
||||||
p1Points += capturedPiece.Points
|
|
||||||
p1String.text = str(p1Points)
|
|
||||||
else:
|
|
||||||
p2Points += capturedPiece.Points
|
|
||||||
p2String.text = str(p2Points)
|
|
||||||
targetContainer.remove_piece() # This handles freeing the captured piece
|
|
||||||
|
|
||||||
# Move piece to new location
|
# Move piece to new location
|
||||||
sourceContainer.remove_piece(true)
|
sourceContainer.remove_piece(true)
|
||||||
|
|
@ -661,6 +679,8 @@ func isNull(location: String) -> bool:
|
||||||
func updatePointsAndCapture(capturedPiece: Pawn, animate: bool = true) -> void:
|
func updatePointsAndCapture(capturedPiece: Pawn, animate: bool = true) -> void:
|
||||||
# Update points and handle piece capture
|
# Update points and handle piece capture
|
||||||
if Turn == 0:
|
if Turn == 0:
|
||||||
|
|
||||||
|
gold += capturedPiece.Points;
|
||||||
p1Points += capturedPiece.Points
|
p1Points += capturedPiece.Points
|
||||||
p1String.text = str(p1Points)
|
p1String.text = str(p1Points)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ func _ready():
|
||||||
if backButton:
|
if backButton:
|
||||||
backButton.connect("pressed", Callable(self, "_on_back_button_pressed"))
|
backButton.connect("pressed", Callable(self, "_on_back_button_pressed"))
|
||||||
|
|
||||||
|
connect("map_open_requested", Callable(self, "_on_map_button_pressed"))
|
||||||
|
|
||||||
|
|
||||||
func setup(menu_container):
|
func setup(menu_container):
|
||||||
main_menu_container = menu_container
|
main_menu_container = menu_container
|
||||||
|
|
|
||||||
|
|
@ -246,13 +246,13 @@ func generate_node_data(node):
|
||||||
Utils.RoomType.NORMAL:
|
Utils.RoomType.NORMAL:
|
||||||
data.metadata = generate_chess_data(data)
|
data.metadata = generate_chess_data(data)
|
||||||
Utils.RoomType.BOSS:
|
Utils.RoomType.BOSS:
|
||||||
data.metadata = {}
|
data.metadata = generate_chess_data(data)
|
||||||
Utils.RoomType.FINAL:
|
Utils.RoomType.FINAL:
|
||||||
data.metadata = { "is_escape": true}
|
data.metadata = { "is_escape": true}
|
||||||
Utils.RoomType.SHOP:
|
Utils.RoomType.SHOP:
|
||||||
data.metadata = generate_shop_data(data)
|
data.metadata = generate_shop_data(data)
|
||||||
Utils.RoomType.EVENT:
|
Utils.RoomType.EVENT:
|
||||||
data.metadata = {}
|
data.metadata = generate_event_data(data)
|
||||||
_:
|
_:
|
||||||
data.metadata = {}
|
data.metadata = {}
|
||||||
return data
|
return data
|
||||||
|
|
@ -297,10 +297,20 @@ func generate_starting_data(node):
|
||||||
"elo": node.elo,
|
"elo": node.elo,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generate_event_data(node):
|
||||||
|
return {
|
||||||
|
"is_escape": node.metadata.is_escape if node.metadata.has("is_escape") else false,
|
||||||
|
"fen": "8/4p3/8/8/8/8 w KQkq - 0 1",
|
||||||
|
"game_type": "maze",
|
||||||
|
"win_condition": Utils.WinCondition.Tile,
|
||||||
|
"elo": node.elo,
|
||||||
|
}
|
||||||
|
# "rnbqkbnr1/pppppppp1/9/9/9/9/9/PPPPPPPP1/RNBQKBNR1 w KQkq - 0 1"
|
||||||
func generate_chess_data(node):
|
func generate_chess_data(node):
|
||||||
return {
|
return {
|
||||||
"is_escape": node.metadata.is_escape if node.metadata.has("is_escape") else false,
|
"is_escape": node.metadata.is_escape if node.metadata.has("is_escape") else false,
|
||||||
"fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
|
"fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
|
||||||
|
"game_type": "chess",
|
||||||
|
"win_condition": Utils.WinCondition.King,
|
||||||
"elo": node.elo,
|
"elo": node.elo,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@ extends Control
|
||||||
class_name MapScreen
|
class_name MapScreen
|
||||||
|
|
||||||
signal back_pressed
|
signal back_pressed
|
||||||
|
signal deckmanager_open_requested(options)
|
||||||
signal node_selected(node_data)
|
signal node_selected(node_data)
|
||||||
|
signal map_visibility_changed(is_visible)
|
||||||
const MapGenerator = preload("res://Systems/Game/Map/MapGenerator.gd")
|
const MapGenerator = preload("res://Systems/Game/Map/MapGenerator.gd")
|
||||||
# Room type constants
|
# Room type constants
|
||||||
|
|
||||||
|
|
@ -54,13 +55,17 @@ var selected_node_panel: NodePopup = null
|
||||||
|
|
||||||
@onready var map_container = $MapScrollContainer/MapContainer
|
@onready var map_container = $MapScrollContainer/MapContainer
|
||||||
@onready var back_button = $BackButton
|
@onready var back_button = $BackButton
|
||||||
|
@onready var deck_manager_button = $DeckManagerButton
|
||||||
@onready var title_label = $TitleLabel
|
@onready var title_label = $TitleLabel
|
||||||
@onready var legend_container = $LegendContainer
|
@onready var legend_container = $LegendContainer
|
||||||
|
@onready var gold_label = $GoldLabel
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
# Connect back button
|
# Connect back button
|
||||||
if back_button:
|
if back_button:
|
||||||
back_button.connect("pressed", Callable(self, "_on_back_button_pressed"))
|
back_button.connect("pressed", Callable(self, "_on_back_button_pressed"))
|
||||||
|
if deck_manager_button:
|
||||||
|
deck_manager_button.connect("pressed", Callable(self, "_on_deck_button_pressed"))
|
||||||
|
|
||||||
# Create legend
|
# Create legend
|
||||||
create_legend()
|
create_legend()
|
||||||
|
|
@ -388,6 +393,10 @@ func _on_back_button_pressed():
|
||||||
visible = false
|
visible = false
|
||||||
|
|
||||||
|
|
||||||
|
func _on_deck_button_pressed():
|
||||||
|
emit_signal("deckmanager_open_requested", {})
|
||||||
|
visible = false
|
||||||
|
|
||||||
func draw_curved_connection(from_node, to_node):
|
func draw_curved_connection(from_node, to_node):
|
||||||
var line = Line2D.new()
|
var line = Line2D.new()
|
||||||
line.width = LINE_WIDTH
|
line.width = LINE_WIDTH
|
||||||
|
|
@ -509,3 +518,32 @@ func get_node_description(node_data):
|
||||||
desc += "\n\nWarning: This is an escape node"
|
desc += "\n\nWarning: This is an escape node"
|
||||||
|
|
||||||
return desc
|
return desc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func update_gold_display():
|
||||||
|
var game = get_node_or_null("/root/Board") as ChessGame
|
||||||
|
if gold_label:
|
||||||
|
gold_label.text = str(game.gold) + " GOLD"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Notification
|
||||||
|
func _notification(what):
|
||||||
|
if what == NOTIFICATION_VISIBILITY_CHANGED:
|
||||||
|
_on_visibility_changed(visible)
|
||||||
|
|
||||||
|
func _on_visibility_changed(is_visible):
|
||||||
|
|
||||||
|
print("MapScreen visibility changed to: ", is_visible)
|
||||||
|
if is_visible:
|
||||||
|
update_gold_display()
|
||||||
|
else:
|
||||||
|
print("MapScreen is now invisible")
|
||||||
|
|
||||||
|
emit_signal("map_visibility_changed", is_visible)
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ func _ready():
|
||||||
gameMenuScreen.connect("map_open_requested", Callable(self, "_on_map_open_requested"))
|
gameMenuScreen.connect("map_open_requested", Callable(self, "_on_map_open_requested"))
|
||||||
gameMenuScreen.connect("new_game_requested", Callable(self, "_on_start_game_pressed"))
|
gameMenuScreen.connect("new_game_requested", Callable(self, "_on_start_game_pressed"))
|
||||||
gameMenuScreen.visible = false
|
gameMenuScreen.visible = false
|
||||||
|
else:
|
||||||
|
connect("map_open_requested", Callable(self, "_on_map_open_requested"))
|
||||||
|
|
||||||
if deckManagerScreen:
|
if deckManagerScreen:
|
||||||
deckManagerScreen.connect("back_pressed", Callable(self, "_on_deck_manager_back_pressed"))
|
deckManagerScreen.connect("back_pressed", Callable(self, "_on_deck_manager_back_pressed"))
|
||||||
|
|
@ -44,6 +46,7 @@ func _ready():
|
||||||
|
|
||||||
if mapScreen:
|
if mapScreen:
|
||||||
mapScreen.connect("back_pressed", Callable(self, "_on_map_back_pressed"))
|
mapScreen.connect("back_pressed", Callable(self, "_on_map_back_pressed"))
|
||||||
|
mapScreen.connect("deckmanager_open_requested", Callable(self, "_on_deckmanager_open_requested_from_map"))
|
||||||
mapScreen.connect("node_selected", Callable(self, "_on_map_node_selected"))
|
mapScreen.connect("node_selected", Callable(self, "_on_map_node_selected"))
|
||||||
mapScreen.visible = false
|
mapScreen.visible = false
|
||||||
|
|
||||||
|
|
@ -168,6 +171,23 @@ func _on_shop_card_purchased(card, price):
|
||||||
deck_manager.bank.append(card)
|
deck_manager.bank.append(card)
|
||||||
print("Added purchased card to bank:", card.cardName)
|
print("Added purchased card to bank:", card.cardName)
|
||||||
|
|
||||||
|
func _on_deckmanager_open_requested_from_map(options):
|
||||||
|
print("Deck Manager requested with options:", options)
|
||||||
|
|
||||||
|
# Hide game menu
|
||||||
|
gameMenuScreen.visible = false
|
||||||
|
|
||||||
|
# Show and initialize deck manager
|
||||||
|
|
||||||
|
if deckManagerScreen:
|
||||||
|
deckManagerScreen.visible = true
|
||||||
|
deckManagerScreen.initialize(options)
|
||||||
|
back_to_map = true
|
||||||
|
# Also emit signal for other systems that might need to know
|
||||||
|
emit_signal("deckmanager_open_requested", options)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _on_deckmanager_open_requested(options):
|
func _on_deckmanager_open_requested(options):
|
||||||
print("Deck Manager requested with options:", options)
|
print("Deck Manager requested with options:", options)
|
||||||
|
|
||||||
|
|
@ -213,7 +233,15 @@ func _on_map_node_selected(node_data):
|
||||||
if node_data.type == Utils.RoomType.SHOP:
|
if node_data.type == Utils.RoomType.SHOP:
|
||||||
back_to_map = true
|
back_to_map = true
|
||||||
_on_shop_open_requested(node_data.metadata)
|
_on_shop_open_requested(node_data.metadata)
|
||||||
|
elif node_data.type == Utils.RoomType.NORMAL:
|
||||||
|
if gameMenuScreen:
|
||||||
|
gameMenuScreen.visible = false
|
||||||
|
if deckManagerScreen:
|
||||||
|
deckManagerScreen.visible = false
|
||||||
|
if mapScreen:
|
||||||
|
mapScreen.visible = false
|
||||||
|
back_to_map = true
|
||||||
|
_on_start_game_pressed(node_data.metadata)
|
||||||
# Implement logic for map node selection
|
# Implement logic for map node selection
|
||||||
# For example, start a battle based on the node type
|
# For example, start a battle based on the node type
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,21 +3,21 @@ extends "res://Systems/StateMachine/ChessGameState.gd"
|
||||||
func enter(_previous: String, data := {}) -> void:
|
func enter(_previous: String, data := {}) -> void:
|
||||||
print("ENTERING STATE ", Constants.ROUND_END)
|
print("ENTERING STATE ", Constants.ROUND_END)
|
||||||
if "endCondition" in data:
|
if "endCondition" in data:
|
||||||
match data["endCondition"]:
|
match data["endCondition"]:
|
||||||
"checkmate":
|
"checkmate":
|
||||||
handleCheckmate()
|
handleCheckmate()
|
||||||
"draw":
|
"draw":
|
||||||
handleDraw()
|
handleDraw()
|
||||||
|
|
||||||
game.resetBoard()
|
game.endRound()
|
||||||
finished.emit(Constants.WHITE_TURN)
|
# finished.emit(Constants.WHITE_TURN)
|
||||||
|
|
||||||
func handleCheckmate() -> void:
|
func handleCheckmate() -> void:
|
||||||
var winner = "White" if game.turn == 1 else "Black"
|
var winner = "White" if game.turn == 1 else "Black"
|
||||||
print("Checkmate! " + winner + " wins!")
|
print("Checkmate! " + winner + " wins!")
|
||||||
|
|
||||||
func handleDraw() -> void:
|
func handleDraw() -> void:
|
||||||
print("Game ended in draw")
|
print("Game ended in draw")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -66,3 +66,10 @@ enum RoomType {
|
||||||
SHOP,
|
SHOP,
|
||||||
EVENT
|
EVENT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum WinCondition{
|
||||||
|
King,
|
||||||
|
Clear,
|
||||||
|
Tile,
|
||||||
|
}
|
||||||
|
|
@ -41,6 +41,15 @@ theme_override_font_sizes/font_size = 36
|
||||||
text = "MAP"
|
text = "MAP"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="GoldLabel" type="Label" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
offset_left = 950.0
|
||||||
|
offset_top = 20.0
|
||||||
|
offset_right = 1064.0
|
||||||
|
offset_bottom = 54.0
|
||||||
|
theme_override_font_sizes/font_size = 24
|
||||||
|
text = "100 GOLD"
|
||||||
|
|
||||||
[node name="MapScrollContainer" type="ScrollContainer" parent="."]
|
[node name="MapScrollContainer" type="ScrollContainer" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
|
|
@ -113,3 +122,20 @@ anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("3_wcttb")
|
script = ExtResource("3_wcttb")
|
||||||
|
|
||||||
|
[node name="DeckManagerButton" type="RichTextLabel" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 3
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -162.0
|
||||||
|
offset_top = -48.0
|
||||||
|
offset_right = -23.0
|
||||||
|
offset_bottom = -18.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 0
|
||||||
|
text = "DECK MANAGER"
|
||||||
|
horizontal_alignment = 2
|
||||||
|
script = ExtResource("bfjmon81nckns")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue