diff --git a/DungeonShooting_Godot/excel/ActivityBase.xlsx b/DungeonShooting_Godot/excel/ActivityBase.xlsx index 46b0ef1..22fe5c6 100644 --- a/DungeonShooting_Godot/excel/ActivityBase.xlsx +++ b/DungeonShooting_Godot/excel/ActivityBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/resource/config/ActivePropBase.json b/DungeonShooting_Godot/resource/config/ActivePropBase.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/DungeonShooting_Godot/resource/config/ActivePropBase.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json index d4f5913..d3b4456 100644 --- a/DungeonShooting_Godot/resource/config/ActivityBase.json +++ b/DungeonShooting_Godot/resource/config/ActivityBase.json @@ -457,7 +457,7 @@ "Details": "\u63D0\u9AD8\u89D2\u8272\u7684\u57FA\u7840\u79FB\u52A8\u901F\u5EA6", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0001.png", "ShowInMapEditor": true }, @@ -471,7 +471,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0002.png", "ShowInMapEditor": true }, @@ -485,7 +485,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0003.png", "ShowInMapEditor": true }, @@ -499,7 +499,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0004.png", "ShowInMapEditor": true }, @@ -513,7 +513,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0005.png", "ShowInMapEditor": true }, @@ -527,7 +527,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0006.png", "ShowInMapEditor": true }, @@ -541,7 +541,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0007.png", "ShowInMapEditor": true }, @@ -555,7 +555,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0008.png", "ShowInMapEditor": true }, @@ -569,7 +569,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0009.png", "ShowInMapEditor": true }, @@ -583,7 +583,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0010.png", "ShowInMapEditor": true }, @@ -597,7 +597,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0011.png", "ShowInMapEditor": true }, @@ -611,7 +611,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0012.png", "ShowInMapEditor": true }, @@ -625,7 +625,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0013.png", "ShowInMapEditor": true }, @@ -639,7 +639,7 @@ "Details": "", "IsStatic": false, "__Material": "", - "Prefab": "res://prefab/prop/BuffActivity.tscn", + "Prefab": "res://prefab/prop/BuffProp.tscn", "Icon": "res://resource/sprite/prop/buff/BuffProp0014.png", "ShowInMapEditor": true }, diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json index 092a429..fc094ec 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json +++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json @@ -1 +1 @@ -[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":73,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-72,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]}]]}] \ No newline at end of file +[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":73,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-72,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-67,"Y":50},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-91,"Y":46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-92,"Y":74},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]}]]}] \ No newline at end of file diff --git a/DungeonShooting_Godot/src/config/ExcelConfig.cs b/DungeonShooting_Godot/src/config/ExcelConfig.cs index 9a8c7b2..42d5e0a 100644 --- a/DungeonShooting_Godot/src/config/ExcelConfig.cs +++ b/DungeonShooting_Godot/src/config/ExcelConfig.cs @@ -8,13 +8,31 @@ public static partial class ExcelConfig { /// - /// ActivityBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 + /// BuffPropBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 /// - public static List ActivityBase_List { get; private set; } + public static List BuffPropBase_List { get; private set; } /// - /// ActivityBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id + /// BuffPropBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id /// - public static Dictionary ActivityBase_Map { get; private set; } + public static Dictionary BuffPropBase_Map { get; private set; } + + /// + /// Sound.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 + /// + public static List Sound_List { get; private set; } + /// + /// Sound.xlsx表数据集合, 里 Map 形式存储, key 为 Id + /// + public static Dictionary Sound_Map { get; private set; } + + /// + /// WeaponBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 + /// + public static List WeaponBase_List { get; private set; } + /// + /// WeaponBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id + /// + public static Dictionary WeaponBase_Map { get; private set; } /// /// ActivityMaterial.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 @@ -35,15 +53,6 @@ public static Dictionary AiAttackAttr_Map { get; private set; } /// - /// BuffPropBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 - /// - public static List BuffPropBase_List { get; private set; } - /// - /// BuffPropBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id - /// - public static Dictionary BuffPropBase_Map { get; private set; } - - /// /// BulletBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 /// public static List BulletBase_List { get; private set; } @@ -53,6 +62,15 @@ public static Dictionary BulletBase_Map { get; private set; } /// + /// ActivePropBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 + /// + public static List ActivePropBase_List { get; private set; } + /// + /// ActivePropBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id + /// + public static Dictionary ActivePropBase_Map { get; private set; } + + /// /// EnemyBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 /// public static List EnemyBase_List { get; private set; } @@ -62,6 +80,15 @@ public static Dictionary EnemyBase_Map { get; private set; } /// + /// ActivityBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 + /// + public static List ActivityBase_List { get; private set; } + /// + /// ActivityBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id + /// + public static Dictionary ActivityBase_Map { get; private set; } + + /// /// LiquidMaterial.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 /// public static List LiquidMaterial_List { get; private set; } @@ -70,24 +97,6 @@ /// public static Dictionary LiquidMaterial_Map { get; private set; } - /// - /// Sound.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 - /// - public static List Sound_List { get; private set; } - /// - /// Sound.xlsx表数据集合, 里 Map 形式存储, key 为 Id - /// - public static Dictionary Sound_Map { get; private set; } - - /// - /// WeaponBase.xlsx表数据集合, 以 List 形式存储, 数据顺序与 Excel 表相同 - /// - public static List WeaponBase_List { get; private set; } - /// - /// WeaponBase.xlsx表数据集合, 里 Map 形式存储, key 为 Id - /// - public static Dictionary WeaponBase_Map { get; private set; } - private static bool _init = false; /// @@ -98,74 +107,22 @@ if (_init) return; _init = true; - _InitActivityBaseConfig(); - _InitActivityMaterialConfig(); - _InitAiAttackAttrConfig(); _InitBuffPropBaseConfig(); - _InitBulletBaseConfig(); - _InitEnemyBaseConfig(); - _InitLiquidMaterialConfig(); _InitSoundConfig(); _InitWeaponBaseConfig(); + _InitActivityMaterialConfig(); + _InitAiAttackAttrConfig(); + _InitBulletBaseConfig(); + _InitActivePropBaseConfig(); + _InitEnemyBaseConfig(); + _InitActivityBaseConfig(); + _InitLiquidMaterialConfig(); - _InitActivityBaseRef(); _InitBuffPropBaseRef(); - _InitEnemyBaseRef(); _InitWeaponBaseRef(); - } - private static void _InitActivityBaseConfig() - { - try - { - var text = _ReadConfigAsText("res://resource/config/ActivityBase.json"); - ActivityBase_List = new List(JsonSerializer.Deserialize>(text)); - ActivityBase_Map = new Dictionary(); - foreach (var item in ActivityBase_List) - { - ActivityBase_Map.Add(item.Id, item); - } - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化表'ActivityBase'失败!"); - } - } - private static void _InitActivityMaterialConfig() - { - try - { - var text = _ReadConfigAsText("res://resource/config/ActivityMaterial.json"); - ActivityMaterial_List = JsonSerializer.Deserialize>(text); - ActivityMaterial_Map = new Dictionary(); - foreach (var item in ActivityMaterial_List) - { - ActivityMaterial_Map.Add(item.Id, item); - } - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化表'ActivityMaterial'失败!"); - } - } - private static void _InitAiAttackAttrConfig() - { - try - { - var text = _ReadConfigAsText("res://resource/config/AiAttackAttr.json"); - AiAttackAttr_List = JsonSerializer.Deserialize>(text); - AiAttackAttr_Map = new Dictionary(); - foreach (var item in AiAttackAttr_List) - { - AiAttackAttr_Map.Add(item.Id, item); - } - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化表'AiAttackAttr'失败!"); - } + _InitActivePropBaseRef(); + _InitEnemyBaseRef(); + _InitActivityBaseRef(); } private static void _InitBuffPropBaseConfig() { @@ -185,60 +142,6 @@ throw new Exception("初始化表'BuffPropBase'失败!"); } } - private static void _InitBulletBaseConfig() - { - try - { - var text = _ReadConfigAsText("res://resource/config/BulletBase.json"); - BulletBase_List = JsonSerializer.Deserialize>(text); - BulletBase_Map = new Dictionary(); - foreach (var item in BulletBase_List) - { - BulletBase_Map.Add(item.Id, item); - } - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化表'BulletBase'失败!"); - } - } - private static void _InitEnemyBaseConfig() - { - try - { - var text = _ReadConfigAsText("res://resource/config/EnemyBase.json"); - EnemyBase_List = new List(JsonSerializer.Deserialize>(text)); - EnemyBase_Map = new Dictionary(); - foreach (var item in EnemyBase_List) - { - EnemyBase_Map.Add(item.Id, item); - } - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化表'EnemyBase'失败!"); - } - } - private static void _InitLiquidMaterialConfig() - { - try - { - var text = _ReadConfigAsText("res://resource/config/LiquidMaterial.json"); - LiquidMaterial_List = JsonSerializer.Deserialize>(text); - LiquidMaterial_Map = new Dictionary(); - foreach (var item in LiquidMaterial_List) - { - LiquidMaterial_Map.Add(item.Id, item); - } - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化表'LiquidMaterial'失败!"); - } - } private static void _InitSoundConfig() { try @@ -275,26 +178,133 @@ throw new Exception("初始化表'WeaponBase'失败!"); } } - - private static void _InitActivityBaseRef() + private static void _InitActivityMaterialConfig() { - foreach (Ref_ActivityBase item in ActivityBase_List) + try { - try + var text = _ReadConfigAsText("res://resource/config/ActivityMaterial.json"); + ActivityMaterial_List = JsonSerializer.Deserialize>(text); + ActivityMaterial_Map = new Dictionary(); + foreach (var item in ActivityMaterial_List) { - if (!string.IsNullOrEmpty(item.__Material)) - { - item.Material = ActivityMaterial_Map[item.__Material]; - } - - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化'ActivityBase'引用其他表数据失败, 当前行id: " + item.Id); + ActivityMaterial_Map.Add(item.Id, item); } } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'ActivityMaterial'失败!"); + } } + private static void _InitAiAttackAttrConfig() + { + try + { + var text = _ReadConfigAsText("res://resource/config/AiAttackAttr.json"); + AiAttackAttr_List = JsonSerializer.Deserialize>(text); + AiAttackAttr_Map = new Dictionary(); + foreach (var item in AiAttackAttr_List) + { + AiAttackAttr_Map.Add(item.Id, item); + } + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'AiAttackAttr'失败!"); + } + } + private static void _InitBulletBaseConfig() + { + try + { + var text = _ReadConfigAsText("res://resource/config/BulletBase.json"); + BulletBase_List = JsonSerializer.Deserialize>(text); + BulletBase_Map = new Dictionary(); + foreach (var item in BulletBase_List) + { + BulletBase_Map.Add(item.Id, item); + } + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'BulletBase'失败!"); + } + } + private static void _InitActivePropBaseConfig() + { + try + { + var text = _ReadConfigAsText("res://resource/config/ActivePropBase.json"); + ActivePropBase_List = new List(JsonSerializer.Deserialize>(text)); + ActivePropBase_Map = new Dictionary(); + foreach (var item in ActivePropBase_List) + { + ActivePropBase_Map.Add(item.Id, item); + } + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'ActivePropBase'失败!"); + } + } + private static void _InitEnemyBaseConfig() + { + try + { + var text = _ReadConfigAsText("res://resource/config/EnemyBase.json"); + EnemyBase_List = new List(JsonSerializer.Deserialize>(text)); + EnemyBase_Map = new Dictionary(); + foreach (var item in EnemyBase_List) + { + EnemyBase_Map.Add(item.Id, item); + } + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'EnemyBase'失败!"); + } + } + private static void _InitActivityBaseConfig() + { + try + { + var text = _ReadConfigAsText("res://resource/config/ActivityBase.json"); + ActivityBase_List = new List(JsonSerializer.Deserialize>(text)); + ActivityBase_Map = new Dictionary(); + foreach (var item in ActivityBase_List) + { + ActivityBase_Map.Add(item.Id, item); + } + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'ActivityBase'失败!"); + } + } + private static void _InitLiquidMaterialConfig() + { + try + { + var text = _ReadConfigAsText("res://resource/config/LiquidMaterial.json"); + LiquidMaterial_List = JsonSerializer.Deserialize>(text); + LiquidMaterial_Map = new Dictionary(); + foreach (var item in LiquidMaterial_List) + { + LiquidMaterial_Map.Add(item.Id, item); + } + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化表'LiquidMaterial'失败!"); + } + } + private static void _InitBuffPropBaseRef() { foreach (Ref_BuffPropBase item in BuffPropBase_List) @@ -314,25 +324,6 @@ } } } - private static void _InitEnemyBaseRef() - { - foreach (Ref_EnemyBase item in EnemyBase_List) - { - try - { - if (!string.IsNullOrEmpty(item.__Activity)) - { - item.Activity = ActivityBase_Map[item.__Activity]; - } - - } - catch (Exception e) - { - GD.PrintErr(e.ToString()); - throw new Exception("初始化'EnemyBase'引用其他表数据失败, 当前行id: " + item.Id); - } - } - } private static void _InitWeaponBaseRef() { foreach (Ref_WeaponBase item in WeaponBase_List) @@ -401,6 +392,63 @@ } } } + private static void _InitActivePropBaseRef() + { + foreach (Ref_ActivePropBase item in ActivePropBase_List) + { + try + { + if (!string.IsNullOrEmpty(item.__Activity)) + { + item.Activity = ActivityBase_Map[item.__Activity]; + } + + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化'ActivePropBase'引用其他表数据失败, 当前行id: " + item.Id); + } + } + } + private static void _InitEnemyBaseRef() + { + foreach (Ref_EnemyBase item in EnemyBase_List) + { + try + { + if (!string.IsNullOrEmpty(item.__Activity)) + { + item.Activity = ActivityBase_Map[item.__Activity]; + } + + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化'EnemyBase'引用其他表数据失败, 当前行id: " + item.Id); + } + } + } + private static void _InitActivityBaseRef() + { + foreach (Ref_ActivityBase item in ActivityBase_List) + { + try + { + if (!string.IsNullOrEmpty(item.__Material)) + { + item.Material = ActivityMaterial_Map[item.__Material]; + } + + } + catch (Exception e) + { + GD.PrintErr(e.ToString()); + throw new Exception("初始化'ActivityBase'引用其他表数据失败, 当前行id: " + item.Id); + } + } + } private static string _ReadConfigAsText(string path) { var file = FileAccess.Open(path, FileAccess.ModeFlags.Read); diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_ActivePropBase.cs b/DungeonShooting_Godot/src/config/ExcelConfig_ActivePropBase.cs new file mode 100644 index 0000000..0de39eb --- /dev/null +++ b/DungeonShooting_Godot/src/config/ExcelConfig_ActivePropBase.cs @@ -0,0 +1,69 @@ +using System.Text.Json.Serialization; +using System.Collections.Generic; + +namespace Config; + +public static partial class ExcelConfig +{ + public class ActivePropBase + { + /// + /// Buff Id + /// + [JsonInclude] + public string Id; + + /// + /// 备注 + /// + [JsonInclude] + public string Remark; + + /// + /// 属性绑定Buff实体的Id,这个id时ActivityBase表Id + /// + public ActivityBase Activity; + + /// + /// 被动Buff效果
+ /// 也就是当前buff道具所有挂载的被动属性集合, 具体属性名称请参阅buff属性表
+ /// key为buff属性名称
+ /// value为buff初始化参数 + ///
+ [JsonInclude] + public Dictionary Buff; + + /// + /// 使用完成后是否自动销毁 + /// + [JsonInclude] + public bool AutoDestroy; + + /// + /// 最大叠加次数 + /// + [JsonInclude] + public uint MaxCount; + + /// + /// 返回浅拷贝出的新对象 + /// + public ActivePropBase Clone() + { + var inst = new ActivePropBase(); + inst.Id = Id; + inst.Remark = Remark; + inst.Activity = Activity; + inst.Buff = Buff; + inst.AutoDestroy = AutoDestroy; + inst.MaxCount = MaxCount; + return inst; + } + } + private class Ref_ActivePropBase : ActivePropBase + { + [JsonInclude] + public string __Activity; + + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/World.cs b/DungeonShooting_Godot/src/game/World.cs index 421110e..23d5b30 100644 --- a/DungeonShooting_Godot/src/game/World.cs +++ b/DungeonShooting_Godot/src/game/World.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -75,6 +76,11 @@ /// 随机对象池 ///
public RandomPool RandomPool { get; private set; } + + /// + /// 角色死亡事件 + /// + public event Action OnRoleDieEvent; private bool _pause = false; private List _coroutineList; @@ -166,4 +172,15 @@ Random = random; RandomPool = new RandomPool(this); } + + /// + /// 角色死亡 + /// + public void OnRoleDie(Role role) + { + if (OnRoleDieEvent != null) + { + OnRoleDieEvent(role); + } + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs index b7a454b..f383169 100644 --- a/DungeonShooting_Godot/src/game/activity/role/Role.cs +++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs @@ -1,4 +1,5 @@  +using System; using System.Collections; using System.Collections.Generic; using Config; @@ -10,6 +11,13 @@ public abstract partial class Role : ActivityObject { /// + /// 当前角色对其他角色造成伤害时对回调 + /// 参数1为目标角色 + /// 参数2为造成对伤害值 + /// + public event Action OnDamageEvent; + + /// /// 是否是 Ai /// public bool IsAi { get; protected set; } = false; @@ -839,7 +847,16 @@ // GameApplication.Instance.Node3D.GetRoot().AddChild(blood); } OnHit(target, damage, angle, !flag); - + + if (target is Role targetRole && !targetRole.IsDestroyed) + { + //造成伤害回调 + if (targetRole.OnDamageEvent != null) + { + targetRole.OnDamageEvent(this, damage); + } + } + //受伤特效 PlayHitAnimation(); @@ -851,6 +868,8 @@ { IsDie = true; OnDie(); + //死亡事件 + World.OnRoleDie(this); } } }