Exemple #1
0
        public static void BeginFakeSelectHero()
        {
            HeroConfirmedPlayerNum = 0;
            FakeHeroSelectList.Clear();
            ChosenHeroes.Clear();
            EnemyChosenHeroes.Clear();
            Assets.Scripts.GameSystem.RoomInfo roomInfo = Singleton <CRoomSystem> .GetInstance().roomInfo;

            DebugHelper.Assert(roomInfo != null);
            DebugHelper.Assert(roomInfo.roomAttrib.bWarmBattle);
            COM_PLAYERCAMP selfCamp = roomInfo.GetSelfCamp();

            for (int i = 0; i < roomInfo.CampMemberList[((int)selfCamp) - 1].Count; i++)
            {
                MemberInfo info2 = roomInfo.CampMemberList[((int)selfCamp) - 1][i];
                if (info2.RoomMemberType == 2)
                {
                    FakeHeroSelect item = new FakeHeroSelect {
                        FakePlayer         = info2.WarmNpc,
                        maxChangeHeroCount = UnityEngine.Random.Range(1, 4),
                        nextActionSec      = UnityEngine.Random.Range(3, 6)
                    };
                    FakeHeroSelectList.Add(item);
                }
            }
            if (FakeHeroSelectList.Count > 0)
            {
                Singleton <CTimerManager> .GetInstance().AddTimer(0x3e8, 60, new CTimer.OnTimeUpHandler(CFakePvPHelper.UpdateFakeSelectHero));

                bInFakeSelect = true;
            }
            Singleton <CTimerManager> .GetInstance().AddTimer(0xea60, 1, new CTimer.OnTimeUpHandler(CFakePvPHelper.OnSelectHeroTimeout));
        }
Exemple #2
0
        public static void BeginFakeSelectHero()
        {
            HeroConfirmedPlayerNum = 0;
            FakeHeroSelectList.Clear();
            ChosenHeroes.Clear();
            EnemyChosenHeroes.Clear();
            RoomInfo roomInfo = Singleton <CRoomSystem> .GetInstance().roomInfo;

            DebugHelper.Assert(roomInfo != null);
            DebugHelper.Assert(roomInfo.roomAttrib.bWarmBattle);
            COM_PLAYERCAMP        selfCamp = roomInfo.GetSelfCamp();
            ListView <MemberInfo> view     = roomInfo[selfCamp];

            for (int i = 0; i < view.Count; i++)
            {
                MemberInfo info2 = view[i];
                if (info2.RoomMemberType == 2)
                {
                    FakeHeroSelect fakeSelect = new FakeHeroSelect {
                        FakePlayer = info2.WarmNpc
                    };
                    if (Singleton <CHeroSelectBaseSystem> .instance.selectType == enSelectType.enRandom)
                    {
                        fakeSelect.maxChangeHeroCount = UnityEngine.Random.Range(0, 2);
                        DoSelectAction(ref fakeSelect);
                    }
                    else
                    {
                        fakeSelect.maxChangeHeroCount = UnityEngine.Random.Range(1, 4);
                    }
                    fakeSelect.nextActionSec = UnityEngine.Random.Range(3, 6);
                    FakeHeroSelectList.Add(fakeSelect);
                }
            }
            if (FakeHeroSelectList.Count > 0)
            {
                Singleton <CTimerManager> .GetInstance().AddTimer(0x3e8, 60, new CTimer.OnTimeUpHandler(CFakePvPHelper.UpdateFakeSelectHero));

                bInFakeSelect = true;
            }
            Singleton <CTimerManager> .GetInstance().AddTimer(0xea60, 1, new CTimer.OnTimeUpHandler(CFakePvPHelper.OnSelectHeroTimeout));
        }
