|
@@ -10,7 +10,9 @@ using System;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text.RegularExpressions;
|
|
|
+using UnityEngine;
|
|
|
using XmdsCommon.Message;
|
|
|
+using XmdsCommon.Plugin;
|
|
|
|
|
|
namespace ET
|
|
|
{
|
|
@@ -20,7 +22,7 @@ namespace ET
|
|
|
public ZoneLayer Layer;
|
|
|
|
|
|
private readonly MemoryStream writeBuffer = new MemoryStream(2048);
|
|
|
- private EventDispatcher<Event> eventHandler;
|
|
|
+ private EventDispatcher<CommonAI.Zone.Event> eventHandler;
|
|
|
private static CommonLang.Geometry.Vector3 vecTemp = new();
|
|
|
private HashMap<int, BattleUnit> UnitTemplateIdHash = new();
|
|
|
|
|
@@ -36,13 +38,13 @@ namespace ET
|
|
|
Layer.ObjectEnter += LayerEvent_ObjectEnter;
|
|
|
Layer.ObjectLeave += LayerEvent_ObjectLeave;
|
|
|
Layer.MessageReceived += (ZoneLayer _, CommonLang.Protocol.IMessage msg) => {
|
|
|
- if (msg is SyncPosEvent || msg is UnitForceSyncPosEvent || msg is LaunchSkill || msg is AddSpellEvent || msg is RemoveObjectEvent || msg is AddUnitEvent || msg is PlayerFocuseTargetEvent || msg is UnitFieldChangedEvent || msg is UnitEffectEvent || msg is UnitLaunchSkillEvent || msg is PlayerSkillStopEvent || msg is UnitHitEvent || msg is UnitLaunchBuffEvent)
|
|
|
+ /*if (msg is SyncPosEvent || msg is UnitForceSyncPosEvent || msg is LaunchSkill || msg is AddSpellEvent || msg is RemoveObjectEvent || msg is AddUnitEvent || msg is PlayerFocuseTargetEvent || msg is UnitFieldChangedEvent || msg is UnitEffectEvent || msg is UnitLaunchSkillEvent || msg is PlayerSkillStopEvent || msg is UnitHitEvent || msg is UnitLaunchBuffEvent)
|
|
|
{ }
|
|
|
else
|
|
|
{
|
|
|
Log.Debug($"<<<BattleEvent: {msg}");
|
|
|
- }
|
|
|
- eventHandler.Notify(msg as Event);
|
|
|
+ }*/
|
|
|
+ eventHandler.Notify(msg as CommonAI.Zone.Event);
|
|
|
};
|
|
|
Layer.DecorationChanged += (ZoneLayer _, ZoneEditorDecoration ed) => {
|
|
|
Log.Error("not implements: DecorationChanged");
|
|
@@ -55,6 +57,28 @@ namespace ET
|
|
|
Layer.BeginUpdate(timeMS);
|
|
|
Layer.Update();
|
|
|
this.doUpdate();
|
|
|
+
|
|
|
+ KeyboardCheckUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void KeyboardCheckUpdate()
|
|
|
+ {
|
|
|
+ if(Input.GetKeyDown(KeyCode.F1))
|
|
|
+ {
|
|
|
+ EventSystem.Instance.Publish(BattleFunc.Static.Clone(2));
|
|
|
+ }
|
|
|
+ else if(Input.GetKeyDown(KeyCode.F2))
|
|
|
+ {
|
|
|
+ EventSystem.Instance.Publish(BattleFunc.Static.Clone(4));
|
|
|
+ }
|
|
|
+ else if (Input.GetKeyDown(KeyCode.F3))
|
|
|
+ {
|
|
|
+ EventSystem.Instance.Publish(BattleFunc.Static.Clone(5));
|
|
|
+ }
|
|
|
+ else if (Input.GetKeyDown(KeyCode.F4))
|
|
|
+ {
|
|
|
+ EventSystem.Instance.Publish(BattleFunc.Static.Clone(3));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//ILayerClient接口实现,供layer层调用
|
|
@@ -101,6 +125,7 @@ namespace ET
|
|
|
Log.Debug($"OnLayerInit- scene template ID:{layer.Data.ID}");
|
|
|
}
|
|
|
|
|
|
+ bool bFirstEnemy = true;
|
|
|
//单位进入战斗
|
|
|
protected void LayerEvent_ObjectEnter(ZoneLayer layer, ZoneObject obj)
|
|
|
{
|
|
@@ -127,7 +152,15 @@ namespace ET
|
|
|
UnitTemplateIdHash.Add(tid, bu);
|
|
|
}
|
|
|
|
|
|
- Log.Debug($"OnObjectEnter: {bu.ZUnit.TemplateID}@{obj.ObjectID}");
|
|
|
+ //Log.Debug($"OnObjectEnter: {bu.ZUnit.TemplateID}@{obj.ObjectID}");
|
|
|
+ if(bFirstEnemy && bu.ZUnit.Info.Properties is XmdsUnitProperties prop)
|
|
|
+ {
|
|
|
+ if (prop.GameStatusType == XmdsUnitProperties.StatusType.SpecialBoss)
|
|
|
+ {
|
|
|
+ bFirstEnemy = false;
|
|
|
+ EventSystem.Instance.Publish(BattleMsgEvent.Static.Clone("发现怪兽来袭,宝宝们一起来守护家园吧!"));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -189,7 +222,7 @@ namespace ET
|
|
|
eventHandler.AddListener<UnitDeadEvent>((ev) =>
|
|
|
{
|
|
|
var e = ev as UnitDeadEvent;
|
|
|
- Log.Debug($"Unit({e.object_id}) dead");
|
|
|
+ //Log.Debug($"Unit({e.object_id}) dead");
|
|
|
|
|
|
var unit = UnitMgr.Instance.GetUnit(e.ObjectID);
|
|
|
if(unit != null && unit is BattleUnit bunit)
|
|
@@ -218,6 +251,18 @@ namespace ET
|
|
|
vecTemp.Set(unit.ZoneObject.X, unit.ZoneObject.Y, unit.ZoneObject.Z);
|
|
|
EventSystem.Instance.Publish(PlayEffectEvent.Static.Clone(launcheffect, unit.Id, vecTemp));
|
|
|
}
|
|
|
+
|
|
|
+ if (bunit.ZUnit.Info.Properties is XmdsUnitProperties prop)
|
|
|
+ {
|
|
|
+ if (prop.GameStatusType == XmdsUnitProperties.StatusType.SpecialBoss)
|
|
|
+ {
|
|
|
+ EventSystem.Instance.Publish(BattleMsgEvent.Static.Clone("花园宝宝因抵挡不住怪物致命一击,失去了所有能量"));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ EventSystem.Instance.Publish(BattleMsgEvent.Static.Clone("怪兽‘蝙蝠侠’,在众宝宝的合力攻击下,倒地不起"));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
eventHandler.AddListener<UnitRebirthEvent>((ev) =>
|
|
@@ -250,8 +295,8 @@ namespace ET
|
|
|
var sender = UnitMgr.Instance.GetUnit(e.senderId);
|
|
|
if (sender != null)
|
|
|
{
|
|
|
- Vector3 difpos = new Vector3(unit.ZoneObject.X, unit.ZoneObject.Y, 0) - new Vector3(sender.ZoneObject.X, sender.ZoneObject.Y, 0);
|
|
|
- roation = (float)-Math.Atan2(-difpos.Y, difpos.X);
|
|
|
+ UnityEngine.Vector3 difpos = new UnityEngine.Vector3(unit.ZoneObject.X, unit.ZoneObject.Y, 0) - new UnityEngine.Vector3(sender.ZoneObject.X, sender.ZoneObject.Y, 0);
|
|
|
+ roation = (float)-Math.Atan2(-difpos.y, difpos.x);
|
|
|
}
|
|
|
}
|
|
|
if (hitEffect.BindBody)
|
|
@@ -336,7 +381,7 @@ namespace ET
|
|
|
SyncFlagsEvent
|
|
|
ChangeBGMEvent
|
|
|
PlayDestoryEffect*/
|
|
|
- /*var e = msg as CommonAI.Zone.Event;
|
|
|
+ /*var e = msg as CommonAI.Zone.CommonAI.Zone.Event;
|
|
|
if (e is ChatEvent)
|
|
|
{
|
|
|
var evt = (e as ChatEvent);
|
|
@@ -390,7 +435,7 @@ namespace ET
|
|
|
result = (dic["MsgContent"] as string);
|
|
|
}
|
|
|
//
|
|
|
- EventManager.Fire("Event.OnEventHandler.star", new Dictionary<string, string>() {
|
|
|
+ EventManager.Fire("CommonAI.Zone.Event.OnEventHandler.star", new Dictionary<string, string>() {
|
|
|
{"content", result}, {"keepTime", "" + (evt.KeepTimeMS/1000)}, {"content_is_text", "true"}
|
|
|
});
|
|
|
}
|
|
@@ -448,7 +493,7 @@ namespace ET
|
|
|
else
|
|
|
{
|
|
|
//普通chatevent
|
|
|
- EventManager.Fire("Event.OnEventHandler.star", new Dictionary<string, string>() {
|
|
|
+ EventManager.Fire("CommonAI.Zone.Event.OnEventHandler.star", new Dictionary<string, string>() {
|
|
|
{"content", msg}, {"isImportant", "1"}, {"keepTime", "" + (evt.KeepTimeMS/1000)}
|
|
|
});
|
|
|
}
|