using CommonAI.Zone.ZoneEditor; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace XmdsServerEdgeJS { //-------------------------------------------------------------------------------------------------------- #region Exceptions /// /// 副本不存在异常 /// public class InstanceNotExistException : Exception { private string instanceId; private string type; public string InstanceId { get { return instanceId; } } public string Type { get { return type; } } public InstanceNotExistException(string instanceId) { this.type = "InstanceNotExist"; this.instanceId = instanceId; } } /// /// 玩家不存在异常 /// public class PlayerNotExistException : Exception { private string playerId; private string type; public string PlayerId { get { return playerId; } } public string Type { get { return type; } } public PlayerNotExistException(string playerId) { this.type = "PlayerNotExist"; this.playerId = playerId; } } /// /// 玩家已经存在异常 /// public class PlayerHasExistException : Exception { private string playerId; private string type; public string PlayerId { get { return playerId; } } public string Type { get { return type; } } public PlayerHasExistException(string playerId) { this.type = "PlayerHasExist"; this.playerId = playerId; } } #endregion //-------------------------------------------------------------------------------------------------------- public enum EventType { /// /// 玩家发送消息 /// playerSended, /// /// 场景事件 /// areaEvent, /// /// 角色事件 /// playerEvent, /// /// 任务事件 /// taskEvent, } public class UnitInfo { public string type; public uint ObjectId; public int force; public int templateId; public string playerId; public float x; public float y; public string unitType; public string name; } public class XmdsPlayerEnter : XmdsServerNode.Node.PlayerEnterRoomS2R { } //public class ZoneConfig //{ // /// // /// 启动路径 // /// // public string startPath; // /// // /// 资源路径 // /// // public string assetPath; // /// // /// fastStream 端口 // /// // public int fastStreamPort; //} //-------------------------------------------------------------------------------------------------------- #region EdgeData public class EdgeAbilityData { public string Name; public string Type; public EdgeAbilityData(AbilityData ad) { Name = ad.Name; Type = ad.GetType().Name; } } public class EdgePlayerStartAbilityData : EdgeAbilityData { public int START_Force; public int TestActorTemplateID; public int TestActorLevel; public EdgePlayerStartAbilityData(AbilityData ad) : base(ad) { PlayerStartAbilityData data = ad as PlayerStartAbilityData; START_Force = data.START_Force; TestActorTemplateID = data.TestActorTemplateID; TestActorLevel = data.TestActorLevel; } } public class EdgeSpawnUnitAbilityData : EdgeAbilityData { public List UnitTemplates; public List UnitTemplatesID; public int UnitLevel; public int StartTimeDelayMS; public int IntervalMS = 5000; public int OnceCount = 5; public int TotalLimit; public int AliveLimit; public bool WithoutAlive; public int Force; public string UnitTag; public string UnitName; public string StartPointName; public EdgeSpawnUnitAbilityData(AbilityData ad) : base(ad) { SpawnUnitAbilityData data = ad as SpawnUnitAbilityData; UnitTemplates = new List(data.UnitTemplates); UnitTemplatesID = new List(data.UnitTemplatesID); UnitLevel = data.UnitLevel; StartTimeDelayMS = data.StartTimeDelayMS; IntervalMS = data.IntervalMS; OnceCount = data.OnceCount; TotalLimit = data.TotalLimit; AliveLimit = data.AliveLimit; WithoutAlive = data.WithoutAlive; Force = data.GetForce(); UnitTag = data.UnitTag; UnitName = data.UnitName; StartPointName = data.StartPointName; } } public class EdgeUnitTransportAbilityData : EdgeAbilityData { public string NextPosition; public int AcceptUnitType; public bool AcceptUnitTypeForAll; public int AcceptForce; public bool AcceptForceForAll; public EdgeUnitTransportAbilityData(AbilityData ad) : base(ad) { UnitTransportAbilityData data = ad as UnitTransportAbilityData; NextPosition = data.NextPosition; AcceptUnitType = (int)data.AcceptUnitType; AcceptUnitTypeForAll = data.AcceptUnitTypeForAll; AcceptForce = data.AcceptForce; AcceptForceForAll = data.AcceptForceForAll; } } public class EdgeSceneTransportAbilityData : EdgeAbilityData { public int NextSceneID; public string NextScenePosition; public EdgeSceneTransportAbilityData(AbilityData ad) : base(ad) { SceneTransportAbilityData data = ad as SceneTransportAbilityData; NextSceneID = data.NextSceneID; NextScenePosition = data.NextScenePosition; } } public class EdgeSpawnItemAbilityData : EdgeAbilityData { public List ItemTemplates; public int StartTimeDelayMS; public int IntervalMS; public int OnceCount; public int TotalLimit; public int AliveLimit; public bool WithoutAlive; public int Force; public string UnitTag; public string UnitName; public EdgeSpawnItemAbilityData(AbilityData ad) : base(ad) { SpawnItemAbilityData data = ad as SpawnItemAbilityData; ItemTemplates = new List(data.ItemTemplates); StartTimeDelayMS = data.StartTimeDelayMS; IntervalMS = data.IntervalMS; OnceCount = data.OnceCount; TotalLimit = data.TotalLimit; AliveLimit = data.AliveLimit; WithoutAlive = data.WithoutAlive; Force = data.Force; UnitTag = data.UnitTag; UnitName = data.UnitName; } } public class EdgeSceneObjectData { public string Name; public string Alias; public float X; public float Y; public string SavePath; public int Color; public List Abilities = new List(); public List Attributes; public bool Enable; public string Script; public EdgeSceneObjectData(SceneObjectData data) { Name = data.Name; Alias = data.Alias; X = data.X; Y = data.Y; SavePath = data.SavePath; Color = data.Color; foreach (AbilityData ad in data.GetAbilities()) { EdgeAbilityData edgeAd = EdgeSceneData.ConvertToEdgeAbilityData(ad); if (edgeAd != null) { Abilities.Add(edgeAd); } } if (data.Attributes != null) { Attributes = new List(data.Attributes); } else { Attributes = new List(); } Enable = data.Enable; Script = data.Script; } } public class EdgeRegionData : EdgeSceneObjectData { public int RegionType; public float W; public float H; public EdgeRegionData(RegionData data) : base(data) { RegionType = (int)data.RegionType; W = data.W; H = data.H; } } public class EdgePointData : EdgeSceneObjectData { public List NextNames; public EdgePointData(PointData data) : base(data) { NextNames = new List(data.NextNames); } } public class EdgeDecorationData : EdgeSceneObjectData { public string AnimName; public bool Blockable; public int BlockValue; public float Direction; public float GridSizeH; public float GridSizeW; public float H; public float Height; public int RegionType; public string ResourceID; public string ResourceID_Disabled; public string ResourceID_Enabled; public float Scale; public string SoundAmbient; public float W; public EdgeDecorationData(DecorationData data) : base(data) { AnimName = data.AnimName; Blockable = data.Blockable; BlockValue = data.BlockValue; Direction = data.Direction; GridSizeH = data.GridSizeH; GridSizeW = data.GridSizeW; H = data.H; Height = data.Height; RegionType = (int)data.RegionType; ResourceID = data.ResourceID; ResourceID_Disabled = data.ResourceID_Disabled; ResourceID_Enabled = data.ResourceID_Enabled; Scale = data.Scale; SoundAmbient = data.SoundAmbient; W = data.W; } } public class EdgeUnitData : EdgeSceneObjectData { public float Direction; public byte Force; public float Scale; public string StartPointName; public int UnitLevel; public string UnitTag; public int UnitTemplateID; public EdgeUnitData(UnitData data) : base(data) { Direction = data.Direction; Force = data.Force; Scale = data.Scale; StartPointName = data.StartPointName; UnitLevel = data.UnitLevel; UnitTag = data.UnitTag; UnitTemplateID = data.UnitTemplateID; } } public class EdgeItemData : EdgeSceneObjectData { public float Direction; public byte Force; public int ItemTemplateID; public EdgeItemData(ItemData data) : base(data) { Direction = data.Direction; Force = data.Force; ItemTemplateID = data.ItemTemplateID; } } public class EdgeSceneData { public int TemplateID; public int ID; public string FileName; public string BGM; public int TotalTimeLimitSEC; public string ResourceProperty; public string Name; public string Desc; public List Attributes; public int MaxPlayer; public int MaxUnit; public int DefaultUnitLevel; public List Points = new List(); public List Regions = new List(); public List Decorations = new List(); public List Units = new List(); public List Items = new List(); public List Abilities = new List(); public static EdgeAbilityData ConvertToEdgeAbilityData(AbilityData ad) { EdgeAbilityData edgeAd = null; if (ad is PlayerStartAbilityData) { edgeAd = new EdgePlayerStartAbilityData(ad); } else if (ad is SpawnUnitAbilityData) { edgeAd = new EdgeSpawnUnitAbilityData(ad); } else if (ad is UnitTransportAbilityData) { edgeAd = new EdgeUnitTransportAbilityData(ad); } else if (ad is SceneTransportAbilityData) { edgeAd = new EdgeSceneTransportAbilityData(ad); } else if (ad is SpawnItemAbilityData) { edgeAd = new EdgeSpawnItemAbilityData(ad); } return edgeAd; } public EdgeSceneData(SceneData data) { TemplateID = data.TemplateID; ID = data.ID; FileName = data.FileName; BGM = data.BGM; TotalTimeLimitSEC = data.TotalTimeLimitSEC; ResourceProperty = data.ResourceProperty; Name = data.Name; Desc = data.Desc; if (data.Attributes != null) { Attributes = new List(data.Attributes); } else { Attributes = new List(); } MaxPlayer = data.MaxPlayer; MaxUnit = data.MaxUnit; DefaultUnitLevel = data.DefaultUnitLevel; foreach (PointData pd in data.Points) { Points.Add(new EdgePointData(pd)); } foreach (RegionData rd in data.Regions) { Regions.Add(new EdgeRegionData(rd)); } foreach (DecorationData rd in data.Decorations) { Decorations.Add(new EdgeDecorationData(rd)); } foreach (UnitData rd in data.Units) { Units.Add(new EdgeUnitData(rd)); } foreach (ItemData rd in data.Items) { Items.Add(new EdgeItemData(rd)); } foreach (AbilityData ad in data.Abilities) { EdgeAbilityData edgeAd = ConvertToEdgeAbilityData(ad); if (edgeAd != null) { Abilities.Add(edgeAd); } } } #endregion //-------------------------------------------------------------------------------------------------------- } }