protected void AddExp(PBPlayerData playerData, int exp) { LevelTableSetting levelTable = LevelTableSettings.Get(playerData.Level); if (levelTable == null) { return; } exp = exp + playerData.Exp; int maxExp = levelTable.Exp[ClassCharacterTableSettings.Get(playerData.CharacterId).ClassType]; while (exp >= maxExp) { //level Up! playerData.Level++; exp = exp - maxExp; levelTable = LevelTableSettings.Get(playerData.Level); if (levelTable == null) { break; } playerData.Hp = levelTable.HP[(int)MapMgr.Instance.MyMapPlayer.Data.ClassData.Type]; playerData.MaxHp = levelTable.HP[(int)MapMgr.Instance.MyMapPlayer.Data.ClassData.Type]; playerData.Mp = levelTable.MP[(int)MapMgr.Instance.MyMapPlayer.Data.ClassData.Type]; playerData.MaxMp = levelTable.MP[(int)MapMgr.Instance.MyMapPlayer.Data.ClassData.Type]; maxExp = levelTable.Exp[(int)MapMgr.Instance.MyMapPlayer.Data.ClassData.Type]; } playerData.Exp = exp; }
public void Update(PBPlayerData playerData) { ID = playerData.PlayerId; Level = playerData.Level; ClassData = new ClassData(playerData.CharacterId); LevelTableSetting levelData = LevelTableSettings.Get(Level); if (levelData == null) { return; } Name = playerData.Name; HP = playerData.Hp; MaxHP = playerData.MaxHp; MP = playerData.Mp; MaxMP = playerData.MaxMp; Food = playerData.Food; MaxFood = playerData.MaxFood; Gold = playerData.Gold; HeadIcon = playerData.HeadIcon; MapSkillID = playerData.MapSkillId; BattleSkillID = playerData.BattleSkillId; Exp = playerData.Exp; }
public override void Handle(object sender, IMessage packet) { base.Handle(sender, packet); CGExitInstance data = packet as CGExitInstance; //处理完数据和逻辑后,发送消息通知客户端 PBAccountData accountData = GetSavedData <PBAccountData>(ACCOUNT_DATA_KEY); PBMapPlayerData mapPlayerData = GetSavedData <PBMapPlayerData>(MAP_PLAYER_DATA_KEY); PBPlayerData playerData = GetSavedData <PBPlayerData>(PLAYER_DATA_KEY); PBPlayerDetailData playerDetailData = GetSavedData <PBPlayerDetailData>(PLAYER_DETAIL_DATA_KEY); if (data.AccountId != accountData.Uid) { return; } if (data.PlayerId != playerData.PlayerId) { return; } AddExp(playerData, mapPlayerData.AddedExp); playerDetailData.Items.Clear(); playerDetailData.Items.Add(mapPlayerData.Items); playerData.Gold += mapPlayerData.PlayerData.Gold; playerData.Food += mapPlayerData.PlayerData.Food; playerDetailData.Cards.Add(mapPlayerData.RewardCards); playerDetailData.Items.Add(mapPlayerData.RewardItems); SaveData(MAP_PLAYER_DATA_KEY, null); SaveData(PLAYER_DATA_KEY, playerData); SaveData(PLAYER_DETAIL_DATA_KEY, playerDetailData); GCExitInstance exitInstance = new GCExitInstance(); exitInstance.AccountId = accountData.Uid; exitInstance.PlayerId = playerData.PlayerId; exitInstance.Reason = data.Reason; exitInstance.Gold = mapPlayerData.PlayerData.Gold; exitInstance.Food = mapPlayerData.PlayerData.Food; exitInstance.Cards.Add(mapPlayerData.RewardCards); exitInstance.Items.Add(mapPlayerData.RewardItems); SendToClient(MessageId_Receive.GCExitInstance, exitInstance); GCUpdatePlayerData updatePlayerData = new GCUpdatePlayerData(); updatePlayerData.AccountData = accountData; updatePlayerData.PlayerData = playerData; updatePlayerData.PlayerDetailData = playerDetailData; SendToClient(MessageId_Receive.GCUpdatePlayerData, updatePlayerData); }
public void InitPlayer(PBPlayerData playerData, PBPlayerDetailData playerDetailData) { ClassCharacterTableSetting characterData = ClassCharacterTableSettings.Get(playerData.CharacterId); if (characterData == null) { return; } MyPlayer = new MyPlayer(); PlayerData = MyPlayer.Data; MyPlayer.Data.Update(playerData); MyPlayer.DetailData.Update(playerDetailData); PlayerDetailData = MyPlayer.DetailData; }
public void UpdatePlayer(PBPlayerData playerData, PBPlayerDetailData playerDetailData) { ClassCharacterTableSetting characterData = ClassCharacterTableSettings.Get(playerData.CharacterId); if (characterData == null) { return; } if (playerData != null) { MyPlayer.Data.Update(playerData); } if (playerDetailData != null) { MyPlayer.DetailData.Update(playerDetailData); } }
public override void Handle(object sender, IMessage packet) { base.Handle(sender, packet); CGMapApplyEffect data = packet as CGMapApplyEffect; //处理完数据和逻辑后,发送消息通知客户端 PBAccountData accountData = GetSavedData <PBAccountData>(ACCOUNT_DATA_KEY); PBMapPlayerData mapPlayerData = GetSavedData <PBMapPlayerData>(MAP_PLAYER_DATA_KEY); PBPlayerData playerData = GetSavedData <PBPlayerData>(PLAYER_DATA_KEY); PBPlayerDetailData playerDetailData = GetSavedData <PBPlayerDetailData>(PLAYER_DETAIL_DATA_KEY); GCMapApplyEffect applyEffect = new GCMapApplyEffect(); applyEffect.PlayerId = playerData.PlayerId; if (data.PlayerId != playerData.PlayerId) { applyEffect.Result = 1; SendToClient(MessageId_Receive.GCMapApplyEffect, applyEffect); return; } switch (data.Action) { //0结束 case 0: break; //1下一个 case 1: break; //2选择 case 2: break; //3进入战斗 case 3: GCEnterBattle enterBattle = new GCEnterBattle(); enterBattle.MonsterId = data.Param; SendToClient(MessageId_Receive.GCEnterBattle, enterBattle); break; //4回血 case 4: mapPlayerData.PlayerData.Hp = System.Math.Min(mapPlayerData.PlayerData.Hp + data.Param, mapPlayerData.PlayerData.MaxHp); GCUpdateMapPlayerData hpUpdate = new GCUpdateMapPlayerData(); hpUpdate.PlayerId = mapPlayerData.PlayerData.PlayerId; hpUpdate.MapPlayerData = mapPlayerData; SaveData(MAP_PLAYER_DATA_KEY, mapPlayerData); SendToClient(MessageId_Receive.GCUpdateMapPlayerData, hpUpdate); break; //5回魔 case 5: mapPlayerData.PlayerData.Mp = System.Math.Min(mapPlayerData.PlayerData.Mp + data.Param, mapPlayerData.PlayerData.MaxMp); GCUpdateMapPlayerData mpUpdate = new GCUpdateMapPlayerData(); mpUpdate.PlayerId = mapPlayerData.PlayerData.PlayerId; mpUpdate.MapPlayerData = mapPlayerData; SaveData(MAP_PLAYER_DATA_KEY, mapPlayerData); SendToClient(MessageId_Receive.GCUpdateMapPlayerData, mpUpdate); break; //6回粮食 case 6: mapPlayerData.PlayerData.Food = System.Math.Min(mapPlayerData.PlayerData.Food + data.Param, mapPlayerData.PlayerData.MaxFood); GCUpdateMapPlayerData foodUpdate = new GCUpdateMapPlayerData(); foodUpdate.PlayerId = mapPlayerData.PlayerData.PlayerId; foodUpdate.MapPlayerData = mapPlayerData; SaveData(MAP_PLAYER_DATA_KEY, mapPlayerData); SendToClient(MessageId_Receive.GCUpdateMapPlayerData, foodUpdate); break; //7进入商店 case 7: GCMapEnterShop mapEnterShop = new GCMapEnterShop(); mapEnterShop.Result = 0; mapEnterShop.ShopId = data.Param; SendToClient(MessageId_Receive.GCMapEnterShop, mapEnterShop); break; //8打开宝箱 case 8: GCMapOpenBox openBox = new GCMapOpenBox(); openBox.Result = 0; openBox.BoxId = data.Param; SendToClient(MessageId_Receive.GCMapOpenBox, openBox); BoxTableSetting boxTable = BoxTableSettings.Get(data.Param); //switch (boxTable.RewardId) //{ // default: // break; //} break; //9进入下一层 case 9: break; default: break; } applyEffect.Result = 0; SendToClient(MessageId_Receive.GCMapApplyEffect, applyEffect); }
public override void Handle(object sender, IMessage packet) { base.Handle(sender, packet); CGEnterInstance data = packet as CGEnterInstance; //处理完数据和逻辑后,发送消息通知客户端 GCEnterInstance response = new GCEnterInstance(); InstanceTableSetting instanceTable = InstanceTableSettings.Get(data.InstanceId); if (instanceTable == null) { response.Result = 1; SendToClient(MessageId_Receive.GCEnterInstance, response); return; } response.InstanceId = data.InstanceId; response.Result = 0; response.MapPlayerData = new PBMapPlayerData(); response.MapPlayerData.InstanceId = data.InstanceId; response.MapPlayerData.PlayerPosX = Random.Range(0, instanceTable.Width); response.MapPlayerData.PlayerPosY = Random.Range(0, instanceTable.Height); PBPlayerData playerData = GetSavedData <PBPlayerData>(PLAYER_DATA_KEY); response.MapPlayerData.PlayerData = new PBPlayerData(); response.MapPlayerData.PlayerData.PlayerId = playerData.PlayerId; response.MapPlayerData.PlayerData.Hp = playerData.Hp; response.MapPlayerData.PlayerData.MaxHp = playerData.MaxHp; response.MapPlayerData.PlayerData.Mp = playerData.Mp; response.MapPlayerData.PlayerData.MaxMp = playerData.MaxMp; response.MapPlayerData.PlayerData.Gold = 0; response.MapPlayerData.PlayerData.Exp = 0; response.MapPlayerData.PlayerData.Level = 1; response.MapPlayerData.PlayerData.CharacterId = playerData.CharacterId; response.MapPlayerData.PlayerData.HeadIcon = playerData.HeadIcon; response.MapPlayerData.PlayerData.MapSkillId = playerData.MapSkillId; response.MapPlayerData.PlayerData.BattleSkillId = playerData.BattleSkillId; //response.MapPlayerData.PlayerData.Equips if (playerData.Food > instanceTable.FoodMax) { response.MapPlayerData.PlayerData.Food = response.MapPlayerData.PlayerData.MaxFood = instanceTable.FoodMax; playerData.Food = playerData.Food - instanceTable.FoodMax; } else { response.MapPlayerData.PlayerData.Food = response.MapPlayerData.PlayerData.MaxFood = playerData.Food; playerData.Food = 0; } //response.MapPlayerData.PlayerData response.MapPlayerData.PlayerModelId = ClassCharacterTableSettings.Get(response.MapPlayerData.PlayerData.CharacterId).ModelID; PBPlayerDetailData playerDetailData = GetSavedData <PBPlayerDetailData>(PLAYER_DETAIL_DATA_KEY); bool exist = false; for (int i = 0; i < playerDetailData.Decks.Count; i++) { if (playerDetailData.Decks[i].Index == data.Deck.Index) { //更新已有的卡组 playerDetailData.Decks[i] = data.Deck; exist = true; break; } } //添加新卡组 if (exist == false) { playerDetailData.Decks.Add(data.Deck); } response.MapPlayerData.Deck = data.Deck; response.MapPlayerData.Items.Add(data.Items); response.MapPlayerData.Equips.AddRange(data.Equips); response.MapPlayerData.Buffs.AddRange(data.Buffs); for (int i = 0; i < data.Items.Count; i++) { playerDetailData.Items.Remove(data.Items[i]); } SaveData(PLAYER_DATA_KEY, playerData); SaveData(PLAYER_DETAIL_DATA_KEY, playerDetailData); SaveData(MAP_PLAYER_DATA_KEY, response.MapPlayerData); SendToClient(MessageId_Receive.GCEnterInstance, response); }