Exemple #3
0
        private static void ReqStartSingleWarmBattle()
        {
            bInFakeSelect = false;
            Singleton <CTimerManager> .GetInstance().RemoveTimer(new CTimer.OnTimeUpHandler(CFakePvPHelper.OnSelectHeroTimeout));

            RemoveAllFakeTimer();
            CSPkg    msg      = NetworkModule.CreateDefaultCSPKG(0x41a);
            RoomInfo roomInfo = Singleton <CRoomSystem> .GetInstance().roomInfo;

            if (roomInfo == null)
            {
                DebugHelper.Assert(roomInfo != null, "RoomInfo Should not be NULL!!!");
            }
            else if (roomInfo != null)
            {
                msg.stPkgData.stStartSingleGameReq.stBattleParam.bGameType = 1;
                msg.stPkgData.stStartSingleGameReq.stBattleParam.stGameDetail.stGameOfCombat = Singleton <CHeroSelectBaseSystem> .instance.m_stGameOfCombat;
                msg.stPkgData.stStartSingleGameReq.stBattleList.stBattleList.wHeroCnt        = 1;
                if (msg.stPkgData.stStartSingleGameReq.stBattleParam.stGameDetail.stGameOfCombat != null)
                {
                    MemberInfo masterMemberInfo = roomInfo.GetMasterMemberInfo();
                    if (masterMemberInfo != null)
                    {
                        msg.stPkgData.stStartSingleGameReq.stBattleList.stBattleList.BattleHeroList[0] = masterMemberInfo.ChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID;
                        ResDT_LevelCommonInfo pvpMapCommonInfo = CLevelCfgLogicManager.GetPvpMapCommonInfo(roomInfo.roomAttrib.bMapType, roomInfo.roomAttrib.dwMapId);
                        if (pvpMapCommonInfo != null)
                        {
                            COM_PLAYERCAMP camp     = COM_PLAYERCAMP.COM_PLAYERCAMP_1;
                            int            dwHeroID = 0;
                            for (COM_PLAYERCAMP com_playercamp2 = COM_PLAYERCAMP.COM_PLAYERCAMP_1; com_playercamp2 < COM_PLAYERCAMP.COM_PLAYERCAMP_COUNT; com_playercamp2 += 1)
                            {
                                ListView <MemberInfo> view = roomInfo[com_playercamp2];
                                for (int i = 0; i < view.Count; i++)
                                {
                                    if (view[i].ullUid == roomInfo.selfInfo.ullUid)
                                    {
                                        camp     = view[i].camp;
                                        dwHeroID = (int)view[i].ChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID;
                                        break;
                                    }
                                }
                            }
                            CSDT_BATTLE_PLAYER_BRIEF stBattlePlayer = msg.stPkgData.stStartSingleGameReq.stBattlePlayer;
                            int index = 0;
                            for (COM_PLAYERCAMP com_playercamp3 = COM_PLAYERCAMP.COM_PLAYERCAMP_1; com_playercamp3 < COM_PLAYERCAMP.COM_PLAYERCAMP_COUNT; com_playercamp3 += 1)
                            {
                                ListView <MemberInfo> view2 = roomInfo[com_playercamp3];
                                for (int j = 0; j < view2.Count; j++)
                                {
                                    MemberInfo info4 = view2[j];
                                    if (info4 != null)
                                    {
                                        if (info4.RoomMemberType == 2)
                                        {
                                            stBattlePlayer.astFighter[index].bObjType   = 2;
                                            stBattlePlayer.astFighter[index].bPosOfCamp = (byte)j;
                                            stBattlePlayer.astFighter[index].bObjCamp   = (byte)com_playercamp3;
                                            stBattlePlayer.astFighter[index].dwLevel    = info4.dwMemberPvpLevel;
                                            FakeHeroSelect fakeHeroSelect = GetFakeHeroSelect(info4.ullUid);
                                            if (fakeHeroSelect != null)
                                            {
                                                stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID             = fakeHeroSelect.selectedHero;
                                                stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo.stCommonInfo.stSkill.dwSelSkillID = fakeHeroSelect.selectedPlayerSkill;
                                                stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo.stCommonInfo.wSkinID = (ushort)fakeHeroSelect.selectedSkin;
                                                stBattlePlayer.astFighter[index].szName = fakeHeroSelect.FakePlayer.szUserName;
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc                    = new COMDT_PLAYERINFO_OF_NPC();
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.ullFakeUid         = fakeHeroSelect.FakePlayer.ullUid;
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakePvpLevel     = fakeHeroSelect.FakePlayer.dwAcntPvpLevel;
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakeLogicWorldID = fakeHeroSelect.FakePlayer.dwLogicWorldId;
                                            }
                                            else
                                            {
                                                SelectHeroForEnemyPlayer(ref stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo, stBattlePlayer.astFighter[index].dwLevel);
                                                stBattlePlayer.astFighter[index].szName = info4.WarmNpc.szUserName;
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc                    = new COMDT_PLAYERINFO_OF_NPC();
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.ullFakeUid         = info4.WarmNpc.ullUid;
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakePvpLevel     = info4.WarmNpc.dwAcntPvpLevel;
                                                stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakeLogicWorldID = info4.WarmNpc.dwLogicWorldId;
                                            }
                                        }
                                        else if (info4.RoomMemberType == 1)
                                        {
                                            stBattlePlayer.astFighter[index].bObjType   = 1;
                                            stBattlePlayer.astFighter[index].bPosOfCamp = (byte)j;
                                            stBattlePlayer.astFighter[index].bObjCamp   = (byte)camp;
                                            for (int k = 0; k < pvpMapCommonInfo.bHeroNum; k++)
                                            {
                                                stBattlePlayer.astFighter[index].astChoiceHero[k].stBaseInfo.stCommonInfo.dwHeroID = (uint)dwHeroID;
                                            }
                                        }
                                        index++;
                                    }
                                }
                            }
                            stBattlePlayer.bNum             = (byte)index;
                            roomInfo.roomAttrib.bWarmBattle = false;
                            roomInfo.roomAttrib.npcAILevel  = 2;
                            Singleton <NetworkModule> .GetInstance().SendLobbyMsg(ref msg, true);
                        }
                    }
                    else
                    {
                        DebugHelper.Assert(roomInfo != null, "selfInfo Should not be NULL!!!");
                    }
                }
            }
        }
