mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-11 14:17:13 +08:00
feat(UI): 添加游戏开始界面和难度选择功能
实现游戏开始界面,包含难度选择滑块和开始按钮 修改游戏规则初始难度为10并调整掉落物品数量计算 添加游戏开始条件检查,确保运行时间超过3秒且没有敌人时显示制作饲料界面
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://c0r1i5tdbwljj"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://d3qojeqa3difn" path="res://components/Abstracts/FullscreenPanelBase.tscn" id="1_o0yse"]
|
||||
[ext_resource type="Script" path="res://scripts/Contents/Panels/Starter.gd" id="2_ic0aq"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_ch0dv"]
|
||||
font_size = 45
|
||||
outline_size = 2
|
||||
|
||||
[node name="Starter" instance=ExtResource("1_o0yse")]
|
||||
offset_top = 0.0
|
||||
offset_bottom = 0.0
|
||||
script = ExtResource("2_ic0aq")
|
||||
|
||||
[node name="wrapper" parent="content" index="1"]
|
||||
theme_override_constants/separation = 30
|
||||
|
||||
[node name="title" type="Label" parent="content/wrapper" index="0"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "公鸡大战狗熊"
|
||||
label_settings = SubResource("LabelSettings_ch0dv")
|
||||
|
||||
[node name="starter" type="VBoxContainer" parent="content/wrapper" index="1"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="diffs" type="HBoxContainer" parent="content/wrapper/starter" index="0"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="tip" type="Label" parent="content/wrapper/starter/diffs" index="0"]
|
||||
layout_mode = 2
|
||||
text = "选择难度:"
|
||||
|
||||
[node name="diffEdit" type="HSlider" parent="content/wrapper/starter/diffs" index="1"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 4
|
||||
max_value = 10.0
|
||||
value = 1.0
|
||||
|
||||
[node name="levelShow" type="Label" parent="content/wrapper/starter/diffs" index="2"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "1/10"
|
||||
|
||||
[node name="startBtn" type="Button" parent="content/wrapper/starter" index="1"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "开始"
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=24 format=3 uid="uid://dfwg750a47ggx"]
|
||||
[gd_scene load_steps=25 format=3 uid="uid://dfwg750a47ggx"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ofpg5s3j7esv" path="res://components/UI/BossBar.tscn" id="1_2pe58"]
|
||||
[ext_resource type="Script" path="res://scripts/Statemachine/UIState.gd" id="1_f00a6"]
|
||||
@@ -13,6 +13,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://cksonrrx38k36" path="res://components/Scenes/FullscreenPanels/Pause.tscn" id="12_jkm6o"]
|
||||
[ext_resource type="PackedScene" uid="uid://dekcqdhrjs07u" path="res://components/Scenes/FullscreenPanels/Weapon.tscn" id="13_bmc24"]
|
||||
[ext_resource type="PackedScene" uid="uid://w2o3klbsssq3" path="res://components/Scenes/FullscreenPanels/Thanks.tscn" id="14_gp8lx"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0r1i5tdbwljj" path="res://components/Scenes/FullscreenPanels/Starter.tscn" id="14_pjwgj"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_12otr"]
|
||||
|
||||
@@ -310,3 +311,8 @@ offset_bottom = 0.0
|
||||
[node name="Thanks" parent="root/panels" instance=ExtResource("14_gp8lx")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
|
||||
[node name="Starter" parent="root/panels" instance=ExtResource("14_pjwgj")]
|
||||
visible = false
|
||||
z_index = 2
|
||||
layout_mode = 1
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
@tool
|
||||
extends FullscreenPanelBase
|
||||
|
||||
@onready var diffEdit: HSlider = $"%diffEdit"
|
||||
@onready var startBtn: Button = $"%startBtn"
|
||||
@onready var levelShow: Label = $"%levelShow"
|
||||
|
||||
func _ready():
|
||||
startBtn.pressed.connect(
|
||||
func():
|
||||
Wave.next()
|
||||
UIState.closeCurrentPanel()
|
||||
)
|
||||
func _physics_process(_delta):
|
||||
levelShow.text = "%s/10" % diffEdit.value
|
||||
GameRule.difficulty = diffEdit.value
|
||||
@@ -255,7 +255,7 @@ func tryDie(by: BulletBase):
|
||||
var item = drops[drop]
|
||||
var count = ceil(randf_range(dropCounts[drop].x, dropCounts[drop].y))
|
||||
for i in range(count):
|
||||
ItemDropped.generate(item, randi_range(0, int(sqrt(count))), position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset))
|
||||
ItemDropped.generate(item, randi_range(1, int(sqrt(count) + GameRule.difficulty)), position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset))
|
||||
if MathTool.rate(
|
||||
GameRule.appleDropRate +
|
||||
by.launcher.fields.get(FieldStore.Entity.DROP_APPLE_RATE) +
|
||||
@@ -268,10 +268,11 @@ func tryDie(by: BulletBase):
|
||||
fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset),
|
||||
position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset)
|
||||
)
|
||||
if isPlayer():
|
||||
if UIState.player == self:
|
||||
UIState.setPanel("GameOver", [displayName, by.launcher.displayName])
|
||||
EffectController.create(preload("res://components/Effects/DeadBlood.tscn"), texture.global_position).shot()
|
||||
await die()
|
||||
if isPlayer() and UIState.player == self:
|
||||
UIState.setPanel("GameOver", [displayName, by.launcher.displayName])
|
||||
func tryHeal(count: float):
|
||||
if inventory[ItemStore.ItemType.APPLE] > 0 and health < fields.get(FieldStore.Entity.MAX_HEALTH):
|
||||
inventory[ItemStore.ItemType.APPLE] -= 1
|
||||
|
||||
@@ -19,6 +19,7 @@ func _ready():
|
||||
energyPercent = $"%percent"
|
||||
itemCollect = $"%itemCollect"
|
||||
skillIconContainer = $"%skillContainer"
|
||||
setPanel("Starter")
|
||||
func _process(_delta):
|
||||
bossbar.visible = !!bossbar.entity
|
||||
func _physics_process(_delta):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class_name GameRule
|
||||
|
||||
static var deadReasons: Array = JsonTool.parseJson("res://resources/constants/deadReasons.json")
|
||||
static var difficulty: float = 1 # 难度倍数,可以写小数
|
||||
static var difficulty: float = 10 # 难度倍数,可以写小数
|
||||
static var allowFriendlyFire: bool = false # 是否允许友军伤害
|
||||
static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率
|
||||
static var damageOffset: float = MathTool.percent(20) # 伤害随机浮动比例
|
||||
|
||||
@@ -8,10 +8,9 @@ static var runningTime: int = 0
|
||||
func _ready():
|
||||
tree = get_tree()
|
||||
rootNode = self
|
||||
print(GameRule.deadReasons)
|
||||
func _physics_process(delta):
|
||||
runningTime += delta * 1000
|
||||
if EntityBase.mobCount() == 0:
|
||||
if EntityBase.mobCount() == 0 and runningTime > 3000:
|
||||
UIState.setPanel("MakeFeed")
|
||||
|
||||
static func getTime():
|
||||
|
||||
Reference in New Issue
Block a user