diff --git a/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs b/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs index 9d5a950..10ccbeb 100644 --- a/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs +++ b/DungeonShooting_Godot/addons/dungeonShooting_plugin/Plugin.cs @@ -45,27 +45,16 @@ { RemoveCustomType("ActivityObjectTemplate"); RemoveCustomType("DungeonRoomTemplate"); + RemoveCustomType("ActivityMark"); + RemoveCustomType("EnemyMark"); + RemoveCustomType("WeaponMark"); + if (dock != null) { RemoveControlFromDocks(dock); dock.Free(); } } - - /*public override bool Handles(Object @object) - { - if (@object is Node node) - { - node. - GD.Print("node: " + (node.GetScript() == activityObjectTemplateScript)); - /*GD.Print("---------------------- 1: " + objectTemplate.Name); - var sp = new Sprite2D(); - sp.Name = "Sprite2D"; - objectTemplate.AddChild(sp); - sp.Owner = objectTemplate.Owner;#1# - } - return base.Handles(@object); - }*/ } } diff --git a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs index d3a167e..d41dc9f 100644 --- a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs +++ b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs @@ -31,6 +31,12 @@ /// [Export] public int WaveNumber = 1; + + /// + /// 延时执行时间,单位:秒 + /// + [Export] + public float DelayTime = 0; /// /// 绘制的颜色 @@ -46,18 +52,34 @@ } /// + /// 标记准备好了 + /// + public void BeReady(RoomInfo roomInfo) + { + OnBeReady(roomInfo); + } + + /// /// 调用该函数表示该标记可以生成物体了, 使用标记创建实例必须调用 CreateInstance(id) /// - public virtual void BeReady(RoomInfo roomInfo) + public virtual void OnBeReady(RoomInfo roomInfo) { - var instance = ActivityObject.Create(GetItemId()); - instance.PutDown(GlobalPosition, Layer); + CreateInstance(GetItemId()); Visible = false; } + /// + /// 创建实例,并放入场景中,使用标记创建实例必须调用 CreateInstance(id) + /// protected T CreateInstance(string id) where T : ActivityObject { - return default; + var instance = ActivityObject.Create(id); + instance.PutDown(GlobalPosition, Layer); + if (instance is Enemy) + { + + } + return instance; } public override void _Draw() diff --git a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs index 7c8dba4..6175083 100644 --- a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs +++ b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs @@ -55,7 +55,7 @@ Layer = RoomLayerEnum.YSortLayer; } - public override void BeReady(RoomInfo roomInfo) + public override void OnBeReady(RoomInfo roomInfo) { var pos = GlobalPosition; //创建敌人 diff --git a/DungeonShooting_Godot/src/framework/map/mark/WeaponMark.cs b/DungeonShooting_Godot/src/framework/map/mark/WeaponMark.cs index 7d2d3bd..4bd95da 100644 --- a/DungeonShooting_Godot/src/framework/map/mark/WeaponMark.cs +++ b/DungeonShooting_Godot/src/framework/map/mark/WeaponMark.cs @@ -26,7 +26,7 @@ Layer = RoomLayerEnum.NormalLayer; } - public override void BeReady(RoomInfo roomInfo) + public override void OnBeReady(RoomInfo roomInfo) { //创建武器 var instance = ActivityObject.Create(GetItemId());