diff --git a/DungeonShooting_Godot/project.godot b/DungeonShooting_Godot/project.godot index 0e02609..2f7682e 100644 --- a/DungeonShooting_Godot/project.godot +++ b/DungeonShooting_Godot/project.godot @@ -11,7 +11,7 @@ [application] config/name="枪火地牢" -run/main_scene="res://scene/test/TestLobby.tscn" +run/main_scene="res://scene/Main.tscn" config/features=PackedStringArray("4.2", "C#") config/icon="res://icon.png" diff --git a/DungeonShooting_Godot/scene/Hall.tscn b/DungeonShooting_Godot/scene/Hall.tscn index edfedb8..82cc795 100644 --- a/DungeonShooting_Godot/scene/Hall.tscn +++ b/DungeonShooting_Godot/scene/Hall.tscn @@ -123,7 +123,7 @@ ShowOffset = Vector2(2.08165e-12, 2) CollisionVisible = false -[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="1"] +[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="0"] 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="1"] +[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="0"] 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="1"] +[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="0"] 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="1"] +[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="0"] position = Vector2(-2, -13) texture = ExtResource("8_u3vry") -[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="2"] +[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="1"] position = Vector2(18, -11) texture = ExtResource("9_lhdr8") -[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="3"] +[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="2"] position = Vector2(-16, -2) texture = ExtResource("10_4eqn0") -[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="4"] +[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="3"] 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="1"] +[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="0"] position = Vector2(32, -2) texture = ExtResource("12_agfji") -[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="2"] +[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="1"] 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="1"] +[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="0"] 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="1"] +[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="0"] position = Vector2(-24, -10) texture = ExtResource("15_h7524") -[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="2"] +[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="1"] position = Vector2(1, -10) texture = ExtResource("15_h7524") -[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="3"] +[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="2"] 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="1"] +[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="0"] 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="1"] +[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="0"] position = Vector2(-23, -7) texture = ExtResource("16_xj0e1") -[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="2"] +[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="1"] position = Vector2(24, -8) texture = ExtResource("17_gwwce") diff --git a/DungeonShooting_Godot/src/framework/map/RandomPool.cs b/DungeonShooting_Godot/src/framework/map/RandomPool.cs index ece110c..78429ad 100644 --- a/DungeonShooting_Godot/src/framework/map/RandomPool.cs +++ b/DungeonShooting_Godot/src/framework/map/RandomPool.cs @@ -54,10 +54,6 @@ { FillBattleRoom(preinstall); } - else if (preinstall.RoomInfo.RoomType == DungeonRoomType.Reward) - { - FillRewardRoom(preinstall); - } } //填充战斗房间 @@ -76,12 +72,12 @@ var weight = new int[] { 15, 2, 1 }; for (var i = 0; i < count; i++) { - var tempWave = GetOrCreateWave(preinstall, World.Random.RandomRangeInt(0, 2)); + var tempWave = preinstall.GetOrCreateWave(World.Random.RandomRangeInt(0, 2)); var index = World.Random.RandomWeight(weight); var activityType = arr[index]; //创建标记 - var mark = CreateMark(activityType, i * 0.3f, preinstall.RoomInfo.ToGlobalPosition(positionArray[i])); + var mark = ActivityMark.CreateMark(activityType, i * 0.3f, preinstall.RoomInfo.ToGlobalPosition(positionArray[i])); if (activityType == ActivityType.Enemy) //敌人 { @@ -109,37 +105,4 @@ tempWave.Add(mark); } } - - //填充奖励房间 - private void FillRewardRoom(RoomPreinstall preinstall) - { - var wave = GetOrCreateWave(preinstall, 0); - var mark = CreateMark(ActivityType.Treasure, 0, preinstall.GetSpecialMark(SpecialMarkType.Box).Position); - mark.Id = "treasure_box0001"; - wave.Add(mark); - } - - private List<ActivityMark> GetOrCreateWave(RoomPreinstall preinstall,int waveIndex) - { - while (preinstall.WaveList.Count <= waveIndex) - { - preinstall.WaveList.Add(new List<ActivityMark>()); - } - - return preinstall.WaveList[waveIndex]; - } - - //创建标记 - private ActivityMark CreateMark(ActivityType activityType, float delayTime, Vector2 pos) - { - var mark = new ActivityMark(); - mark.Attr = new Dictionary<string, string>(); - mark.ActivityType = activityType; - mark.MarkType = SpecialMarkType.Normal; - mark.VerticalSpeed = 0; - mark.Altitude = activityType == ActivityType.Enemy ? 0 : 8; - mark.DelayTime = delayTime; - mark.Position = pos; - return mark; - } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/ActivityMark.cs b/DungeonShooting_Godot/src/framework/map/preinstall/ActivityMark.cs index b1e974b..de5efc9 100644 --- a/DungeonShooting_Godot/src/framework/map/preinstall/ActivityMark.cs +++ b/DungeonShooting_Godot/src/framework/map/preinstall/ActivityMark.cs @@ -37,17 +37,34 @@ /// <summary> /// 物体初始海拔高度 /// </summary> - public int Altitude = 8; + public int Altitude { get; set; } = 8; /// <summary> /// 物体初始纵轴速度 /// </summary> - public float VerticalSpeed = 0; + public float VerticalSpeed { get; set; } = 0; /// <summary> /// 物体类型 /// </summary> public ActivityType ActivityType { get; set; } - + /// <summary> + /// 快速创建标记 + /// </summary> + /// <param name="activityType">物体类型</param> + /// <param name="delayTime">延时时间</param> + /// <param name="pos">位置</param> + public static ActivityMark CreateMark(ActivityType activityType, float delayTime, Vector2 pos) + { + var mark = new ActivityMark(); + mark.Attr = new Dictionary<string, string>(); + mark.ActivityType = activityType; + mark.MarkType = SpecialMarkType.Normal; + mark.VerticalSpeed = 0; + mark.Altitude = activityType == ActivityType.Enemy ? 0 : 8; + mark.DelayTime = delayTime; + mark.Position = pos; + return mark; + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs b/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs index 35ec9f3..e888f8d 100644 --- a/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs +++ b/DungeonShooting_Godot/src/framework/map/preinstall/PreinstallMarkManager.cs @@ -110,7 +110,7 @@ { return "商店老板标记"; } - else if (type == SpecialMarkType.Box) + else if (type == SpecialMarkType.Treasure) { return "奖励箱子标记"; } diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs index d759ea3..7934d2d 100644 --- a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs +++ b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs @@ -113,9 +113,9 @@ { } - else if (markInfo.SpecialMarkType == SpecialMarkType.Box) //奖励宝箱标记 + else if (markInfo.SpecialMarkType == SpecialMarkType.Treasure) //奖励宝箱标记 { - + HandlerBoxMark(world, markInfo, mark); } else { @@ -223,6 +223,16 @@ return false; } + + private void HandlerBoxMark(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<string, string>(); + mark.Position = RoomInfo.ToGlobalPosition(markInfo.Position.AsVector2()); + } private void CheckHasEnemy() { @@ -259,7 +269,7 @@ var activityMarks = WaveList[0]; foreach (var activityMark in activityMarks) { - if (activityMark.MarkType == SpecialMarkType.Normal) + if (activityMark.MarkType == SpecialMarkType.Normal || activityMark.MarkType == SpecialMarkType.Treasure) { var activityObject = CreateItem(activityMark); //初始化属性 @@ -488,6 +498,19 @@ _readyList.Clear(); } } + + /// <summary> + /// 获取或创建指定波数数据 + /// </summary> + public List<ActivityMark> GetOrCreateWave(int waveIndex) + { + while (WaveList.Count <= waveIndex) + { + WaveList.Add(new List<ActivityMark>()); + } + + return WaveList[waveIndex]; + } //初始化物体属性 private void InitAttr(ActivityObject activityObject, ActivityMark activityMark) diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs b/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs index 34d8e5f..8a96abb 100644 --- a/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs +++ b/DungeonShooting_Godot/src/framework/map/preinstall/SpecialMarkType.cs @@ -19,7 +19,7 @@ /// <summary> /// 宝箱房刷新点 /// </summary> - Box, + Treasure, /// <summary> /// 商店房商店老板刷新点 /// </summary> diff --git a/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs b/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs index 472e123..8d14dd4 100644 --- a/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs +++ b/DungeonShooting_Godot/src/framework/map/serialize/room/RoomPreinstallInfo.cs @@ -112,7 +112,7 @@ } else if (roomType == DungeonRoomType.Reward) //奖励房间 { - return SpecialMarkType.Box; + return SpecialMarkType.Treasure; } return SpecialMarkType.Normal; diff --git a/DungeonShooting_Godot/src/game/manager/ResourceManager.cs b/DungeonShooting_Godot/src/game/manager/ResourceManager.cs index a27802a..6df0248 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourceManager.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourceManager.cs @@ -186,7 +186,7 @@ { return LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_BirthMark_png); } - else if (markInfo.SpecialMarkType == SpecialMarkType.Box) //宝箱 + else if (markInfo.SpecialMarkType == SpecialMarkType.Treasure) //宝箱 { return LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_BirthMark_png); }