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