diff --git a/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs b/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs
index 36cde46..649704a 100644
--- a/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs
+++ b/DungeonShooting_Godot/src/framework/map/DungeonRoomTemplate.cs
@@ -27,7 +27,7 @@
///
/// 是否启用编辑模式
///
- [Export(PropertyHint.None, "是否启用编辑模式")]
+ [Export]
public bool EnableEdit = false;
#if TOOLS
diff --git a/DungeonShooting_Godot/src/framework/map/RoomInfo.cs b/DungeonShooting_Godot/src/framework/map/RoomInfo.cs
index c96b5f0..a0437b1 100644
--- a/DungeonShooting_Godot/src/framework/map/RoomInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/RoomInfo.cs
@@ -64,6 +64,7 @@
public bool IsSeclusion { get; private set; } = false;
private bool _waveStart = false;
+ private int _currWaveIndex = 0;
private int _currWaveNumber = 0;
///
@@ -124,7 +125,7 @@
///
public void BeReady()
{
- //没有标记, 不需要关门
+ //没有标记, 啥都不要做
if (ActivityMarks.Count == 0)
{
return;
@@ -149,13 +150,15 @@
///
/// 执行下一轮标记
///
- public void NextWave()
+ private void NextWave()
{
if (!_waveStart)
{
-
+ _waveStart = true;
+ _currWaveIndex = 0;
+ _currWaveNumber = ActivityMarks[0].WaveNumber;
}
-
+
//根据标记生成对象
foreach (var mark in ActivityMarks)
{
diff --git a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
index d41dc9f..0ea9181 100644
--- a/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
+++ b/DungeonShooting_Godot/src/framework/map/mark/ActivityMark.cs
@@ -43,6 +43,11 @@
///
protected Color DrawColor = new Color(0.4F, 0.56078434F, 0.8784314F);
+ //是否已经开始
+ private bool _isStart = false;
+ private float _timer = 0;
+ private RoomInfo _tempRoom;
+
///
/// 获取物体Id
///
@@ -51,18 +56,50 @@
return ActivityIdPrefix.GetNameByPrefixType(Type) + ItemId;
}
+ public override void _Process(double delta)
+ {
+ if (_isStart && DelayTime > 0)
+ {
+ _timer += (float)delta;
+ if (_timer >= DelayTime)
+ {
+ Doing(_tempRoom);
+ _tempRoom = null;
+ _isStart = false;
+ }
+ }
+ }
+
///
/// 标记准备好了
///
public void BeReady(RoomInfo roomInfo)
{
- OnBeReady(roomInfo);
+ _isStart = true;
+ if (DelayTime <= 0)
+ {
+ Doing(roomInfo);
+ _isStart = false;
+ }
+ else
+ {
+ _timer = 0;
+ _tempRoom = roomInfo;
+ }
+ }
+
+ ///
+ /// 是否已经结束
+ ///
+ public bool IsOver()
+ {
+ return !_isStart;
}
///
/// 调用该函数表示该标记可以生成物体了, 使用标记创建实例必须调用 CreateInstance(id)
///
- public virtual void OnBeReady(RoomInfo roomInfo)
+ public virtual void Doing(RoomInfo roomInfo)
{
CreateInstance(GetItemId());
Visible = false;
diff --git a/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs b/DungeonShooting_Godot/src/framework/map/mark/EnemyMark.cs
index 6175083..10309cd 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 OnBeReady(RoomInfo roomInfo)
+ public override void Doing(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 4bd95da..915b6c1 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 OnBeReady(RoomInfo roomInfo)
+ public override void Doing(RoomInfo roomInfo)
{
//创建武器
var instance = ActivityObject.Create(GetItemId());