using DeepCore; using DeepCore.IO; using DeepCore.Reflection; using DeepMMO.Attributes; using DeepMMO.Data; using DeepMMO.Protocol; using System; using System.Collections.Generic; namespace DeepMMO.Server.AreaManager { // /// // /// 寻找一个Area // /// // [ProtocolRoute("*", "AreaManager")] // public class LookingForAreaRequest : Request // { // /// // /// 预期的Area服务地址 // /// // public string expectAreaName; // /// // /// 预期的Area服务地址 // /// // public string expectAreaNode; // /// // /// 预期的场景 // /// // public int expectSceneTemplateID; // /// // /// 预期的具体战斗场景 // /// // public string expectZoneUUID; // } // // [ProtocolRoute("AreaManager", "*")] // public class LookingForAreaResponse : Response // { // /// // /// 返回Area服务地址 // /// // public string areaName; // /// // /// 返回Area服务地址 // /// // public string areaNode; // /// // /// 返回场景UUID // /// // public string zoneUUID; // } //--------------------------------------------------------------------------------- [ProtocolRoute("Area", "AreaManager")] public class RegistAreaRequest : Request { public string areaName; public string areaNode; } [ProtocolRoute("AreaManager", "Area")] public class RegistAreaResponse : Response { } [ProtocolRoute("Area", "AreaManager")] public class AreaStateNotify : Notify { public string areaName; public string areaNode; public long memoryMB; public float cpuPercent; public int zoneCount; public int roleCount; public override string ToString() { return ("AreaStateNotify:" + "\n areaName=" + this.areaName + "\n areaNode=" + this.areaNode + "\n roleCount=" + this.roleCount + "\n zoneCount=" + this.zoneCount + "\n cpuPercent=" + this.cpuPercent + "\n memoryMB=" + this.memoryMB); } } //--------------------------------------------------------------------------------- [ProtocolRoute("Logic", "AreaManager")] public class RoleEnterZoneRequest : Request { /// /// 公会UUID.如果赋值代表单位进公会场景. /// public string guildUUID; /// /// 服务器ID. /// public string serverID; /// /// 服务器组ID. /// public string servergroupID; /// /// 预期的Area服务地址 /// public string expectAreaName; /// /// 预期的Area服务地址 /// public string expectAreaNode; /// /// 预期的场景 /// 如果为空,表示不知道在哪个场景,一般是第一次注册用户 /// public int expectMapTemplateID; /// /// 预期的具体战斗场景 /// 如果为空,表示没有确定的实体场景 /// public string expectZoneUUID; /// /// 自定义玩家groupKey,groupkey相同进同一场景 /// public string roomKey; /// /// 角色 /// public string roleUUID; public string roleSessionName; public string roleSessionNode; public string roleLogicName; public string roleLogicNode; public int roleForce; public int roleUnitTemplateID; public string roleDisplayName; public ZonePosition roleScenePos; public ISerializable LastZoneSaveData; public ISerializable roleData; public string teamID; public string reason; /// /// 预期线. /// public int expectLineIndex; /// /// 上一次的公共场景. /// public int lastPublicMapID; /// /// 上一次的公共场景UUID. /// public string lastPublicMapUUID; /// /// 公共场景坐标. /// public ZonePosition lastPublicPos; /// /// 扩展数据. /// public HashMap ext; } [ProtocolRoute("AreaManager", "Logic")] public class RoleEnterZoneResponse : Response { [MessageCode("重新进入")] public const int CODE_OK_REPLACE = CODE_OK + 1; [MessageCode("场景不存在")] public const int CODE_ZONE_NOT_EXIST = CODE_ERROR + 1; [MessageCode("角色已在场景中")] public const int CODE_ROLE_ALREADY_IN_ZONE = CODE_ERROR + 2; [MessageCode("场景未开放")] public const int CODE_ZONE_NOT_OPEN = CODE_ERROR + 3; [MessageCode("场景已关闭")] public const int CODE_ZONE_CLOSED = CODE_ERROR + 4; [DependOnProperty(nameof(IsSuccess))] public int mapTemplateID; [DependOnProperty(nameof(IsSuccess))] public string zoneUUID; [DependOnProperty(nameof(IsSuccess))] public int zoneTemplateID; [DependOnProperty(nameof(IsSuccess))] public int roleUnitTemplateID; [DependOnProperty(nameof(IsSuccess))] public string roleDisplayName; [DependOnProperty(nameof(IsSuccess))] public ISerializable roleBattleData; [DependOnProperty(nameof(IsSuccess))] public ZonePosition roleScenePos; [DependOnProperty(nameof(IsSuccess))] public string areaName; [DependOnProperty(nameof(IsSuccess))] public string areaNode; [DependOnProperty(nameof(IsSuccess))] public string guildUUID; } //--------------------------------------------------------------------------------- [ProtocolRoute("Logic", "AreaManager")] public class RoleLeaveZoneRequest : Request { public string zoneUUID; public string roleID; public bool keepObject; public string reason; } [ProtocolRoute("AreaManager", "Logic")] public class RoleLeaveZoneResponse : Response { [MessageCode("场景不存在")] public const int CODE_ZONE_NOT_EXIST = CODE_ERROR + 1; [MessageCode("角色不存在")] public const int CODE_ROLE_NOT_EXIST = CODE_ERROR + 2; /// /// 最后存在场景坐标 /// public ZonePosition lastScenePos; public ISerializable expandData; public ISerializable LeaveZoneSaveData; public int curHP; public int curMP; } //--------------------------------------------------------------------------------- [ProtocolRoute("*", "AreaManager -> Area")] public class CreateZoneNodeRequest : Request { public string serverID; public string serverGroupID; public string expectAreaNode; public int mapTemplateID; public string managerZoneUUID; public string reason; public string createRoleID; public string teamID; public string guildUUID; /// /// 自定义玩家roomKey,roomKey相同进同一场景 /// public string roomKey; /// /// 扩展数据. /// public ISerializable expandData; } [ProtocolRoute("Area -> AreaManager", "*")] public class CreateZoneNodeResponse : Response { [MessageCodeAttribute("地图尚未开放!")] public const int CODE_ERROR_MAP_NOT_OPEN = 501; public string zoneUUID; public string areaName; public string areaNode; public int TemplateID; } [ProtocolRoute("*", "AreaManager -> Area")] public class DestoryZoneNodeRequest : Request { public string zoneUUID; public string reason; } [ProtocolRoute("Area -> AreaManager", "*")] public class DestoryZoneNodeResponse : Response { } [ProtocolRoute("Area -> AreaManager", "*")] public class AreaZoneGameOverNotify : Notify { public string zoneUUID; public string reason; } [ProtocolRoute("Area -> AreaManager", "*")] public class AreaZoneDestoryNotify : Notify { public string zoneUUID; public string reason; } //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- [ProtocolRoute("*", "AreaManager")] public class GetAllRoleRequest : Request { } [ProtocolRoute("AreaManager", "*")] public class GetAllRoleResponse : Response { public HashMap uuidMap; } [ProtocolRoute("*", "AreaManager")] public class QueryZoneAreaNameRequest : Request { public string zoneUUID; } [ProtocolRoute("AreaManager", "*")] public class QueryZoneAreaNameResponse : Response { public string areaName; } /// /// 获得场景信息快照. /// [ProtocolRoute("logic", "AreaManager")] public class GetZonesInfoRequest : Request { public string servergroupID; public int mapID; } /// /// 获得场景信息快照. /// [ProtocolRoute("AreaManager", "logic")] public class GetZonesInfoResponse : Response { public List snaps; } [ProtocolRoute("Logic", "AreaManager")] public class GetRolePositionRequest : Request { // public string zoneUUID; public string roleUUID; } [ProtocolRoute("AreaManager", "Logic")] public class GetRolePositionResponse : Response { public int zoneId; public string zoneUUID; public float x; public float y; public float z; public int line; [MessageCode("场景不存在")] public const int CODE_ZONE_NOT_EXIST = CODE_ERROR + 1; [MessageCode("角色不存在")] public const int CODE_ROLE_NOT_EXIST = CODE_ERROR + 2; } [ProtocolRoute("Logic", "AreaManager")] public class RoleNameChangedNotify : Notify { public string roleId; public string newName; } [ProtocolRoute("*", "AreaManager -> Area")] public class BatchCreateZoneLineRequest : Request { public List zoneList; } [ProtocolRoute("Area -> AreaManager", "*")] public class BatchCreateZoneLineResponse : Response { public List zoneList; } /// /// 获得场景信息快照. /// [ProtocolRoute("logic", "AreaManager")] public class GetBatchZonesInfoRequest : Request { public string servergroupID; public List mapIDList; } /// /// 获得场景信息快照. /// [ProtocolRoute("AreaManager", "logic")] public class GetBatchZonesInfoResponse : Response { public HashMap> snapDic; } //当前秘境玩法状态更新通知 [ProtocolRoute("Area -> AreaManager", "*")] public class CurrentSecretPlacePlayTypeUpdateNotify : Notify { public string zoneUUID; public int update; public int playID; //玩法ID } }