Exemple #4
0
        private static void DoSelectAction(ref FakeHeroSelect fakeSelect)
        {
            if (IsInSelectHero())
            {
                if (fakeSelect.changeHeroCount < fakeSelect.maxChangeHeroCount)
                {
                    int             id          = 0;
                    uint            dwHeroID    = 0;
                    ResFakeAcntHero dataByIndex = null;
                    if (fakeSelect.FakePlayer.dwAcntPvpLevel <= 6)
                    {
                        id          = UnityEngine.Random.Range(0, GameDataMgr.robotRookieHeroSkinDatabin.Count());
                        dataByIndex = GameDataMgr.robotRookieHeroSkinDatabin.GetDataByIndex(id);
                        if (dataByIndex == null)
                        {
                            return;
                        }
                        for (dwHeroID = dataByIndex.dwHeroID; ChosenHeroes.ContainsValue(dataByIndex.dwHeroID); dwHeroID = dataByIndex.dwHeroID)
                        {
                            id          = UnityEngine.Random.Range(0, GameDataMgr.robotRookieHeroSkinDatabin.Count());
                            dataByIndex = GameDataMgr.robotRookieHeroSkinDatabin.GetDataByIndex(id);
                            if (dataByIndex == null)
                            {
                                return;
                            }
                        }
                    }
                    else
                    {
                        CRoleInfo masterRoleInfo = Singleton <CRoleInfoManager> .GetInstance().GetMasterRoleInfo();

                        int num3 = GameDataMgr.robotVeteranHeroSkinDatabin.Count();
                        int max  = num3 + ((masterRoleInfo == null) ? 0 : masterRoleInfo.freeHeroList.Count);
                        id = UnityEngine.Random.Range(0, max);
                        if (id < num3)
                        {
                            dataByIndex = GameDataMgr.robotVeteranHeroSkinDatabin.GetDataByIndex(id);
                            if (dataByIndex == null)
                            {
                                return;
                            }
                            dwHeroID = dataByIndex.dwHeroID;
                        }
                        else
                        {
                            dwHeroID = masterRoleInfo.freeHeroList[id - num3].dwFreeHeroID;
                        }
                        while (ChosenHeroes.ContainsValue(dwHeroID))
                        {
                            id = UnityEngine.Random.Range(0, max);
                            if (id < num3)
                            {
                                dataByIndex = GameDataMgr.robotVeteranHeroSkinDatabin.GetDataByIndex(id);
                                if (dataByIndex == null)
                                {
                                    return;
                                }
                                dwHeroID = dataByIndex.dwHeroID;
                            }
                            else
                            {
                                dwHeroID = masterRoleInfo.freeHeroList[id - num3].dwFreeHeroID;
                            }
                        }
                    }
                    ChosenHeroes[fakeSelect.FakePlayer.ullUid] = dwHeroID;
                    fakeSelect.selectedHero = dwHeroID;
                    fakeSelect.changeHeroCount++;
                    RoomInfo roomInfo = Singleton <CHeroSelectBaseSystem> .instance.roomInfo;
                    if (roomInfo != null)
                    {
                        MemberInfo memberInfo = roomInfo.GetMemberInfo(fakeSelect.FakePlayer.ullUid);
                        if ((memberInfo != null) && (memberInfo.ChoiceHero[0] != null))
                        {
                            memberInfo.ChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID = dwHeroID;
                            Singleton <CHeroSelectNormalSystem> .GetInstance().RefreshHeroPanel(false, true);
                        }
                    }
                }
                else
                {
                    if (fakeSelect.FakePlayer.dwAcntPvpLevel <= 6)
                    {
                        ResFakeAcntHero hero2 = GameDataMgr.robotRookieHeroSkinDatabin.GetDataByKey(fakeSelect.selectedHero);
                        if (((hero2 != null) && (hero2.dwSkinID != 0)) && (UnityEngine.Random.Range(0, 0x2710) < hero2.dwSkinRate))
                        {
                            fakeSelect.selectedSkin = (int)hero2.dwSkinID;
                        }
                    }
                    else
                    {
                        ResFakeAcntHero hero3 = GameDataMgr.robotVeteranHeroSkinDatabin.GetDataByKey(fakeSelect.selectedHero);
                        if (((hero3 != null) && (hero3.dwSkinID != 0)) && (UnityEngine.Random.Range(0, 0x2710) < hero3.dwSkinRate))
                        {
                            fakeSelect.selectedSkin = (int)hero3.dwSkinID;
                        }
                    }
                    ResFakeAcntSkill dataByKey = GameDataMgr.robotPlayerSkillDatabin.GetDataByKey(fakeSelect.FakePlayer.dwAcntPvpLevel);
                    if (dataByKey != null)
                    {
                        int index = UnityEngine.Random.Range(0, dataByKey.SkillId.Length);
                        while (dataByKey.SkillId[index] == 0)
                        {
                            index = UnityEngine.Random.Range(0, dataByKey.SkillId.Length);
                        }
                        uint num8 = dataByKey.SkillId[index];
                        fakeSelect.selectedPlayerSkill = num8;
                    }
                    fakeSelect.bConfirmed = true;
                    HeroConfirmedPlayerNum++;
                    MemberInfo info5 = Singleton <CRoomSystem> .GetInstance().roomInfo.GetMemberInfo(fakeSelect.FakePlayer.ullUid);

                    if ((info5 != null) && (info5.ChoiceHero[0] != null))
                    {
                        info5.ChoiceHero[0].stBaseInfo.stCommonInfo.stSkill.dwSelSkillID = fakeSelect.selectedPlayerSkill;
                        info5.isPrepare = true;
                        Singleton <CHeroSelectNormalSystem> .GetInstance().RefreshHeroPanel(false, true);
                    }
                    if (HeroConfirmedPlayerNum == (FakeHeroSelectList.Count + 1))
                    {
                        ReqStartSingleWarmBattle();
                    }
                }
            }
        }
