using DeepCore; using DeepCore.IO; using DeepCore.ORM; using DeepMMO.Data; using System; using System.Collections.Generic; namespace DeepMMO.Server.Logic { /// /// 角色完整数据 /// [PersistType] public class ServerRoleData : ISerializable, IObjectMapping { //------------------------------------------------ /// /// 服务器ID. /// [PersistField] public string server_id; //------------------------------------------------ [PersistField] public string uuid; [PersistField] public string digitID; [PersistField] public string name; [PersistField] public string account_uuid; [PersistField] public int role_template_id; [PersistField] public int unit_template_id; //------------------------------------------------ /// zh_CN, zh_TW, en_US [PersistField] public string local_code = "zh_CN"; //------------------------------------------------ [PersistField] public int Level; [PersistField] public DateTime create_time; [PersistField] public DateTime last_login_time; [PersistField] public DateTime last_logout_time; //------------------------------------------------ /// /// 用户权限 /// [PersistField] public RolePrivilege privilege = RolePrivilege.User_Player; //------------------------------------------------ #region area /// /// 最后场景服务地址 /// [PersistField] public string last_area_name; [PersistField] public string last_area_node; /// /// 最后存在场景UUID /// [PersistField] public string last_zone_uuid; /// /// 最后存在地图模板 /// [PersistField] public int last_map_template_id; /// /// 最后存在场景坐标 /// [PersistField] public ZonePosition last_zone_pos; /// /// 最后存在场景存储数据,用于跨场景存储一些状态,比如BUFF /// [PersistField] public ISerializable last_zone_saved; /// /// 最近一次公共场景实例ID. /// [PersistField] public string last_public_area_uuid; /// /// 上一次公共场景地图ID. /// [PersistField] public int last_public_mapID; /// /// 上一次公共地图所在坐标. /// [PersistField] public ZonePosition last_public_map_pos; /// /// 上一次公会场景ID. /// [PersistField] public int last_guild_mapID; #endregion //------------------------------------------------ [PersistField] public int onlineState; /// /// 是否充值 /// [PersistField] public bool isRecharge; public virtual RoleSnap ToSnap() { return new RoleSnap() { uuid = uuid, digitID = digitID, name = name, account_uuid = account_uuid, role_template_id = role_template_id, unit_template_id = unit_template_id, level = Level, create_time = create_time, last_login_time = last_login_time, isRecharge = isRecharge, }; } public virtual ClientRoleData ToClientRoleData() { var ret = new ClientRoleData(); ret.uuid = this.uuid; ret.digitID = this.digitID; ret.name = this.name; ret.account_uuid = this.account_uuid; ret.role_template_id = this.role_template_id; ret.unit_template_id = this.unit_template_id; ret.level = this.Level; ret.create_time = this.create_time; ret.last_login_time = this.last_login_time; ret.server_name = this.server_id; ret.privilege = this.privilege; ret.last_area_name = this.last_area_name; ret.last_area_node = this.last_area_node; ret.last_zone_uuid = this.last_zone_uuid; ret.last_map_template_id = this.last_map_template_id; ret.last_zone_pos = this.last_zone_pos; return ret; } } }