Example #1
0
    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);
    }
Example #2
0
    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;
    }
Example #3
0
    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);
        }
    }
Example #4
0
 public void Update(PBPlayerDetailData playerDetailData)
 {
     //PlayerDetailData.Deck = new Deck();
     //for (int i = 0; i < characterData.DefaultCardList.Count; i++)
     //{
     //    NormalCard normalCard = new NormalCard(characterData.DefaultCardList[i], uidIndex++);
     //    CardList.Add(normalCard);
     //    PlayerDetailData.Kaku.Add(normalCard);
     //    PlayerDetailData.Deck.AddCard(normalCard);
     //}
     for (int i = 0; i < playerDetailData.Equips.Count; i++)
     {
         m_EquipList.Add(new NormalCard(playerDetailData.Equips[i], false));
     }
     for (int i = 0; i < playerDetailData.Buffs.Count; i++)
     {
         m_BuffList.Add(new NormalCard(playerDetailData.Buffs[i], false));
     }
     for (int i = 0; i < playerDetailData.Cards.Count; i++)
     {
         m_CardList.Add(new NormalCard(playerDetailData.Cards[i], false));
     }
     for (int i = 0; i < playerDetailData.Items.Count; i++)
     {
         m_ItemList.Add(new ItemData(playerDetailData.Items[i]));
     }
     UsingDeck = playerDetailData.UsingDeckIndex;
     for (int i = 0; i < playerDetailData.Decks.Count; i++)
     {
         PBDeck pbDeck = playerDetailData.Decks[i];
         Deck   deck   = new Deck(pbDeck.Index, pbDeck.MaxCount, pbDeck.Name);
         for (int j = 0; j < pbDeck.Cards.Count; j++)
         {
             deck.AddCard(new NormalCard(pbDeck.Cards[j], false));
         }
         decks[pbDeck.Index] = deck;
     }
     for (int i = 0; i < m_CardList.Count; i++)
     {
         kaku.Add(m_CardList[i]);
     }
 }
    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);
    }