using System.Collections.Generic; using Games.ChatHistory; using Games.DailyMissionData; using Games.Events; using Games.Fellow; using Games.GlobeDefine; using Games.ImpactModle; using Games.Item; using Games.LogicObj; using Games.MountModule; using Games.SkillModle; using Games.TitleInvestitive; using Games.UserCommonData; using GCGame.Table; using UnityEngine; public enum MONEYTYPE { MONEYTYPE_INVALID = -1, MONEYTYPE_COIN = 0, //银两 MONEYTYPE_YUANBAO = 1, //灵玉 MONEYTYPE_YUANBAO_BIND = 2, //元宝 MONEYTYPE_COIN_BIND = 3, //银票 MONEYTYPE_USERCHALLENGE, //门派挑战积分 MONEYTYPE_SNATCHSCORE, //夺宝积分 //MONEYTYPE_ACT1 = 4, //活动积分 //MONEYTYPE_ACT2 = 5, //活动积分 //MONEYTYPE_ACT3 = 6, //活动积分 //MONEYTYPE_ACT4 = 7, //活动积分 //MONEYTYPE_ACT5 = 8, //活动积分 //MONEYTYPE_ACT6 = 9, //活动积分 //MONEYTYPE_ACT7 = 10, //活动积分 //MONEYTYPE_ACT8 = 11, //活动积分 MONEYTYPE_SKILLEXP, MONEYTYPE_ROLEEXP, MONEYTYPE_TYPECOUNT } public enum CONSUM_TYPE { INVALID = 0, PROPVAL = 1, //奖励或者消耗一种非固定战斗属性,id为属性id,val为属性值 PROPPER = 2, //增加属性百分比,id为属性id,val为百分比乘以1万 ITEM = 3, //物品, id是为物品id, cnt为物品数量 MONEY = 4, // 金钱,id为金钱子类型,val为金钱数量 SCORE = 5, // 积分 NUM //类型总数 枚举于此之前添加 } // 装备槽位强化结构 public struct StrengthData { public int lv; // 强化等级 public int perfect; // 强化完美度 public StrengthData(int lv, int perfect) { this.lv = lv; this.perfect = perfect; } } public enum SCORE_TYPE { GUILD_SCORE = 1 } public class PlayerData { //丈夫妻子标记 private int _CoupFlag = -1; private FunctionRewStateManager _functionRewStateManager; private readonly Dictionary _IntPropValue = new Dictionary(); //是否有队长奖励可以领取 //打坐状态 private bool _IsInMeditataState; //是否已婚 public float _LastGuildConscribeTime; //寻物任务所需物品ID 及 数量 public Dictionary _MissionLootItemNeedCountDic = new Dictionary(); private float _modelScale = 1f; //人物相思树信息 private MarryAcaciaData _MyAcaciaData; //人物羁绊信息 private MarryFetterData _MyFetterData; //人物戒指信息 private MarryRingCtr _MyRingInfoData; //人物时装信息 private PlayerFashionData _PlayerFashionData; private int _skillLockMode = int.MaxValue; //结拜 public SwornBrother _SwornBrother; private List AbuseFilterList = new List(); //动态屏蔽字 public int DragonWar_DayRecvTimes = 0; //战龙堂每日接取次数 //战龙堂数据 public ulong DragonWar_destanceGuildGuid = GlobeVar.INVALID_GUID; //目标帮会guid public string DragonWar_destanceGuildName = string.Empty; //目标帮会名称 // public int OPenServerDays = 0; // 快捷仓库剩余使用次数,-1代表无限次 public int FastOPenCangKuLeaveTimes = 0; public bool HasInitOwnSkill = false; public bool InTreasureState; public bool IsHaveActrivityRewCanGet = false; //已经激活的伙伴技能 private readonly List m_activeMagicModels = new List(); //每个活动对应迎头经验 private Dictionary m_ActivityHeadExpDic; //public MountParam ObjMountParam //{ // get { return m_objMountParam; } // set { m_objMountParam = value; } //} public AdvanceData m_AdvanceData; //出副本自动寻路 private int m_AutoSearchMissionId = -1; //出副本显示轮次完成 private int m_AutoShowTurnOverEnsureMissionId = -1; //是否开始自动战斗 protected bool m_bAutoComabat; private int m_bAutoTeamCopySceneDifficult = 1; //记录自动组队状态 难度 private int m_bAutoTeamCopySceneId = -1; //记录自动组队状态 场景ID // 4技能新手指引,切场景需要 加个标记 //玩家黑名单 //所属渠道ID ////////////////////////////////////////////////////////////////////////// //聊天记录 ////////////////////////////////////////////////////////////////////////// //孩子信息 private ChildData m_ChildData; //角色自动使用药品信息 private ClientCustomData m_ClientCustomDateManager; // 通用存储数据 // 日常任务 private int m_dressMagicModelId = -1; private ChatInfoLogic.CHANNEL_TYPE m_eChooseChannel = ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_WORLD; ////////////////////////////////////////////////////////////////////////// //收到EnterScene包后的数据缓存 ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //时装 ////////////////////////////////////////////////////////////////////////// private float m_fCopySceneChange; //判断副本是否发送过传送信息. //伙伴数据 //伙伴数据 //伙伴抽取CD //当天抽取伙伴次数 //伙伴特效 private float m_FellowTickTime; //上次寄售行吆喝时间 //禁言结束时间 public ulong m_ForbiddenTalkOverTime; ////////////////////////////////////////////////////////////////////////// //玩家关系 ////////////////////////////////////////////////////////////////////////// //玩家好友列表 private RelationList m_FriendList; //每个活动单独计时在线时长 private Dictionary m_FuncionOnlineTimeDic; //功能开启状态 private Dictionary m_FunctionOpenState; //玩家帮派好友列表 ////////////////////////////////////////////////////////////////////////// //帮会数据 ////////////////////////////////////////////////////////////////////////// //仇人列表 //玩家当前禁言状态 //角色物品使用限制 private ItemLimtInfoCtr m_ItemLimitInfoCtr; private ulong m_LastTellGUID = GlobeVar.INVALID_GUID; private string m_LastTellName = ""; //伴侣 GUID private ulong m_LoverGUID = GlobeVar.INVALID_GUID; //主角基础属性 //Obj_MainPlayer已经将自己的BaseAttr屏蔽掉,而直接从这里读取 //师门 public Master m_MasterInfo; // 策划要求 任务追踪界面排序 private int m_ModelVisualID = GlobeVar.INVALID_ID; public MONEY m_Money; // 月卡的剩余天数 // 如果是小于等于0,月卡失效,否则有效 //帮会货运马车 private int m_nGharryObjID = -1; private ulong m_nHpDrugGUID = GlobeVar.INVALID_GUID; //血药位置 private ulong m_nMpDrugGUID = GlobeVar.INVALID_GUID; //魔药位置 //VIP //VIP //进阶装备槽位 private GameItemContainer m_oAdvancePack; private GameItemContainer m_oBackPack; ////////////////////////////////////////////////////////////////////////// //坐骑数据 ////////////////////////////////////////////////////////////////////////// public MountParam m_objMountParam; ////////////////////////////////////////////////////////////////////////// //回购槽位 ////////////////////////////////////////////////////////////////////////// private GameItemContainer m_oBuyBackPack; ////////////////////////////////////////////////////////////////////////// //装备槽位 ////////////////////////////////////////////////////////////////////////// private GameItemContainer m_oEquipPack; // 装备槽位的强化等级和完美度 private StrengthData[] m_oEquipSlotStrength; ////////////////////////////////////////////////////////////////////////// //法宝槽位 ////////////////////////////////////////////////////////////////////////// private GameItemContainer m_oMagicPack; private CangkuContainer m_oStoragePack; //充值活动 private PayActivityData m_PayActivity; private PlayerOrnamentInfo m_PlayerOrnamentStateInfo; //角色PVP信息 private PvpInfo m_PvpInfo; // 滚动公告 ////////////////////////////////////////////////////////////////////////// //组队数据 ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //称号数据 ////////////////////////////////////////////////////////////////////////// private readonly List m_VipRewardState = new List(); //帮战推送消息 //所属服务器ID //玩家好友申请列表 public bool NewApplyCheck = false; // 这个变量从来未赋值,将会一直处于false状态 //是否开启挂机模式 //private bool m_BeforeChangeSceneAutoCombat; //public bool ChangeSceneAutoCombat //{ // get { return m_BeforeChangeSceneAutoCombat; } // set { m_BeforeChangeSceneAutoCombat = value; } //} ////是否开启挂机模式 //private bool m_IsOpenAutoCombat; //public bool IsOpenAutoCombat //{ // get { return m_IsOpenAutoCombat; } // set { m_IsOpenAutoCombat = value; } //} ////最近一次打断 自动战斗的时间 //private float m_fBreakAutoCombatTime; //public float BreakAutoCombatTime //{ // get { return m_fBreakAutoCombatTime; } // set { m_fBreakAutoCombatTime = value; } //} public int OldAutoCombat = -1; //婚车双方OBJ public List OnWeddingCarObjList; //复活相关数据 public ReliveLogic.ReLiveData ReliveData; //仓库最大解锁数(只在打开仓库之后才会同步) public int SlotTotalUnLockCount = 0; public string TreasureTip = ""; public PlayerData() { IsShowVipTip = false; ForthSkillFlag = false; AutoTeamState = false; StartSweep = false; MpItemCDTime = 0; HpItemCDTime = 0; ReliveEntryTime = 0; HasInitEquipPack = false; HasInitBackPack = false; IsMarried = false; LastConsignShareTime = 0.0f; IsHaveCaptainWelfareRewCanGetted = false; IsForbiddenTalk = false; CleanUp(); } public bool IsFollowTeam { get { return IsHaveTeam() && !TeamInfo.IsCaptain() && TeamInfo.IsFollowTeam(); } } public PlayerOrnamentInfo PlayerOrnamentStateInfo { get { if (m_PlayerOrnamentStateInfo == null) m_PlayerOrnamentStateInfo = new PlayerOrnamentInfo(); return m_PlayerOrnamentStateInfo; } } public ItemLimtInfoCtr ItemLimitInfo { get { if (m_ItemLimitInfoCtr == null) m_ItemLimitInfoCtr = new ItemLimtInfoCtr(); return m_ItemLimitInfoCtr; } } public ChildData ChildData { get { if (m_ChildData == null) m_ChildData = new ChildData(); return m_ChildData; } } //是否处于门派挑战自动匹配状态 public bool IsFactionAdvanceAutoMtach { get; set; } public bool IsInMeditateState { get { return _IsInMeditataState; } set { _IsInMeditataState = value; if (MeditateCtr.Instance) MeditateCtr.Instance.ShowMeditateHLBtn(_IsInMeditataState); } } //结婚游街 public bool IsInWeddingCar { get; set; } //婚车ObjId public int WeddingCarObjId { get; set; } ////婚车相机 //public Camera WCCamera { get; set; } //BindObjId public Dictionary _WCBindObjDic { get; set; } //当前VIP体验对应ID public int VipIdoitId { set; get; } //当前VIP体验状态 public int VipIdoitStae { set; get; } public PvpInfo pvpIfo { get { if (m_PvpInfo == null) m_PvpInfo = new PvpInfo(); return m_PvpInfo; } } public ClientCustomData ClientCustomDateManager { get { if (m_ClientCustomDateManager == null) m_ClientCustomDateManager = new ClientCustomData(); return m_ClientCustomDateManager; } } public FunctionRewStateManager FunctionRemainTimeStateManager { get { if (_functionRewStateManager == null) _functionRewStateManager = new FunctionRewStateManager(); return _functionRewStateManager; } } public Dictionary ActivityHeadExpDic { get { if (m_ActivityHeadExpDic == null) m_ActivityHeadExpDic = new Dictionary(); return m_ActivityHeadExpDic; } } public Dictionary FuncionOnlineTimeDic { get { if (m_FuncionOnlineTimeDic == null) m_FuncionOnlineTimeDic = new Dictionary(); return m_FuncionOnlineTimeDic; } } public Dictionary FunctionOpenState { get { if (m_FunctionOpenState == null) m_FunctionOpenState = new Dictionary(); return m_FunctionOpenState; } } public bool IsForbiddenTalk { get; set; } public ulong ForbiddenTalkOverTime { get { return m_ForbiddenTalkOverTime; } set { m_ForbiddenTalkOverTime = value; } } public int WorldId { set; get; } public string ChannelId { set; get; } public List VipRewardStates { get { return m_VipRewardState; } } // 技能锁定相关数据 public int SkillLockMode { get { return _skillLockMode; } set { if (_skillLockMode != value) { _skillLockMode = value; EventDispatcher.Instance.Dispatch(EventId.LockSkillInput, _skillLockMode); } } } /// /// 是否允许输入普攻 /// public bool AllowSimpleInput { get { return (SkillLockMode & 1) > 0; } } /// /// 是否允许输入技能 /// public bool AllowSkillInput { get { return (SkillLockMode & 2) > 0; } } public PlayerFashionData PlerfaFashiuonDataCtr { get { if (_PlayerFashionData == null) _PlayerFashionData = new PlayerFashionData(); return _PlayerFashionData; } } public MarryRingCtr MyRingInfoData { get { if (_MyRingInfoData == null) _MyRingInfoData = new MarryRingCtr(); return _MyRingInfoData; } } public MarryFetterData MyFetterData { get { if (_MyFetterData == null) _MyFetterData = new MarryFetterData(); return _MyFetterData; } } public MarryAcaciaData MyAcaciaData { get { if (_MyAcaciaData == null) _MyAcaciaData = new MarryAcaciaData(); return _MyAcaciaData; } } public bool IsHaveCaptainWelfareRewCanGetted { get; set; } public OwnSkillData[] OwnSkillInfo { get; private set; } public bool IsHaveImperialEligible { set; get; } public int SkillPublicTime { get; set; } public bool IsCanPKLegal { get; set; } public int PkModle { get; set; } public bool AutoComabat { get { return m_bAutoComabat; } set { m_bAutoComabat = value; } } public int StealthLev { get; set; } public float LastConsignShareTime { get; set; } //体验VIP public int ExperIvpLevel { get; set; } public int VipCost { get; set; } public int VipFreeLive { get; set; } public int MonthlyCardDayRemain { get; set; } public int PoolCombatValue { get; set; } public List ClientImpactInfo { get; set; } public int MainBindParent { get; set; } public List MainBindChildren { get; set; } public bool IsMarried { get; set; } public int CoupFlag { get { return _CoupFlag; } set { _CoupFlag = value; } } public BaseAttr MainPlayerBaseAttr { get; set; } public PlayerEnterSceneCache EnterSceneCache { get; set; } public GameItemContainer BackPack { get { if (m_oBackPack == null) CleanUpContainers(); return m_oBackPack; } set { m_oBackPack = value; } } public bool HasInitBackPack { get; set; } public GameItemContainer EquipPack { get { if (m_oEquipPack == null) CleanUpContainers(); return m_oEquipPack; } set { m_oEquipPack = value; } } public bool HasInitEquipPack { get; set; } public StrengthData[] EquipSlotStrength { get { if (m_oEquipSlotStrength == null) CleanUpContainers(); return m_oEquipSlotStrength; } set { m_oEquipSlotStrength = value; } } public GameItemContainer BuyBackPack { get { if (m_oBuyBackPack == null) CleanUpContainers(); return m_oBuyBackPack; } set { m_oBuyBackPack = value; } } public CangkuContainer StoragePack { get { if (m_oStoragePack == null) CleanUpContainers(); return m_oStoragePack; } set { m_oStoragePack = value; } } public GameItemContainer MagicPack { get { if (m_oMagicPack == null) CleanUpContainers(); return m_oMagicPack; } set { m_oMagicPack = value; } } public GameItemContainer AdvancePack { get { if (m_oAdvancePack == null) CleanUpContainers(); return m_oAdvancePack; } set { m_oAdvancePack = value; } } public int DressMagicModelId { get { return m_dressMagicModelId; } } public int ActiveMagicModelCount { get { return m_activeMagicModels.Count; } } public Team TeamInfo { get; set; } public Guild GuildInfo { get; set; } public int nGharryObjID { get { return m_nGharryObjID; } set { m_nGharryObjID = value; } } public GuildList guildList { get; set; } public List WarPushMessaeg { get; set; } public GameTitleInvestitive TitleInvestitive { get; set; } public bool IsLockPriorTitle { get; set; } public GameChatHistory ChatHistory { get; set; } public ChatInfoLogic.CHANNEL_TYPE ChooseChannel { get { return m_eChooseChannel; } set { m_eChooseChannel = value; } } public ulong LastTellGUID { get { return m_LastTellGUID; } set { m_LastTellGUID = value; } } public string LastTellName { get { return m_LastTellName; } set { m_LastTellName = value; } } public LastSpeakerRecord TellChatSpeakers { get; set; } public RelationList FriendList { get { if (m_FriendList.RelationDataList.Count == 0) { // "系统信息" 好友 var sysFriend = new Relation(); sysFriend.Guid = GlobeVar.SYSFRIEND_GUID; sysFriend.Name = StrDictionary.GetClientDictionaryString("#{5213}"); sysFriend.State = 1; sysFriend.TimeInfo = 0; m_FriendList.AddRelation(sysFriend); // "小精灵" 好友 //Relation helpFriend = new Relation(); //helpFriend.Guid = GlobeVar.HELPFRIEND_GUID; //helpFriend.Name = StrDictionary.GetClientDictionaryString("#{5214}"); //helpFriend.State = 1; //helpFriend.TimeInfo = 1; //m_FriendList.AddRelation(helpFriend); } return m_FriendList; } set { m_FriendList = value; } } public RelationList GuildFriendList { get; set; } public RelationList FriendApplyList { get; set; } public RelationList BlackList { get; set; } public RelationList HateList { get; set; } public FellowBookData FellowBookData { get; set; } public FellowContainer FellowContainer { get; set; } public bool FellowPlayerEffect { get; set; } public List ActiveFellowSkill { get; set; } public int FellowGainCount_Free { get; set; } public int FellowGainCount_Coin { get; set; } public int FellowGainCount_YuanBao { get; set; } public int FellowGainCD_Coin { get; set; } public int ReliveEntryTime { get; set; } public UserCommonData CommonData { get; set; } public DailyMissionData DailyMissionData { get; set; } public ulong LoverGUID { get { return m_LoverGUID; } set { m_LoverGUID = value; } } public MONEY Money { get { return m_Money; } set { m_Money = value; } } public int[] FashionDeadline { get; set; } public int WeaponFashionId { get; set; } public bool ShowFashion { get; set; } public int ModelVisualID { get { return m_ModelVisualID; } set { m_ModelVisualID = value; } } public ForceUseModelData ForceUseModel { get; set; } /// /// 额外的模型尺寸参数 /// // 注:例如变大变小的buff,需要保障角色模型替换后有效 public float ModelScale { get { return _modelScale; } set { _modelScale = value; } } public List RollNoticeList { get; set; } public float HpItemCDTime { get; set; } public float MpItemCDTime { get; set; } public bool StartSweep { get; set; } public bool CopySceneChange { get { if (Time.realtimeSinceStartup - m_fCopySceneChange > 10.0f) return false; return true; } set { if (value) m_fCopySceneChange = Time.realtimeSinceStartup; else m_fCopySceneChange = 0; } } public PayActivityData PayActivity { get { return m_PayActivity; } set { m_PayActivity = value; } } public bool AutoTeamState { get; set; } public int AutoTeamCopySceneId { get { return m_bAutoTeamCopySceneId; } set { m_bAutoTeamCopySceneId = value; } } public int AutoTeamCopySceneDifficult { get { return m_bAutoTeamCopySceneDifficult; } set { m_bAutoTeamCopySceneDifficult = value; } } public bool ForthSkillFlag { get; set; } public List MissionSortList { get; set; } public Vector3 MissionGridLastPos { get; set; } public bool IsShowVipTip { get; set; } public int AutoSearchMissionId { get { return m_AutoSearchMissionId; } set { m_AutoSearchMissionId = value; } } public int AutoShowTurnOverEnsureMissionId { get { return m_AutoShowTurnOverEnsureMissionId; } set { m_AutoShowTurnOverEnsureMissionId = value; } } public ulong HpDrugGUID { get { return m_nHpDrugGUID; } set { m_nHpDrugGUID = value; } } public ulong MpDrugGUID { get { return m_nMpDrugGUID; } set { m_nMpDrugGUID = value; } } public void CleanUpContainers() { GameItemContainer.InitStaticParams(); m_oBackPack = new GameItemContainer(GameItemContainer.SIZE_BACKPACK, GameItemContainer.Type.TYPE_BACKPACK); m_oEquipPack = new GameItemContainer(GameItemContainer.SIZE_EQUIPPACK, GameItemContainer.Type.TYPE_EQUIPPACK); m_oEquipSlotStrength = new StrengthData[GameItemContainer.SIZE_EQUIPPACK]; m_oBuyBackPack = new GameItemContainer(GameItemContainer.MAXSIZE_BUYBACKPACK, GameItemContainer.Type.TYPE_BUYBACKPACK); m_oStoragePack = new CangkuContainer(GameItemContainer.SIZE_STORAGEPACK, GameItemContainer.Type.TYPE_STORAGEPACK); m_oMagicPack = new GameItemContainer(GameItemContainer.SIZE_MAGICPACK, GameItemContainer.Type.TYPE_MAGICPACK); m_oAdvancePack = new GameItemContainer(GameItemContainer.SIZE_ADVANCPACK, GameItemContainer.Type.TYPE_ADVANCEPACK); } public void CleanUp() { var newAttr = new BaseAttr(); // 试图将绑定事件传递到新的Attr if (MainPlayerBaseAttr != null) { newAttr.onMoveSpeedUpdate = MainPlayerBaseAttr.onMoveSpeedUpdate; MainPlayerBaseAttr.onMoveSpeedUpdate = null; } MainPlayerBaseAttr = newAttr; HasInitBackPack = false; //清理玩家切场景缓存数据 EnterSceneCache = new PlayerEnterSceneCache(); //玩家组队信息 TeamInfo = new Team(); if (null != TeamInfo) TeamInfo.CleanUp(); GuildInfo = new Guild(); guildList = new GuildList(); m_objMountParam = new MountParam(); m_objMountParam.CleanUp(); m_AdvanceData = new AdvanceData(); // 玩家称号 TitleInvestitive = new GameTitleInvestitive(); IsLockPriorTitle = false; // 聊天记录 if (ChatHistory == null) //如果聊天记录存在(断线重连/重新登陆),不清除聊天记录 ChatHistory = new GameChatHistory(); // 最近私聊对象记录 TellChatSpeakers = new LastSpeakerRecord(); //初始化玩家关系数据 m_FriendList = new RelationList(); GuildFriendList = new RelationList(); FriendApplyList = new RelationList(); BlackList = new RelationList(); HateList = new RelationList(); //伙伴 FellowContainer = new FellowContainer(); FellowPlayerEffect = false; ActiveFellowSkill = new List(); FellowGainCount_Free = 0; FellowGainCount_Coin = 0; FellowGainCount_YuanBao = 0; FellowGainCD_Coin = 0; m_FellowTickTime = 0f; FellowBookData = new FellowBookData(); //初始化 _MyRingInfoData = new MarryRingCtr(); OwnSkillInfo = new OwnSkillData[(int) SKILLDEFINE.MAX_SKILLNUM]; for (var i = 0; i < (int) SKILLDEFINE.MAX_SKILLNUM; i++) { OwnSkillInfo[i] = new OwnSkillData(); OwnSkillInfo[i].CleanUp(); } SkillPublicTime = 0; IsCanPKLegal = false; m_Money = new MONEY(); VipCost = -1; ClientImpactInfo = new List(); CommonData = new UserCommonData(); // 玩家通用数据 DailyMissionData = new DailyMissionData(); // 日常任务数据 FashionDeadline = new int[GlobeVar.MAX_FASHION_SIZE]; for (var i = 0; i < GlobeVar.MAX_FASHION_SIZE; i++) FashionDeadline[i] = 0; WeaponFashionId = GlobeVar.INVALID_ID; ShowFashion = false; m_ModelVisualID = GlobeVar.INVALID_ID; _SwornBrother = new SwornBrother(); m_MasterInfo = new Master(); PkModle = -1; //隐身级别 StealthLev = 0; //是否开始自动战斗 m_bAutoComabat = false; WarPushMessaeg = new List(); m_LoverGUID = GlobeVar.INVALID_GUID; //上次寄售行吆喝时间 LastConsignShareTime = 0.0f; m_PayActivity.CleanUp(); RollNoticeList = new List(); ForthSkillFlag = false; MainBindChildren = new List(); MainBindParent = -1; AutoTeamState = false; MissionSortList = new List(); MissionGridLastPos = Vector3.zero; IsShowVipTip = false; ReliveData.ClearUp(); _PlayerFashionData = new PlayerFashionData(); _MyFetterData = new MarryFetterData(); _MyAcaciaData = new MarryAcaciaData(); IsHaveCaptainWelfareRewCanGetted = false; // m_PrivilegeTypeStateDic = new Dictionary(); IsForbiddenTalk = false; m_ForbiddenTalkOverTime = 0; //0就是没有禁言状态 m_FunctionOpenState = new Dictionary(); m_FuncionOnlineTimeDic = new Dictionary(); _functionRewStateManager = new FunctionRewStateManager(); m_ClientCustomDateManager = new ClientCustomData(); m_ItemLimitInfoCtr = new ItemLimtInfoCtr(); m_PvpInfo = new PvpInfo(); VipIdoitId = -1; VipIdoitStae = 0; _LastGuildConscribeTime = 0.0f; WeddingCarObjId = -1; IsInWeddingCar = false; _WCBindObjDic = new Dictionary(); IsFactionAdvanceAutoMtach = false; //防止切换账号后接到任务不能自动寻路 GuideLogic._isShowCompleteMissionGuide = false; InTreasureState = false; m_PlayerOrnamentStateInfo = new PlayerOrnamentInfo(); m_ChildData = new ChildData(); } public void AddVipGetRewardState(IList states) { m_VipRewardState.Clear(); m_VipRewardState.AddRange(states); if (ActiveBtns.Instance() != null) ActiveBtns.Instance().VipTipRedPoint(); } public OwnSkillData GetOwnSkillInfo(int skillBaseID) { foreach (var ownSkill in OwnSkillInfo) { if (ownSkill.SkillBaseTable == null) continue; if (ownSkill.SkillBaseTable.Id == skillBaseID) return ownSkill; } return null; } public void UpdateOwnSkills() { for (var i = 0; i < OwnSkillInfo.Length; i++) OwnSkillInfo[i].UpdateCooldown(); } public void AddCooldownModifier(int handle, float substract, float modifier, IList baseIdList) { for (var i = 0; i < baseIdList.Count; i++) { // 注:防御委托延迟操作,勿删 var index = i; var ownSkill = OwnSkillInfo.Find(a => a.SkillBaseTable != null && a.SkillBaseTable.Id == baseIdList[index]); if (ownSkill != null) { if (modifier > 0f) ownSkill.AddCooldownModifier(handle, modifier); if (substract > 0f) ownSkill.SubstractCooldown(substract); } } } public void RemoveCooldownModifier(int handle) { for (var i = 0; i < OwnSkillInfo.Length; i++) OwnSkillInfo[i].RemoveCooldownModifier(handle); } public void CleanUpOwnSkillInfo() { for (var i = 0; i < OwnSkillInfo.Length; i++) OwnSkillInfo[i].CleanUp(); if (GameManager.gameManager != null && GameManager.gameManager.effectPool != null) GameManager.gameManager.effectPool.CleanHoldPreload(); } //特权VIP等级 //private Dictionary m_PrivilegeTypeStateDic; //public Dictionary PrivilegeTypeStateDic //{ // get // { // if (m_PrivilegeTypeStateDic == null) // m_PrivilegeTypeStateDic = new Dictionary(); // return m_PrivilegeTypeStateDic; // } //} public int GetMaxPrivilegeVip() { var level = 0; //foreach (var privilegeType in m_PrivilegeTypeStateDic) //{ // if (privilegeType.Value) // { // if (privilegeType.Key > level) // level = privilegeType.Key; // } //} return level; } public void SetPropInt(PropID.PropertyID propID, int value) { if (_IntPropValue.ContainsKey(propID)) _IntPropValue[propID] = value; else _IntPropValue.Add(propID, value); } public int GetPropInt(PropID.PropertyID propID) { if (_IntPropValue.ContainsKey(propID)) return _IntPropValue[propID]; return -1; } ////////////////////////////////////////////////////////////////////////// //背包 ////////////////////////////////////////////////////////////////////////// //取得背包 public GameItemContainer GetItemContainer(GameItemContainer.Type type) { switch (type) { case GameItemContainer.Type.TYPE_BACKPACK: return m_oBackPack; case GameItemContainer.Type.TYPE_EQUIPPACK: return m_oEquipPack; case GameItemContainer.Type.TYPE_BUYBACKPACK: return m_oBuyBackPack; case GameItemContainer.Type.TYPE_STORAGEPACK: return m_oStoragePack; case GameItemContainer.Type.TYPE_MAGICPACK: return m_oMagicPack; case GameItemContainer.Type.TYPE_ADVANCEPACK: return m_oAdvancePack; } return null; } public bool IsMagicModelActive(int Id) { for (var i = 0; i < m_activeMagicModels.Count; i++) if (Id == m_activeMagicModels[i]) return true; return false; } public int GetActiveMagicModelsByIndex(int index) { if (index < 0 || index > m_activeMagicModels.Count) return -1; return m_activeMagicModels[index]; } public void InitMagicWeaponInfo(int dressId, IList activeModels) { m_activeMagicModels.Clear(); m_activeMagicModels.AddRange(activeModels); m_dressMagicModelId = dressId; if (Singleton.Instance.MainPlayer != null) { Singleton.Instance.MainPlayer.CreateMagicModel(m_dressMagicModelId); EventDispatcher.Instance.SendMessage(EventId.MagicShowModel); } } public bool IsHaveTeam() { return null != TeamInfo && TeamInfo.TeamID != GlobeVar.INVALID_ID; } //某个Guid是否为队伍成员 public bool IsTeamMem(ulong guid) { if (GlobeVar.INVALID_ID == TeamInfo.TeamID || GlobeVar.INVALID_GUID == guid) return false; for (var i = 0; i < GlobeVar.MAX_TEAM_MEMBER; i++) if (null != TeamInfo.GetTeamMember(i) && guid == TeamInfo.GetTeamMember(i).Guid) return true; return false; } public bool IsHadCreateGuild() { return null != GuildInfo && GuildInfo.GuildGuid != GlobeVar.INVALID_GUID; } public bool IsHaveGuild() { return null != GuildInfo && GuildInfo.GuildGuid != GlobeVar.INVALID_GUID && GuildInfo.GuildLevel > 0; } public bool IsReserveGuildMember() { if (null == GuildInfo || GuildInfo.GuildGuid == GlobeVar.INVALID_GUID) return false; var mainPlayerGuid = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Guid; GuildMember member; if (GuildInfo.GuildMemberList.TryGetValue(mainPlayerGuid, out member)) if (member.Job == (int) GameDefine_Globe.GUILD_JOB.RESERVE) return true; return false; } public bool IsGuildMember(Obj_OtherPlayer _otherPlayer) { if (_otherPlayer != null && _otherPlayer.GuildGUID != GlobeVar.INVALID_GUID && _otherPlayer.GuildGUID == GuildInfo.GuildGuid) return _otherPlayer.GuildJob > (int) GameDefine_Globe.GUILD_JOB.INVALID && _otherPlayer.GuildJob < (int) GameDefine_Globe.GUILD_JOB.RESERVE; return false; } public bool IsGuildMember(ulong guid) { var job = GetGuildJob(guid); if (job > GameDefine_Globe.GUILD_JOB.INVALID && // 排除学徒以及预备学徒,或者之后加入的更低级职位 job < GameDefine_Globe.GUILD_JOB.RESERVE) return true; // 之前的判定逻辑,最后允许GuildGuid == guid的情况 return GuildInfo != null && GuildInfo.GuildGuid != GlobeVar.INVALID_GUID && GuildInfo.GuildGuid == guid; } public GameDefine_Globe.GUILD_JOB GetGuildJob(ulong guid) { var result = GameDefine_Globe.GUILD_JOB.INVALID; if (guid != GlobeVar.INVALID_GUID && GuildInfo != null && GuildInfo.GuildGuid != GlobeVar.INVALID_GUID) { GuildMember member; if (GuildInfo.GuildMemberList.TryGetValue(guid, out member)) result = (GameDefine_Globe.GUILD_JOB) member.Job; } return result; } public bool IsGuildChief() { return null != Singleton.GetInstance().MainPlayer && GuildInfo.GuildChiefGuid == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Guid; } public bool IsGuildViceChief(ulong guid) { if (null == GuildInfo || GuildInfo.GuildGuid == GlobeVar.INVALID_GUID) return false; if (guid == GlobeVar.INVALID_GUID) return false; GuildMember member; if (GuildInfo.GuildMemberList.TryGetValue(guid, out member)) { if (member.Job == (int) GameDefine_Globe.GUILD_JOB.VICE_CHIEF) return true; return false; } return false; } //申请数量 public int GetNewApplyListCount() { return FriendApplyList.RelationDataList.Count; } public void Tick_FellowGainCD() { if (FellowGainCD_Coin > 0) { m_FellowTickTime += Time.deltaTime; //一秒触发一次 if (m_FellowTickTime > 1) { m_FellowTickTime = 0f; FellowGainCD_Coin--; } } } public void HandlePacket(GC_SYNC_PAY_ACTIVITY_DATA packet) { m_PayActivity.HandlePacket(packet); } public static void NoticeLack(int consumType, int consumID) { var lackStr = ""; if ((int) CONSUM_TYPE.MONEY == consumType) lackStr = MONEY.GetMoneyStr((MONEYTYPE) consumID); else if ((int) CONSUM_TYPE.PROPVAL == consumType) lackStr = PropID.GetAttrName((PropID.PropertyID) consumID, -1, -1); GUIData.AddNotifyData(lackStr + StrDictionary.GetClientDictionaryString("#{1096}")); } public void ClearFashionData() { FashionDeadline = new int[GlobeVar.MAX_FASHION_SIZE]; for (var i = 0; i < GlobeVar.MAX_FASHION_SIZE; i++) FashionDeadline[i] = 0; WeaponFashionId = GlobeVar.INVALID_ID; ShowFashion = false; m_ModelVisualID = GlobeVar.INVALID_ID; } //服务器标记 //private int m_ServerFlags; public void HandlerServerFlags(GC_SERVERFLAGS packet) { //m_ServerFlags = packet.Flags; } //public bool IsVipOpen() //{ // if ((m_ServerFlags & (1 << (int)SERVER_FLAGS_ENUM.FLAG_VIP)) == 0) // { // return false; // } // return true; //} //public bool IsChargeActivityOpen() //{ // if ((m_ServerFlags & (1 << (int)SERVER_FLAGS_ENUM.FLAG_PAYACT)) == 0) // { // return false; // } // return true; //} //每日首次登陆触发 public void OnTodayFirstLogin() { } public void AddAbuseFilter(string data) { var str = ""; if (string.IsNullOrEmpty(data)) return; if (AbuseFilterList == null) AbuseFilterList = new List(); AbuseFilterList.Add(data); } public string GetAbuseFilter(string str) { if (str == null) return null; if (AbuseFilterList == null) return null; for (var i = 0; i < AbuseFilterList.Count; i++) if (str.IndexOf(AbuseFilterList[i]) != -1) return AbuseFilterList[i]; return null; } public void ClearAbuseFilter() { if (AbuseFilterList != null) AbuseFilterList.Clear(); } //经济系统 public class MONEY { private readonly Dictionary _ActMoney = new Dictionary(); private readonly long[] m_nMoney; public MONEY() { m_nMoney = new long[(int) MONEYTYPE.MONEYTYPE_TYPECOUNT]; for (var i = 0; i < (int) MONEYTYPE.MONEYTYPE_TYPECOUNT; ++i) m_nMoney[i] = 0; } public long GetMoney_Coin() { return GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN); } public long GetMoney_CoinBind() { return GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN_BIND); } public long GetMoney_YuanBao() { return GetMoneyByType(MONEYTYPE.MONEYTYPE_YUANBAO); } public long GetMoney_YuanBaoBind() { return GetMoneyByType(MONEYTYPE.MONEYTYPE_YUANBAO_BIND); } public long GetMoney_ChallengeScore() { return GetMoneyByType(MONEYTYPE.MONEYTYPE_USERCHALLENGE); } public long GetMoney_SnatchScore() { return GetMoneyByType(MONEYTYPE.MONEYTYPE_SNATCHSCORE); } public void SetMoney(MONEYTYPE nType, long nValue) { if (nType > MONEYTYPE.MONEYTYPE_INVALID && nType < MONEYTYPE.MONEYTYPE_TYPECOUNT) m_nMoney[(int) nType] = nValue; if (MoneyInfoPanel.Instance) MoneyInfoPanel.Instance.UpdateMoneyInfo(); EventDispatcher.Instance.SendMessage(EventId.FRESHSAMEUSETIP); if (MeridiaSoulData.Instance != null) MeridiaSoulData.Instance.CheckIsHasUp(); GameManager.gameManager.PlayerDataPool.GuildInfo.XiulianRedPoint(); } public long GetMoneyByType(MONEYTYPE nType) { if (nType > MONEYTYPE.MONEYTYPE_INVALID && nType < MONEYTYPE.MONEYTYPE_TYPECOUNT) return m_nMoney[(int) nType]; return 0; } public void SetMoney(PropID.PropertyID nType, int nValue) { if (_ActMoney.ContainsKey(nType)) _ActMoney[nType] = nValue; else _ActMoney.Add(nType, nValue); } public int GetMoneyByType(PropID.PropertyID nType) { if (_ActMoney.ContainsKey(nType)) return _ActMoney[nType]; return 0; } public void PushMoneyLessData(int nType) { var moneyStrID = nType + 6000; GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{" + moneyStrID + "}") + StrDictionary.GetClientDictionaryString("#{6000}")); } public static string GetMoneySpriteStr(MONEYTYPE currencyType) { var spriteName = ""; if (currencyType == MONEYTYPE.MONEYTYPE_COIN) spriteName = "qian1"; else if (currencyType == MONEYTYPE.MONEYTYPE_YUANBAO) spriteName = "qian2"; else if (currencyType == MONEYTYPE.MONEYTYPE_YUANBAO_BIND) spriteName = "qian3"; else if (currencyType == MONEYTYPE.MONEYTYPE_COIN_BIND) spriteName = "qian4"; else if (currencyType == MONEYTYPE.MONEYTYPE_SKILLEXP) spriteName = "skillExp"; else if (currencyType == MONEYTYPE.MONEYTYPE_ROLEEXP) spriteName = "roleExp"; else if (currencyType == MONEYTYPE.MONEYTYPE_USERCHALLENGE) spriteName = "menpai"; return spriteName; } public static string GetMoneyStr(MONEYTYPE currencyType) { var spriteName = ""; if (currencyType == MONEYTYPE.MONEYTYPE_COIN) spriteName = StrDictionary.GetClientDictionaryString("#{6003}"); else if (currencyType == MONEYTYPE.MONEYTYPE_YUANBAO) spriteName = StrDictionary.GetClientDictionaryString("#{6001}"); else if (currencyType == MONEYTYPE.MONEYTYPE_YUANBAO_BIND) spriteName = StrDictionary.GetClientDictionaryString("#{6002}"); else if (currencyType == MONEYTYPE.MONEYTYPE_COIN_BIND) spriteName = StrDictionary.GetClientDictionaryString("#{6004}"); return spriteName; } } #region public int GetIntPropty(int consumType, int consumID) { if ((int) CONSUM_TYPE.MONEY == consumType) { long moneyValue = 0; switch ((MONEYTYPE) consumID) { case MONEYTYPE.MONEYTYPE_YUANBAO: moneyValue = Money.GetMoney_YuanBao(); if (moneyValue > GlobeVar.MAX_INT_VALUE) return GlobeVar.MAX_INT_VALUE; return (int) moneyValue; // 灵玉 case MONEYTYPE.MONEYTYPE_YUANBAO_BIND: moneyValue = Money.GetMoney_YuanBaoBind(); if (moneyValue > GlobeVar.MAX_INT_VALUE) return GlobeVar.MAX_INT_VALUE; return (int) moneyValue; // 元宝 case MONEYTYPE.MONEYTYPE_COIN: moneyValue = Money.GetMoney_Coin(); if (moneyValue > GlobeVar.MAX_INT_VALUE) return GlobeVar.MAX_INT_VALUE; return (int) moneyValue; // 银两 case MONEYTYPE.MONEYTYPE_COIN_BIND: moneyValue = Money.GetMoney_CoinBind(); if (moneyValue > GlobeVar.MAX_INT_VALUE) return GlobeVar.MAX_INT_VALUE; return (int) moneyValue; // 银票 case MONEYTYPE.MONEYTYPE_USERCHALLENGE: moneyValue = Money.GetMoney_ChallengeScore(); if (moneyValue > GlobeVar.MAX_INT_VALUE) return GlobeVar.MAX_INT_VALUE; return (int) moneyValue; // 挑战积分 case MONEYTYPE.MONEYTYPE_SNATCHSCORE: moneyValue = Money.GetMoney_SnatchScore(); if (moneyValue > GlobeVar.MAX_INT_VALUE) return GlobeVar.MAX_INT_VALUE; return (int) moneyValue; // 夺宝积分 } } else if ((int) CONSUM_TYPE.PROPVAL == consumType) { switch ((PropID.PropertyID) consumID) { case PropID.PropertyID.ACTVAL: //return GetPropInt(PropID.PropertyID.ACTVAL); //活力 return MainPlayerBaseAttr.CurStamina; case PropID.PropertyID.PRIVATEEXP: //专属经验 return GetPropInt(PropID.PropertyID.PRIVATEEXP); case PropID.PropertyID.PROPUSER_EXP: return GetPropInt(PropID.PropertyID.PROPUSER_EXP); } } else if ((int) CONSUM_TYPE.SCORE == consumType) { switch ((SCORE_TYPE) consumID) { case SCORE_TYPE.GUILD_SCORE: //return GetPropInt(PropID.PropertyID.ACTVAL); return GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute; } } return 0; } public long GetLongPropty(int consumType, int consumID) { if ((int) CONSUM_TYPE.MONEY == consumType) switch ((MONEYTYPE) consumID) { case MONEYTYPE.MONEYTYPE_YUANBAO: return Money.GetMoney_YuanBao(); //灵玉 case MONEYTYPE.MONEYTYPE_YUANBAO_BIND: return Money.GetMoney_YuanBaoBind(); //元宝 case MONEYTYPE.MONEYTYPE_COIN: return Money.GetMoney_Coin(); //银两 case MONEYTYPE.MONEYTYPE_COIN_BIND: return Money.GetMoney_CoinBind(); //银票 } else if ((int) CONSUM_TYPE.PROPVAL == consumType) switch ((PropID.PropertyID) consumID) { case PropID.PropertyID.PRIVATEEXP: return MainPlayerBaseAttr.SkillExp; //专用经验 case PropID.PropertyID.PROPUSER_EXP: return MainPlayerBaseAttr.Exp; //非专用经验 } return 0; } public bool IsConsumEnough(int consumType, int consumID, int consumValue) { if (consumType < 0) return true; if ((int) CONSUM_TYPE.PROPVAL == consumType) switch ((PropID.PropertyID) consumID) { case PropID.PropertyID.PRIVATEEXP: return MainPlayerBaseAttr.SkillExp + MainPlayerBaseAttr.Exp >= consumValue; } else if ((int) CONSUM_TYPE.MONEY == consumType) switch ((MONEYTYPE) consumID) { case MONEYTYPE.MONEYTYPE_YUANBAO: return Money.GetMoney_YuanBao() >= consumValue; case MONEYTYPE.MONEYTYPE_YUANBAO_BIND: return Money.GetMoney_YuanBaoBind() >= consumValue; case MONEYTYPE.MONEYTYPE_COIN: return Money.GetMoney_Coin() >= consumValue; case MONEYTYPE.MONEYTYPE_COIN_BIND: return Money.GetMoney_CoinBind() + Money.GetMoney_Coin() >= consumValue; } else if ((int) CONSUM_TYPE.INVALID == consumType) return true; return false; } /// /// 可替代消耗是否满足 /// /// /// /// /// 1无需替代即可满足,2.替代满足, 3替代后不满足 public int ConsumReplaceEnough(int consumType, int consumID, int consumValue) { var state = 0; if ((int) CONSUM_TYPE.PROPVAL == consumType) switch ((PropID.PropertyID) consumID) { case PropID.PropertyID.PRIVATEEXP: if (MainPlayerBaseAttr.SkillExp >= consumValue) state = 1; else if (MainPlayerBaseAttr.SkillExp + MainPlayerBaseAttr.Exp >= consumValue) state = 2; else state = 3; break; } else if ((int) CONSUM_TYPE.MONEY == consumType) switch ((MONEYTYPE) consumID) { case MONEYTYPE.MONEYTYPE_COIN_BIND: if (Money.GetMoney_CoinBind() >= consumValue) state = 1; else if (Money.GetMoney_CoinBind() + Money.GetMoney_Coin() >= consumValue) state = 2; else state = 3; break; } else if ((int) CONSUM_TYPE.SCORE == consumType) switch ((SCORE_TYPE) consumID) { case SCORE_TYPE.GUILD_SCORE: if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute >= consumValue) state = 1; else state = 3; break; } else if ((int) CONSUM_TYPE.INVALID == consumType) state = 1; return state; } #endregion // //进入新的场景后任务数据更新 // public void LoadSceneFinish() // { // // Tab_SceneClass sceneInfo = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0); // // if (sceneInfo == null) // // return; // // if (sceneInfo.IsAutoFight != 0) // // { // // m_IsOpenAutoCombat = false; // // return; // // } // // // } #region equip suit public int EquipSuitID; public int NextSuitEquipCnt; public void CalculateEquipSuit() { var equipList = m_oEquipPack.GetList(); var suitTabs = TableManager.GetEquipEnchanceSuit().Values; EquipSuitID = 0; NextSuitEquipCnt = 0; foreach (var suitTab in suitTabs) { var slotCnt = 0; for (var i = 0; i < EquipSlotStrength.Length; ++i) { if (EquipSlotStrength[i].lv < suitTab.EnchanceLevel || EquipSlotStrength[i].perfect < suitTab.PerfectID) continue; ++slotCnt; } if (slotCnt >= suitTab.EquipNum) { EquipSuitID = suitTab.Id; } else { NextSuitEquipCnt = slotCnt; break; } } } #endregion }