mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-12 14:47:13 +08:00
feat: 添加游戏启动界面和着色器效果
- 新增启动界面背景和logo - 实现顶部和底部阴影着色器 - 添加难度选择滑块和角色名输入框 - 优化多人游戏按钮交互 - 修复编译提示面板的动画效果 - 更新UI主题样式
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
shader_type canvas_item;
|
||||
uniform float prog:hint_range(0.0, 1.0, 0.1)=0;
|
||||
void fragment() {
|
||||
COLOR.a*=(1.0-UV.y)/prog;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://csx5am14p4ai0
|
||||
@@ -4,10 +4,11 @@ extends FullscreenPanelBase
|
||||
func afterOpen(_args: Array = []):
|
||||
if WorldManager.isRelease():
|
||||
for key in ComponentManager.effects:
|
||||
var effect = EffectController.create(ComponentManager.getEffect(key), Vector2.ZERO, self)
|
||||
var effect = EffectController.create(ComponentManager.getEffect(key), Vector2.ZERO, self )
|
||||
effect.modulate.a = 0.01
|
||||
(effect.sounds.get_node("spawn") as AudioStreamPlayer2D).volume_db = - INF
|
||||
effect.shot()
|
||||
await TickTool.millseconds(3000)
|
||||
await TickTool.frame()
|
||||
UIState.setPanel("SelectInitialFeed")
|
||||
StarterPanel.buildingShader = false
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
@tool
|
||||
extends FullscreenPanelBase
|
||||
class_name StarterPanel
|
||||
|
||||
@onready var diffEdit: HSlider = $"%diffEdit"
|
||||
@onready var startSingleplayerBtn: Button = $"%startSingleplayerBtn"
|
||||
@@ -18,6 +19,8 @@ var historyStack
|
||||
@onready var players: VBoxContainer = $"%players"
|
||||
@onready var playersList: VBoxContainer = $"%list"
|
||||
|
||||
static var buildingShader: bool = true
|
||||
|
||||
@rpc("any_peer")
|
||||
func mutexPlayer(player: String):
|
||||
if multiplayer.is_server():
|
||||
@@ -63,7 +66,7 @@ func startMultiplayerGame():
|
||||
func startSingleplayerGame():
|
||||
MultiplayerState.isMultiplayer = false
|
||||
MultiplayerState.playerName = playerNameInput.text
|
||||
EntityBase.generatePlayer(playerNameInput.text)
|
||||
UIState.player = EntityBase.generatePlayer(playerNameInput.text)
|
||||
WorldManager.rootNode.spawnWave(Vector2.ZERO)
|
||||
UIState.setPanel("CompilingTip")
|
||||
|
||||
@@ -87,8 +90,9 @@ func _ready():
|
||||
)
|
||||
startMultiplayerBtn.pressed.connect(
|
||||
func():
|
||||
startMultiplayerGame.rpc()
|
||||
startMultiplayerGame()
|
||||
# startMultiplayerGame.rpc()
|
||||
# startMultiplayerGame()
|
||||
UIState.showTip("敬请期待!", TipBox.MessageType.ERROR)
|
||||
)
|
||||
maxPlayerInput.text_changed.connect(
|
||||
func(text):
|
||||
@@ -127,7 +131,7 @@ func setState(state: MultiplayerState.ConnectionState):
|
||||
connectionState.text = "状态:%s" % MultiplayerState.stateTextMap[state]
|
||||
connectionState.modulate = MultiplayerState.stateColorMap[state]
|
||||
disconnectBtn.disabled = not MultiplayerState.isConnected()
|
||||
startMultiplayerBtn.disabled = not MultiplayerState.isConnected() || !multiplayer.is_server()
|
||||
# startMultiplayerBtn.disabled = not MultiplayerState.isConnected() || !multiplayer.is_server()
|
||||
serverConfig.visible = MultiplayerState.state == MultiplayerState.ConnectionState.CONNECTED_HOST
|
||||
players.visible = MultiplayerState.isConnected()
|
||||
func addPlayerName(playerName: String):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
extends Control
|
||||
class_name FullscreenPanelBase
|
||||
|
||||
@onready var animator = $"%animator"
|
||||
@onready var animator: AnimationPlayer = $"%animator"
|
||||
|
||||
func hidePanel():
|
||||
beforeClose()
|
||||
|
||||
@@ -19,6 +19,7 @@ func _physics_process(_delta):
|
||||
offset += ((get_global_mouse_position() - UIState.player.position).clampf(-100, 100) - offset) * 0.15
|
||||
|
||||
static func shake(millseconds: float, intensity: float = 10, steper: Callable = func(currentValue, _totalValue, _restPercent): return currentValue):
|
||||
if StarterPanel.buildingShader: return
|
||||
var startTime = WorldManager.getTime()
|
||||
instance.shakeIntensity = intensity
|
||||
await TickTool.until(
|
||||
|
||||
Reference in New Issue
Block a user