diff --git a/DungeonShooting_Godot/prefab/role/template/RoleTemplate.tscn b/DungeonShooting_Godot/prefab/role/template/RoleTemplate.tscn
index eee034c..e098e51 100644
--- a/DungeonShooting_Godot/prefab/role/template/RoleTemplate.tscn
+++ b/DungeonShooting_Godot/prefab/role/template/RoleTemplate.tscn
@@ -5,7 +5,6 @@
[ext_resource type="Script" path="res://src/framework/activity/hurt/HurtArea.cs" id="2_8jnvr"]
[ext_resource type="SpriteFrames" uid="uid://c8h5svp76h3kw" path="res://resource/spriteFrames/role/Role_tip.tres" id="3_bo78w"]
-
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yif6x"]
resource_local_to_scene = true
shader = ExtResource("1_xk5yk")
diff --git a/DungeonShooting_Godot/resource/sprite/role/shopBoss0001/ShopBoss0001.png b/DungeonShooting_Godot/resource/sprite/role/shopBoss0001/ShopBoss0001.png
new file mode 100644
index 0000000..495087d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/shopBoss0001/ShopBoss0001.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/shopBoss0001/ShopBoss0001.png.import b/DungeonShooting_Godot/resource/sprite/role/shopBoss0001/ShopBoss0001.png.import
new file mode 100644
index 0000000..b496656
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/shopBoss0001/ShopBoss0001.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cfgdtj2quumhy"
+path="res://.godot/imported/ShopBoss0001.png-431c1b19fabb4c7c991c0092d16aec1c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/shopBoss0001/ShopBoss0001.png"
+dest_files=["res://.godot/imported/ShopBoss0001.png-431c1b19fabb4c7c991c0092d16aec1c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/scene/Hall.tscn b/DungeonShooting_Godot/scene/Hall.tscn
index 82cc795..341e190 100644
--- a/DungeonShooting_Godot/scene/Hall.tscn
+++ b/DungeonShooting_Godot/scene/Hall.tscn
@@ -88,7 +88,7 @@
metadata/_edit_group_ = true
[node name="BirthMark" type="Marker2D" parent="." index="3"]
-position = Vector2(536, 310)
+position = Vector2(533, 180)
[node name="DungeonEntrance" type="Area2D" parent="." index="4"]
z_index = 15
@@ -123,7 +123,7 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="1"]
position = Vector2(-11, -3)
texture = ExtResource("7_30qwa")
@@ -135,7 +135,7 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="0"]
+[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="1"]
position = Vector2(2.5, -12)
script = ExtResource("5_lowqi")
Id = "item_0031"
@@ -151,7 +151,7 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="0"]
+[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="1"]
position = Vector2(18, -2)
texture = ExtResource("8_61dkg")
@@ -163,19 +163,19 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="1"]
position = Vector2(-2, -13)
texture = ExtResource("8_u3vry")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="2"]
position = Vector2(18, -11)
texture = ExtResource("9_lhdr8")
-[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="2"]
+[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="3"]
position = Vector2(-16, -2)
texture = ExtResource("10_4eqn0")
-[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="3"]
+[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="4"]
position = Vector2(10, -1)
texture = ExtResource("11_tg3jo")
@@ -201,11 +201,11 @@
DefaultLayer = 1
CollisionVisible = false
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="1"]
position = Vector2(32, -2)
texture = ExtResource("12_agfji")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="2"]
material = SubResource("ShaderMaterial_i7git")
position = Vector2(0, -15)
scale = Vector2(1, -1)
@@ -223,7 +223,7 @@
Id = "item_0004"
DefaultLayer = 1
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="1"]
position = Vector2(0, -17)
texture = ExtResource("13_unnpl")
@@ -258,15 +258,15 @@
Id = "item_0009"
DefaultLayer = 1
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="1"]
position = Vector2(-24, -10)
texture = ExtResource("15_h7524")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="2"]
position = Vector2(1, -10)
texture = ExtResource("15_h7524")
-[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="2"]
+[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="3"]
position = Vector2(37, -10)
texture = ExtResource("15_h7524")
@@ -300,7 +300,7 @@
Id = "item_0015"
DefaultLayer = 1
-[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="0"]
+[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="1"]
position = Vector2(16, -9)
texture = ExtResource("15_h7524")
@@ -323,11 +323,11 @@
Id = "item_0019"
DefaultLayer = 1
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="1"]
position = Vector2(-23, -7)
texture = ExtResource("16_xj0e1")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="2"]
position = Vector2(24, -8)
texture = ExtResource("17_gwwce")
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index 2169f4a..ec21309 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -2019,4 +2019,13 @@
}
}
}
+
+ ///
+ /// 通过标记创建时调用
+ ///
+ /// 当前所在的预设
+ /// 创建当前物体的标记对象
+ public virtual void OnCreateWithMark(RoomPreinstall roomPreinstall, ActivityMark activityMark)
+ {
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
index 7934d2d..d9425d2 100644
--- a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
+++ b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
@@ -111,11 +111,11 @@
}
else if (markInfo.SpecialMarkType == SpecialMarkType.ShopBoss) //商店老板标记
{
-
+ HandlerShopBossMark(world, markInfo, mark);
}
else if (markInfo.SpecialMarkType == SpecialMarkType.Treasure) //奖励宝箱标记
{
- HandlerBoxMark(world, markInfo, mark);
+ HandlerTreasureMark(world, markInfo, mark);
}
else
{
@@ -155,7 +155,7 @@
private static bool HandlerNormalMark(World world, MarkInfo markInfo, ActivityMark mark)
{
MarkInfoItem markInfoItem;
- if (markInfo.MarkList.Count == 0)
+ if (markInfo.MarkList.Count == 0) //未配置生成的物体
{
return true;
}
@@ -224,14 +224,18 @@
return false;
}
- private void HandlerBoxMark(World world, MarkInfo markInfo, ActivityMark mark)
+ private void HandlerShopBossMark(World world, MarkInfo markInfo, ActivityMark mark)
{
mark.Id = ActivityObject.Ids.Id_treasure_box0001;
mark.ActivityType = ActivityType.Treasure;
- mark.DelayTime = 0;
mark.Altitude = 0;
- mark.Attr = new Dictionary();
- mark.Position = RoomInfo.ToGlobalPosition(markInfo.Position.AsVector2());
+ }
+
+ private void HandlerTreasureMark(World world, MarkInfo markInfo, ActivityMark mark)
+ {
+ mark.Id = ActivityObject.Ids.Id_treasure_box0001;
+ mark.ActivityType = ActivityType.Treasure;
+ mark.Altitude = 0;
}
private void CheckHasEnemy()
@@ -269,9 +273,15 @@
var activityMarks = WaveList[0];
foreach (var activityMark in activityMarks)
{
- if (activityMark.MarkType == SpecialMarkType.Normal || activityMark.MarkType == SpecialMarkType.Treasure)
+ if (activityMark.MarkType == SpecialMarkType.Normal ||
+ activityMark.MarkType == SpecialMarkType.Treasure ||
+ activityMark.MarkType == SpecialMarkType.ShopBoss)
{
var activityObject = CreateItem(activityMark);
+ if (activityObject == null)
+ {
+ continue;
+ }
//初始化属性
InitAttr(activityObject, activityMark);
if (_readyList == null)
@@ -279,6 +289,7 @@
_readyList = new List();
}
_readyList.Add(new PreloadData(activityObject, GetDefaultLayer(activityMark)));
+ activityObject.OnCreateWithMark(this, activityMark);
}
}
}
@@ -442,6 +453,10 @@
private ActivityObject CreateItem(ActivityMark activityMark)
{
var activityObject = ActivityObject.Create(activityMark.Id);
+ if (activityObject == null)
+ {
+ return null;
+ }
activityObject.Position = activityMark.Position;
activityObject.VerticalSpeed = activityMark.VerticalSpeed;
activityObject.Altitude = activityMark.Altitude;
diff --git a/DungeonShooting_Godot/src/game/activity/shop/ShopBoss.cs b/DungeonShooting_Godot/src/game/activity/shop/ShopBoss.cs
new file mode 100644
index 0000000..1811b53
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/shop/ShopBoss.cs
@@ -0,0 +1,14 @@
+
+using Godot;
+
+///
+/// 商店老板
+///
+[Tool]
+public partial class ShopBoss : Role
+{
+ public override void OnCreateWithMark(RoomPreinstall roomPreinstall, ActivityMark activityMark)
+ {
+
+ }
+}
\ No newline at end of file