public void InitAccount(PBAccountData accountData) { AccountData = new AccountData(); AccountData.Diamonds = accountData.Diamonds; AccountData.Uid = accountData.Uid; AccountData.VipLevel = accountData.VipLevel; AccountData.Recharge = accountData.Recharge; }
protected GCMapGetReward GetRewardById(int rewardId) { GCMapGetReward reward = new GCMapGetReward(); PBAccountData accountData = GetSavedData <PBAccountData>(ACCOUNT_DATA_KEY); PBMapPlayerData mapPlayerData = GetSavedData <PBMapPlayerData>(MAP_PLAYER_DATA_KEY); reward.AccountId = accountData.Uid; reward.PlayerId = mapPlayerData.PlayerData.PlayerId; reward.OldExp = mapPlayerData.PlayerData.Exp; reward.OldLevel = mapPlayerData.PlayerData.Level; RewardTableSetting rewardTable = RewardTableSettings.Get(rewardId); reward.AddedExp = rewardTable.exp; reward.Diamonds = rewardTable.diamond; reward.Gold = rewardTable.gold; reward.Food = rewardTable.food; for (int i = 0; i < rewardTable.ItemList.Count; i++) { if (UnityEngine.Random.Range(0, 10000) < rewardTable.RewardProbability[i]) { ItemTableSetting itemTable = ItemTableSettings.Get(rewardTable.ItemList[i]); if (itemTable == null) { continue; } switch ((ItemType)itemTable.Type) { case ItemType.Card: reward.Cards.Add(rewardTable.ItemList[i]); reward.CardTemps.Add(rewardTable.Permanent[i]); break; case ItemType.Equip: reward.Equips.Add(rewardTable.ItemList[i]); reward.EquipTemps.Add(rewardTable.Permanent[i]); break; case ItemType.Skill: //要改 reward.Buffs.Add(rewardTable.ItemList[i]); reward.BuffTemps.Add(rewardTable.Permanent[i]); break; case ItemType.Consumable: reward.Items.Add(rewardTable.ItemList[i]); reward.ItemTemps.Add(rewardTable.Permanent[i]); break; default: break; } } } return(reward); }
PBAccountData CreateAccount(string username) { PBAccountData AccountData = new PBAccountData(); AccountData.Uid = 1; AccountData.Recharge = 0; AccountData.Diamonds = 0; AccountData.VipLevel = 0; AccountData.Username = username; SaveData(ACCOUNT_DATA_KEY, AccountData); return(AccountData); }
public void UpdateAccount(PBAccountData accountData) { if (accountData == null) { return; } if (AccountData.Uid != accountData.Uid) { return; } AccountData.Diamonds = accountData.Diamonds; AccountData.VipLevel = accountData.VipLevel; AccountData.Recharge = accountData.Recharge; }
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 override void Handle(object sender, IMessage packet) { base.Handle(sender, packet); CGLogin data = packet as CGLogin; //处理完数据和逻辑后,发送消息通知客户端 GCLogin login = new GCLogin(); PBAccountData read = GetSavedData <PBAccountData>(ACCOUNT_DATA_KEY); if (read != null) { if (read.Username != data.Username) { //新玩家 login.Result = 0; login.AccountData = CreateAccount(data.Username); } else { login.AccountData = GetSavedData <PBAccountData>(ACCOUNT_DATA_KEY); if (GetSavedData <PBPlayerData>(PLAYER_DATA_KEY) == null || GetSavedData <PBPlayerDetailData>(PLAYER_DETAIL_DATA_KEY) == null) { //新玩家,没有创建角色 login.Result = 0; } else { login.Result = 1; } } } else { login.AccountData = CreateAccount(data.Username); login.Result = 0; } //Debug.LogError(data.UserId.ToString()); SendToClient(MessageId_Receive.GCLogin, login); }
public override void Handle(object sender, IMessage packet) { base.Handle(sender, packet); CGExitBattle data = packet as CGExitBattle; //处理完数据和逻辑后,发送消息通知客户端 PBAccountData accountData = GetSavedData <PBAccountData>(ACCOUNT_DATA_KEY); PBMapPlayerData mapPlayerData = GetSavedData <PBMapPlayerData>(MAP_PLAYER_DATA_KEY); //战斗结果 if (data.PlayerData != null) { mapPlayerData.PlayerData.Hp = data.PlayerData.Hp; mapPlayerData.PlayerData.MaxHp = data.PlayerData.MaxHp; mapPlayerData.PlayerData.Mp = data.PlayerData.Mp; mapPlayerData.PlayerData.MaxMp = data.PlayerData.MaxMp; mapPlayerData.Items.Clear(); mapPlayerData.Items.Add(data.Items); } GCMapGetReward reward = null; BattleMonsterTableSetting battleMonster = BattleMonsterTableSettings.Get(data.MonsterId); switch (data.Reason) { case 3: //对方放弃 case 0: //通关 reward = GetRewardById(battleMonster.RewardId); break; case 1: //失败 case 2: //逃跑,放弃 reward = GetRewardById(battleMonster.LoseReward); break; default: break; } if (reward != null) { //存奖励 mapPlayerData.AddedExp += reward.AddedExp; AddExp(mapPlayerData.PlayerData, reward.AddedExp); accountData.Diamonds += reward.Diamonds; mapPlayerData.PlayerData.Gold += reward.Gold; mapPlayerData.PlayerData.Food += reward.Food; if (reward.Cards.Count > 0) { mapPlayerData.Cards.Add(reward.Cards); } if (reward.Equips.Count > 0) { mapPlayerData.Equips.Add(reward.Equips); } if (reward.Items.Count > 0) { mapPlayerData.Items.Add(reward.Items); } if (reward.Buffs.Count > 0) { mapPlayerData.Buffs.Add(reward.Items); } for (int i = 0; i < reward.Cards.Count; i++) { if (reward.CardTemps[i] == 1) { mapPlayerData.RewardCards.Add(reward.Cards[i]); } } for (int i = 0; i < reward.Items.Count; i++) { if (reward.ItemTemps[i] == 1) { mapPlayerData.RewardItems.Add(reward.Items[i]); } } SaveData(ACCOUNT_DATA_KEY, accountData); SaveData(MAP_PLAYER_DATA_KEY, mapPlayerData); SendToClient(MessageId_Receive.GCMapGetReward, reward); } GCExitBattle exitBattle = new GCExitBattle(); exitBattle.MonsterId = data.MonsterId; exitBattle.Reason = data.Reason; SendToClient(MessageId_Receive.GCExitBattle, exitBattle); GCUpdateMapPlayerData updateMapPlayerData = new GCUpdateMapPlayerData(); updateMapPlayerData.MapPlayerData = mapPlayerData; updateMapPlayerData.PlayerId = mapPlayerData.PlayerData.PlayerId; SendToClient(MessageId_Receive.GCUpdateMapPlayerData, updateMapPlayerData); }
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); }