feat: 创建了游戏循环管理器
This commit is contained in:
@@ -31,6 +31,7 @@ game/
|
||||
- DownloadManager.gd # 下载管理
|
||||
- MultiGame.gd # 多人游戏功能
|
||||
- SceneManager.gd # 场景管理
|
||||
- GameLoopManager.gd # 游戏循环管理
|
||||
- main_menu/
|
||||
- main_menu.gd
|
||||
- join_game_ui.gd
|
||||
@@ -46,6 +47,12 @@ game/
|
||||
|
||||
请先运行数据后端,在游戏设置中输入后端 URL(包含端口号和 `http://` 或 `https://` 前缀),或者选择本地已有的数据源,然后创建游戏或加入游戏开始游玩。
|
||||
|
||||
## 部分游戏逻辑介绍
|
||||
|
||||
### 游戏循环
|
||||
|
||||
游戏循环管理器(GameLoopManager.gd)负责游戏游戏循环的管理,其中不可避免地与多人游戏管理器(MultiGame.gd)交互与交叉。
|
||||
|
||||
## 最佳实践
|
||||
|
||||
本项目目前正在使用 Godot 4.6.2 进行开发。开发用语言为 GDScript。
|
||||
@@ -56,4 +63,4 @@ game/
|
||||
|
||||
- 除连接了信号或 HTTPRequest、MultiplayerAPI 的函数外,任何函数都不应该以下划线(`_`)开头。
|
||||
|
||||
- 函数之间既可间隔一行,也可间隔两行。建议间隔两行,部分间隔一行的函数为遗留问题。
|
||||
- 函数之间既可间隔一行,也可间隔两行。建议绑定 Godot 信号的函数间隔两行(自动空行),其余函数间隔一行,部分间隔一行的函数为遗留问题。
|
||||
|
||||
@@ -25,6 +25,7 @@ MultiGame="*res://scripts/autoload/MultiGame.gd"
|
||||
SceneManager="*res://scripts/autoload/SceneManager.gd"
|
||||
GameManager="*res://scripts/autoload/GameManager.gd"
|
||||
DownloadManager="*res://scripts/autoload/DownloadManager.gd"
|
||||
GameLoopManager="*uid://qxowgxfp4iwm"
|
||||
|
||||
[display]
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
extends Node
|
||||
|
||||
var game_round: int = -1
|
||||
|
||||
signal end_game
|
||||
|
||||
func _ready() -> void:
|
||||
end_game.connect(_on_end_game)
|
||||
|
||||
func start_game() -> void:
|
||||
game_round = 1
|
||||
|
||||
func settle_round() -> void:
|
||||
game_round += 1
|
||||
if check_game_end():
|
||||
end_game.emit()
|
||||
|
||||
func check_game_end() -> bool:
|
||||
return false
|
||||
|
||||
func _on_end_game() -> void:
|
||||
game_round = -1
|
||||
@@ -0,0 +1 @@
|
||||
uid://qxowgxfp4iwm
|
||||
@@ -2,7 +2,7 @@ extends Node
|
||||
|
||||
const PORT: int = 8989
|
||||
const MAX_HAND_SIZE: int = 8
|
||||
const INITIAL_HP: int = 100
|
||||
const INITIAL_HP: int = 4
|
||||
const DEFAULT_DRAW_COUNT: int = 4
|
||||
const FIRST_ROUND_DRAW_COUNT: int = 3
|
||||
|
||||
@@ -19,7 +19,6 @@ var cards: Array[String] = []
|
||||
var my_card: Array[String] = []
|
||||
|
||||
var server_round: int = 0
|
||||
var client_round: int = 0
|
||||
var game_started: bool = false
|
||||
|
||||
func add_player(id: int) -> void:
|
||||
|
||||
@@ -4,17 +4,18 @@ var card_list: Array
|
||||
|
||||
func _ready() -> void:
|
||||
init()
|
||||
GameLoopManager.start_game()
|
||||
var card = create_card("Oxygen")
|
||||
card.show()
|
||||
card.set_pos(300, 300)
|
||||
print(card.get_pos())
|
||||
|
||||
func init() -> void:
|
||||
# 设置 UI 展示文本
|
||||
if multiplayer.is_server():
|
||||
$IsServerLabel.text = "GAMEUI_URHOST"
|
||||
else:
|
||||
$IsServerLabel.text = "GAMEUI_URGUEST"
|
||||
|
||||
var addresses: PackedStringArray = IP.get_local_addresses()
|
||||
var ipaddress: String = ""
|
||||
for address in addresses:
|
||||
@@ -24,6 +25,7 @@ func init() -> void:
|
||||
$IPLabel.text = ipaddress
|
||||
$Player1/Username.text = GameManager.username
|
||||
|
||||
|
||||
func create_card(card_name: String):
|
||||
var card = SceneManager.Card.instantiate()
|
||||
add_child(card)
|
||||
|
||||
Reference in New Issue
Block a user