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)); }
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)); }
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!!!"); } } } }
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(); } } } }
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); } } }