diff --git a/DungeonShooting_Godot/prefab/ui/WeaponRoulette.tscn b/DungeonShooting_Godot/prefab/ui/WeaponRoulette.tscn
index 77d62b4..100d134 100644
--- a/DungeonShooting_Godot/prefab/ui/WeaponRoulette.tscn
+++ b/DungeonShooting_Godot/prefab/ui/WeaponRoulette.tscn
@@ -1,9 +1,10 @@
-[gd_scene load_steps=7 format=3 uid="uid://dbjpknb3d5gfw"]
+[gd_scene load_steps=8 format=3 uid="uid://dbjpknb3d5gfw"]
[ext_resource type="Script" path="res://src/game/ui/weaponRoulette/WeaponRoulettePanel.cs" id="1_1uvbk"]
[ext_resource type="Texture2D" uid="uid://e6krxgte01j3" path="res://resource/sprite/ui/roulette/RouletteBg.png" id="2_k6gjh"]
[ext_resource type="Script" path="res://src/game/ui/weaponRoulette/WeaponSlot.cs" id="3_8v011"]
[ext_resource type="Shader" path="res://resource/material/Outline.gdshader" id="4_p348k"]
+[ext_resource type="Texture2D" uid="uid://dmm8jw06bhffh" path="res://resource/sprite/ui/commonIcon/Lock.png" id="6_7mog3"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_i1wmw"]
resource_local_to_scene = true
@@ -21,7 +22,7 @@
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_1uvbk")
-metadata/_edit_vertical_guides_ = [960.0]
+metadata/_edit_vertical_guides_ = [960.0, 1220.0]
[node name="Bg" type="ColorRect" parent="."]
layout_mode = 1
@@ -53,27 +54,41 @@
[node name="WeaponSlotNode" type="Node2D" parent="Control/RouletteBg"]
script = ExtResource("3_8v011")
-[node name="Control" type="Control" parent="Control/RouletteBg/WeaponSlotNode"]
+[node name="SlotUi" type="Control" parent="Control/RouletteBg/WeaponSlotNode"]
layout_mode = 3
anchors_preset = 0
offset_left = 65.25
offset_right = 66.25
offset_bottom = 1.0
-[node name="WeaponIcon" type="Sprite2D" parent="Control/RouletteBg/WeaponSlotNode/Control"]
-material = SubResource("ShaderMaterial_i1wmw")
-
-[node name="AmmoLabel" type="Label" parent="Control/RouletteBg/WeaponSlotNode/Control"]
+[node name="WeaponUi" type="Control" parent="Control/RouletteBg/WeaponSlotNode/SlotUi"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
-offset_left = -15.25
-offset_top = 4.5
-offset_right = 104.75
-offset_bottom = 44.5
+offset_left = -0.5
+offset_top = -0.5
+offset_right = 0.5
+offset_bottom = 0.5
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="WeaponIcon" type="Sprite2D" parent="Control/RouletteBg/WeaponSlotNode/SlotUi/WeaponUi"]
+material = SubResource("ShaderMaterial_i1wmw")
+
+[node name="AmmoLabel" type="Label" parent="Control/RouletteBg/WeaponSlotNode/SlotUi/WeaponUi"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -15.375
+offset_top = 8.5
+offset_right = 104.625
+offset_bottom = 48.5
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(0.25, 0.25)
@@ -81,6 +96,10 @@
horizontal_alignment = 1
vertical_alignment = 1
+[node name="LockSprite" type="Sprite2D" parent="Control/RouletteBg/WeaponSlotNode/SlotUi"]
+scale = Vector2(0.25, 0.25)
+texture = ExtResource("6_7mog3")
+
[node name="SlotAreaNode" type="Area2D" parent="Control/RouletteBg/WeaponSlotNode"]
collision_layer = 0
collision_mask = 8192
diff --git a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
index 5f82093..6153367 100644
--- a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
@@ -74,7 +74,7 @@
_brushData2 = new BrushImageData(ExcelConfig.LiquidMaterial_Map["0001"]);
- WeaponPack.SetCapacity(20);
+ WeaponPack.SetCapacity(10);
}
private void DebugSet()
diff --git a/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulette.cs b/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulette.cs
index 55700e6..b903858 100644
--- a/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulette.cs
+++ b/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulette.cs
@@ -65,7 +65,7 @@
}
///
- /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.Control.WeaponIcon
+ /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponUi.WeaponIcon
///
public class WeaponIcon : UiNode
{
@@ -74,7 +74,7 @@
}
///
- /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.Control.AmmoLabel
+ /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponUi.AmmoLabel
///
public class AmmoLabel : UiNode
{
@@ -83,12 +83,12 @@
}
///
- /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.Control
+ /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponUi
///
- public class Control_1 : UiNode
+ public class WeaponUi : UiNode
{
///
- /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.WeaponIcon
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponIcon
///
public WeaponIcon L_WeaponIcon
{
@@ -101,7 +101,7 @@
private WeaponIcon _L_WeaponIcon;
///
- /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.AmmoLabel
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.AmmoLabel
///
public AmmoLabel L_AmmoLabel
{
@@ -113,8 +113,52 @@
}
private AmmoLabel _L_AmmoLabel;
- public Control_1(WeaponRoulettePanel uiPanel, Godot.Control node) : base(uiPanel, node) { }
- public override Control_1 Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate());
+ public WeaponUi(WeaponRoulettePanel uiPanel, Godot.Control node) : base(uiPanel, node) { }
+ public override WeaponUi Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.LockSprite
+ ///
+ public class LockSprite : UiNode
+ {
+ public LockSprite(WeaponRoulettePanel uiPanel, Godot.Sprite2D node) : base(uiPanel, node) { }
+ public override LockSprite Clone() => new (UiPanel, (Godot.Sprite2D)Instance.Duplicate());
+ }
+
+ ///
+ /// 类型: , 路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi
+ ///
+ public class SlotUi : UiNode
+ {
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.WeaponUi
+ ///
+ public WeaponUi L_WeaponUi
+ {
+ get
+ {
+ if (_L_WeaponUi == null) _L_WeaponUi = new WeaponUi(UiPanel, Instance.GetNode("WeaponUi"));
+ return _L_WeaponUi;
+ }
+ }
+ private WeaponUi _L_WeaponUi;
+
+ ///
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.LockSprite
+ ///
+ public LockSprite L_LockSprite
+ {
+ get
+ {
+ if (_L_LockSprite == null) _L_LockSprite = new LockSprite(UiPanel, Instance.GetNode("LockSprite"));
+ return _L_LockSprite;
+ }
+ }
+ private LockSprite _L_LockSprite;
+
+ public SlotUi(WeaponRoulettePanel uiPanel, Godot.Control node) : base(uiPanel, node) { }
+ public override SlotUi Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate());
}
///
@@ -154,17 +198,17 @@
public class WeaponSlotNode : UiNode
{
///
- /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.Control
+ /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.SlotUi
///
- public Control_1 L_Control
+ public SlotUi L_SlotUi
{
get
{
- if (_L_Control == null) _L_Control = new Control_1(UiPanel, Instance.GetNode("Control"));
- return _L_Control;
+ if (_L_SlotUi == null) _L_SlotUi = new SlotUi(UiPanel, Instance.GetNode("SlotUi"));
+ return _L_SlotUi;
}
}
- private Control_1 _L_Control;
+ private SlotUi _L_SlotUi;
///
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.SlotAreaNode
@@ -353,14 +397,29 @@
public Bg S_Bg => L_Bg;
///
- /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.Control.WeaponIcon
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponUi.WeaponIcon
///
- public WeaponIcon S_WeaponIcon => L_Control.L_RouletteBg.L_WeaponSlotNode.L_Control.L_WeaponIcon;
+ public WeaponIcon S_WeaponIcon => L_Control.L_RouletteBg.L_WeaponSlotNode.L_SlotUi.L_WeaponUi.L_WeaponIcon;
///
- /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.Control.AmmoLabel
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponUi.AmmoLabel
///
- public AmmoLabel S_AmmoLabel => L_Control.L_RouletteBg.L_WeaponSlotNode.L_Control.L_AmmoLabel;
+ public AmmoLabel S_AmmoLabel => L_Control.L_RouletteBg.L_WeaponSlotNode.L_SlotUi.L_WeaponUi.L_AmmoLabel;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.WeaponUi
+ ///
+ public WeaponUi S_WeaponUi => L_Control.L_RouletteBg.L_WeaponSlotNode.L_SlotUi.L_WeaponUi;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi.LockSprite
+ ///
+ public LockSprite S_LockSprite => L_Control.L_RouletteBg.L_WeaponSlotNode.L_SlotUi.L_LockSprite;
+
+ ///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotUi
+ ///
+ public SlotUi S_SlotUi => L_Control.L_RouletteBg.L_WeaponSlotNode.L_SlotUi;
///
/// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control.RouletteBg.WeaponSlotNode.SlotAreaNode.CollisionPolygon2D
@@ -403,6 +462,11 @@
public ColorRect S_ColorRect => L_Control.L_ColorRect;
///
+ /// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.Control
+ ///
+ public Control S_Control => L_Control;
+
+ ///
/// 场景中唯一名称的节点, 节点类型: , 节点路径: WeaponRoulette.MouseArea.CollisionShape2D
///
public CollisionShape2D S_CollisionShape2D => L_MouseArea.L_CollisionShape2D;
diff --git a/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulettePanel.cs b/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulettePanel.cs
index 4fdbdaa..a910eeb 100644
--- a/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulettePanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponRoulettePanel.cs
@@ -43,8 +43,9 @@
var sectorPolygon = Utils.CreateSectorPolygon(0, 100, 360f / SlotCount, 4);
collisionPolygon2D.Polygon = sectorPolygon;
clone.Instance.RotationDegrees = angle;
- clone.L_Control.Instance.RotationDegrees = -angle;
- clone.L_Control.L_WeaponIcon.Instance.Material = (Material)S_WeaponSlotNode.L_Control.L_WeaponIcon.Instance.Material.Duplicate();
+ clone.L_SlotUi.Instance.RotationDegrees = -angle;
+ clone.L_SlotUi.L_WeaponUi.L_WeaponIcon.Instance.Material =
+ (Material)S_WeaponSlotNode.L_SlotUi.L_WeaponUi.L_WeaponIcon.Instance.Material.Duplicate();
_slotNodes.Add(clone);
}
@@ -200,7 +201,7 @@
{
foreach (var slotNode in _slotNodes)
{
- slotNode.L_Control.Instance.Visible = false;
+ slotNode.L_SlotUi.Instance.Visible = false;
}
return;
@@ -210,28 +211,34 @@
for (var i = 0; i < _slotNodes.Count; i++)
{
var slotNode = _slotNodes[i];
- slotNode.L_Control.Instance.Visible = true;
+ slotNode.L_SlotUi.Instance.Visible = true;
+ slotNode.L_SlotUi.L_LockSprite.Instance.Visible = false;
+
var weaponIndex = i + _pageIndex * SlotCount;
if (weapons.Length > weaponIndex)
{
var weapon = weapons[weaponIndex];
- if (weapon != null)
+ if (weapon != null) //有武器
{
- slotNode.L_Control.Instance.Visible = true;
- slotNode.L_Control.L_WeaponIcon.Instance.Texture = weapon.GetDefaultTexture();
- slotNode.L_Control.L_AmmoLabel.Instance.Text =
+ slotNode.L_SlotUi.L_WeaponUi.Instance.Visible = true;
+ slotNode.L_SlotUi.L_WeaponUi.L_WeaponIcon.Instance.Texture = weapon.GetDefaultTexture();
+ slotNode.L_SlotUi.L_WeaponUi.L_AmmoLabel.Instance.Text =
(weapon.CurrAmmo + weapon.ResidueAmmo).ToString() + "/" + weapon.Attribute.MaxAmmoCapacity;
slotNode.Instance.SetWeapon(weapon);
+ slotNode.L_SlotAreaNode.Instance.Monitoring = true;
}
- else
+ else //已经解锁,但是没有武器
{
- slotNode.L_Control.Instance.Visible = false;
+ slotNode.L_SlotUi.L_WeaponUi.Instance.Visible = false;
+ slotNode.L_SlotAreaNode.Instance.Monitoring = false;
slotNode.Instance.ClearWeapon();
}
}
- else
+ else //未解锁
{
- slotNode.L_Control.Instance.Visible = false;
+ slotNode.L_SlotUi.L_LockSprite.Instance.Visible = true;
+ slotNode.L_SlotUi.L_WeaponUi.Instance.Visible = false;
+ slotNode.L_SlotAreaNode.Instance.Monitoring = false;
slotNode.Instance.ClearWeapon();
}
}
diff --git a/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponSlot.cs b/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponSlot.cs
index 1d2341d..976a0b2 100644
--- a/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponSlot.cs
+++ b/DungeonShooting_Godot/src/game/ui/weaponRoulette/WeaponSlot.cs
@@ -32,12 +32,12 @@
{
_node.UiPanel.ActiveWeapon = _weapon;
_node.Instance.Scale = new Vector2(1.1f, 1.1f);
- _node.L_Control.L_WeaponIcon.Instance.Material.SetShaderMaterialParameter(ShaderParamNames.OutlineColor, Colors.White);
+ _node.L_SlotUi.L_WeaponUi.L_WeaponIcon.Instance.Material.SetShaderMaterialParameter(ShaderParamNames.OutlineColor, Colors.White);
}
private void OnAreaExited(Area2D other)
{
_node.Instance.Scale = Vector2.One;
- _node.L_Control.L_WeaponIcon.Instance.Material.SetShaderMaterialParameter(ShaderParamNames.OutlineColor, Colors.Black);
+ _node.L_SlotUi.L_WeaponUi.L_WeaponIcon.Instance.Material.SetShaderMaterialParameter(ShaderParamNames.OutlineColor, Colors.Black);
}
}
\ No newline at end of file