using ProtoCSStruct; using Sog; namespace Game { public static class ChapterTest { public static void TestImport(PlayerOnGame player, int chapterId, int battleId) { { var packet = new StructPacket(); packet.Header.Type = (int)CSGameMsgID.BattleBeginReq; var parser = new StructMessageParser(); packet.Parser = parser; ref var req = ref packet.GetMessage(); req.ChapterId = chapterId; req.BattleId = battleId; req.IsGm = true; ChapterSvc.OnBattleBegin(player, packet); } { OnBattleOption(player, ChapterOption.ActiveMonster); } } private static int _seq = 0; public static void OnAllKillMonsters(PlayerOnGame player) { var stages = player.RoleData.BattleRecord.StageInfo; var stageId = player.RoleData.BattleRecord.MonsterStageId; var index = -1; for (int i = 0; i < stages.Count; i++) { if (stages[i].StageId == stageId) { index = i; break; } } if (index >= 0) { var stage = stages[index]; var monsters = stage.MonsterInfo; for (int i = 0; i < monsters.Count; i++) { for (int j = 0; j < monsters[i].Value; j++) { var packet = new StructPacket(); packet.Header.Type = (int)CSGameMsgID.KilledMonsterReq; var parser = new StructMessageParser(); packet.Parser = parser; ref var req = ref packet.GetMessage(); req.StageId = stageId; req.Seq = _seq++; req.MonsterId = monsters[i].Id; ChapterSvc.OnKilledMonsterReq(player, packet); } } } var stageDesc = ChapterBattleStageDescMgr.Instance.GetConfig(stageId); if (stageDesc.stageType == ChapterBattleStageType.Boss) { OnBattleOption(player, ChapterOption.EndBattle); return; } OnBattleOption(player, ChapterOption.ActiveMonster); } private static void OnBattleOption(PlayerOnGame player, ChapterOption option) { var packet = new StructPacket(); packet.Header.Type = (int)CSGameMsgID.BattleOptionReq; var parser = new StructMessageParser(); packet.Parser = parser; ref var req = ref packet.GetMessage(); req.Option = option; ChapterSvc.OnBattleOption(player, packet); if (option == ChapterOption.ActiveMonster) { OnAllKillMonsters(player); } } } }