Exemple #5
0
        private static void ReqStartSingleWarmBattle()
        {
            bInFakeSelect = false;
            Singleton <CTimerManager> .GetInstance().RemoveTimer(new CTimer.OnTimeUpHandler(CFakePvPHelper.OnSelectHeroTimeout));

            CSPkg msg = NetworkModule.CreateDefaultCSPKG(0x41a);

            Assets.Scripts.GameSystem.RoomInfo roomInfo = Singleton <CRoomSystem> .GetInstance().roomInfo;

            DebugHelper.Assert(roomInfo != null, "RoomInfo Should not be NULL!!!");
            if (roomInfo != null)
            {
                msg.stPkgData.stStartSingleGameReq.stBattleParam.bGameType = 1;
                msg.stPkgData.stStartSingleGameReq.stBattleParam.stGameDetail.stGameOfCombat = Singleton <CHeroSelectSystem> .GetInstance().m_stGameOfCombat;

                msg.stPkgData.stStartSingleGameReq.stBattleList.stBattleList.wHeroCnt = 1;
                MemberInfo masterMemberInfo = roomInfo.GetMasterMemberInfo();
                DebugHelper.Assert(masterMemberInfo != null, "self Info Should not be NULL!!!");
                if (masterMemberInfo != null)
                {
                    msg.stPkgData.stStartSingleGameReq.stBattleList.stBattleList.BattleHeroList[0] = masterMemberInfo.ChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID;
                }
                ResAcntBattleLevelInfo dataByKey = GameDataMgr.pvpLevelDatabin.GetDataByKey(roomInfo.roomAttrib.dwMapId);
                DebugHelper.Assert(dataByKey != null);
                if (dataByKey != null)
                {
                    ResDT_LevelCommonInfo stLevelCommonInfo = dataByKey.stLevelCommonInfo;
                    COM_PLAYERCAMP        camp = COM_PLAYERCAMP.COM_PLAYERCAMP_1;
                    int dwHeroID = 0;
                    for (int i = 0; i < roomInfo.CampMemberList.Length; i++)
                    {
                        ListView <MemberInfo> view = roomInfo.CampMemberList[i];
                        for (int k = 0; k < view.Count; k++)
                        {
                            if (view[k].ullUid == roomInfo.selfInfo.ullUid)
                            {
                                camp     = view[k].camp;
                                dwHeroID = (int)view[k].ChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID;
                                break;
                            }
                        }
                    }
                    CSDT_BATTLE_PLAYER_BRIEF stBattlePlayer = msg.stPkgData.stStartSingleGameReq.stBattlePlayer;
                    int index = 0;
                    for (int j = 0; j < 2; j++)
                    {
                        for (int m = 0; m < roomInfo.CampMemberList[j].Count; m++)
                        {
                            MemberInfo info5 = roomInfo.CampMemberList[j][m];
                            if (info5 != null)
                            {
                                if (info5.RoomMemberType == 2)
                                {
                                    stBattlePlayer.astFighter[index].bObjType   = 2;
                                    stBattlePlayer.astFighter[index].bPosOfCamp = (byte)m;
                                    stBattlePlayer.astFighter[index].bObjCamp   = (byte)(j + 1);
                                    stBattlePlayer.astFighter[index].dwLevel    = info5.dwMemberPvpLevel;
                                    FakeHeroSelect fakeHeroSelect = GetFakeHeroSelect(info5.ullUid);
                                    if (fakeHeroSelect != null)
                                    {
                                        stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo.stCommonInfo.dwHeroID             = fakeHeroSelect.selectedHero;
                                        stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo.stCommonInfo.stSkill.dwSelSkillID = fakeHeroSelect.selectedPlayerSkill;
                                        stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo.stCommonInfo.wSkinID = (ushort)fakeHeroSelect.selectedSkin;
                                        stBattlePlayer.astFighter[index].szName = fakeHeroSelect.FakePlayer.szUserName;
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc                    = new COMDT_PLAYERINFO_OF_NPC();
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.ullFakeUid         = fakeHeroSelect.FakePlayer.ullUid;
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakePvpLevel     = fakeHeroSelect.FakePlayer.dwAcntPvpLevel;
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakeLogicWorldID = fakeHeroSelect.FakePlayer.dwLogicWorldId;
                                    }
                                    else
                                    {
                                        SelectHeroForEnemyPlayer(ref stBattlePlayer.astFighter[index].astChoiceHero[0].stBaseInfo, stBattlePlayer.astFighter[index].dwLevel);
                                        stBattlePlayer.astFighter[index].szName = info5.WarmNpc.szUserName;
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc                    = new COMDT_PLAYERINFO_OF_NPC();
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.ullFakeUid         = info5.WarmNpc.ullUid;
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakePvpLevel     = info5.WarmNpc.dwAcntPvpLevel;
                                        stBattlePlayer.astFighter[index].stDetail.stPlayerOfNpc.dwFakeLogicWorldID = info5.WarmNpc.dwLogicWorldId;
                                    }
                                }
                                else if (info5.RoomMemberType == 1)
                                {
                                    stBattlePlayer.astFighter[index].bObjType   = 1;
                                    stBattlePlayer.astFighter[index].bPosOfCamp = (byte)m;
                                    stBattlePlayer.astFighter[index].bObjCamp   = (byte)camp;
                                    for (int n = 0; n < stLevelCommonInfo.bHeroNum; n++)
                                    {
                                        stBattlePlayer.astFighter[index].astChoiceHero[n].stBaseInfo.stCommonInfo.dwHeroID = (uint)dwHeroID;
                                    }
                                }
                                index++;
                            }
                        }
                    }
                    stBattlePlayer.bNum             = (byte)index;
                    roomInfo.roomAttrib.bWarmBattle = false;
                    roomInfo.roomAttrib.npcAILevel  = 2;
                    Singleton <NetworkModule> .GetInstance().SendLobbyMsg(ref msg, true);
                }
            }
        }