Example #1
0
        public static void WriteBattleViewEvent(this NetworkWriter writer, PBS.Battle.View.Events.Base obj)
        {
            if (obj is PBS.Battle.View.Events.Message message)
            {
                writer.WriteInt32(MESSAGE);
                writer.WriteString(message.message);
            }
            else if (obj is PBS.Battle.View.Events.MessageParameterized messageParameterized)
            {
                writer.WriteInt32(MESSAGEPARAMETERIZED);
                writer.WriteString(messageParameterized.messageCode);
                writer.WriteBoolean(messageParameterized.isQueryResponse);
                writer.WriteBoolean(messageParameterized.isQuerySuccessful);
                writer.WriteInt32(messageParameterized.playerPerspectiveID);
                writer.WriteInt32(messageParameterized.teamPerspectiveID);

                writer.WriteString(messageParameterized.pokemonID);
                writer.WriteString(messageParameterized.pokemonUserID);
                writer.WriteString(messageParameterized.pokemonTargetID);
                writer.WriteList(messageParameterized.pokemonListIDs);

                writer.WriteInt32(messageParameterized.trainerID);

                writer.WriteInt32(messageParameterized.teamID);

                writer.WriteString(messageParameterized.typeID);
                writer.WriteList(messageParameterized.typeIDs);

                writer.WriteString(messageParameterized.moveID);
                writer.WriteList(messageParameterized.moveIDs);

                writer.WriteString(messageParameterized.abilityID);
                writer.WriteList(messageParameterized.abilityIDs);

                writer.WriteString(messageParameterized.itemID);
                writer.WriteList(messageParameterized.itemIDs);

                writer.WriteString(messageParameterized.statusID);
                writer.WriteString(messageParameterized.statusTeamID);
                writer.WriteString(messageParameterized.statusEnvironmentID);

                writer.WriteList(messageParameterized.intArgs);

                List <int> statInts = new List <int>();
                for (int i = 0; i < messageParameterized.statList.Count; i++)
                {
                    statInts.Add((int)messageParameterized.statList[i]);
                }
                writer.WriteList(statInts);
            }


            else if (obj is PBS.Battle.View.Events.ModelUpdate modelUpdate)
            {
                writer.WriteInt32(MODELUPDATE);
                writer.WriteBoolean(modelUpdate.loadAssets);
            }
            else if (obj is PBS.Battle.View.Events.ModelUpdatePokemon modelUpdatePokemon)
            {
                writer.WriteInt32(MODELUPDATEPOKEMON);
                writer.WriteBoolean(modelUpdatePokemon.loadAsset);
                writer.WriteBattleViewCompactPokemon(modelUpdatePokemon.pokemon);
            }
            else if (obj is PBS.Battle.View.Events.ModelUpdateTrainer modelUpdateTrainer)
            {
                writer.WriteInt32(MODELUPDATETRAINER);
                writer.WriteBoolean(modelUpdateTrainer.loadAsset);
                writer.WriteString(modelUpdateTrainer.name);
                writer.WriteInt32(modelUpdateTrainer.playerID);
                writer.WriteInt32(modelUpdateTrainer.teamID);
                writer.WriteList(modelUpdateTrainer.party);
                writer.WriteList(modelUpdateTrainer.items);
                writer.WriteList(modelUpdateTrainer.controlPos);
            }
            else if (obj is PBS.Battle.View.Events.ModelUpdateTeam modelUpdateTeam)
            {
                writer.WriteInt32(MODELUPDATETEAM);
                writer.WriteBoolean(modelUpdateTeam.loadAsset);
                writer.WriteInt32(modelUpdateTeam.teamID);
                writer.WriteInt32((int)modelUpdateTeam.teamMode);
                writer.WriteList(modelUpdateTeam.trainers);
            }


            else if (obj is PBS.Battle.View.Events.CommandGeneralPrompt commandGeneralPrompt)
            {
                writer.WriteInt32(COMMANDGENERALPROMPT);
                writer.WriteInt32(commandGeneralPrompt.playerID);
                writer.WriteBoolean(commandGeneralPrompt.multiTargetSelection);
                writer.WriteBoolean(commandGeneralPrompt.canMegaEvolve);
                writer.WriteBoolean(commandGeneralPrompt.canZMove);
                writer.WriteBoolean(commandGeneralPrompt.canDynamax);
                writer.WriteList(commandGeneralPrompt.items);
                writer.WriteList(commandGeneralPrompt.pokemonToCommand);
            }
            else if (obj is PBS.Battle.View.Events.CommandReplacementPrompt commandReplacementPrompt)
            {
                writer.WriteInt32(COMMANDREPLACEMENTPROMPT);
                writer.WriteInt32(commandReplacementPrompt.playerID);
                writer.WriteArray(commandReplacementPrompt.fillPositions);
            }


            else if (obj is PBS.Battle.View.Events.StartBattle startBattle)
            {
                writer.WriteInt32(STARTBATTLE);
            }
            else if (obj is PBS.Battle.View.Events.EndBattle endBattle)
            {
                writer.WriteInt32(ENDBATTLE);
                writer.WriteInt32(endBattle.winningTeam);
            }


            else if (obj is PBS.Battle.View.Events.TrainerSendOut trainerSendOut)
            {
                writer.WriteInt32(TRAINERSENDOUT);
                writer.WriteInt32(trainerSendOut.playerID);
                writer.WriteList(trainerSendOut.pokemonUniqueIDs);
            }
            else if (obj is PBS.Battle.View.Events.TrainerMultiSendOut trainerMultiSendOut)
            {
                writer.WriteInt32(TRAINERMULTISENDOUT);
                writer.WriteList(trainerMultiSendOut.sendEvents);
            }
            else if (obj is PBS.Battle.View.Events.TrainerWithdraw trainerWithdraw)
            {
                writer.WriteInt32(TRAINERWITHDRAW);
                writer.WriteInt32(trainerWithdraw.playerID);
                writer.WriteList(trainerWithdraw.pokemonUniqueIDs);
            }
            else if (obj is PBS.Battle.View.Events.TrainerItemUse trainerItemUse)
            {
                writer.WriteInt32(TRAINERITEMUSE);
                writer.WriteInt32(trainerItemUse.playerID);
                writer.WriteString(trainerItemUse.itemID);
            }


            else if (obj is PBS.Battle.View.Events.PokemonChangeForm pokemonChangeForm)
            {
                writer.WriteInt32(POKEMONCHANGEFORM);
                writer.WriteString(pokemonChangeForm.pokemonUniqueID);
                writer.WriteString(pokemonChangeForm.preForm);
                writer.WriteString(pokemonChangeForm.postForm);
            }
            else if (obj is PBS.Battle.View.Events.PokemonSwitchPosition pokemonSwitchPosition)
            {
                writer.WriteInt32(POKEMONSWITCHPOSITION);
                writer.WriteString(pokemonSwitchPosition.pokemonUniqueID1);
                writer.WriteString(pokemonSwitchPosition.pokemonUniqueID2);
            }

            else if (obj is PBS.Battle.View.Events.PokemonHealthDamage pokemonHealthDamage)
            {
                writer.WriteInt32(POKEMONHEALTHDAMAGE);
                writer.WriteString(pokemonHealthDamage.pokemonUniqueID);
                writer.WriteInt32(pokemonHealthDamage.preHP);
                writer.WriteInt32(pokemonHealthDamage.postHP);
                writer.WriteInt32(pokemonHealthDamage.maxHP);
            }
            else if (obj is PBS.Battle.View.Events.PokemonHealthHeal pokemonHealthHeal)
            {
                writer.WriteInt32(POKEMONHEALTHHEAL);
                writer.WriteString(pokemonHealthHeal.pokemonUniqueID);
                writer.WriteInt32(pokemonHealthHeal.preHP);
                writer.WriteInt32(pokemonHealthHeal.postHP);
                writer.WriteInt32(pokemonHealthHeal.maxHP);
            }
            else if (obj is PBS.Battle.View.Events.PokemonHealthFaint pokemonHealthFaint)
            {
                writer.WriteInt32(POKEMONHEALTHFAINT);
                writer.WriteString(pokemonHealthFaint.pokemonUniqueID);
            }
            else if (obj is PBS.Battle.View.Events.PokemonHealthRevive pokemonHealthRevive)
            {
                writer.WriteInt32(POKEMONHEALTHREVIVE);
                writer.WriteString(pokemonHealthRevive.pokemonUniqueID);
            }

            else if (obj is PBS.Battle.View.Events.PokemonMoveUse pokemonMoveUse)
            {
                writer.WriteInt32(POKEMONMOVEUSE);
                writer.WriteString(pokemonMoveUse.pokemonUniqueID);
                writer.WriteString(pokemonMoveUse.moveID);
            }
            else if (obj is PBS.Battle.View.Events.PokemonMoveHit pokemonMoveHit)
            {
                writer.WriteInt32(POKEMONMOVEHIT);
                writer.WriteString(pokemonMoveHit.pokemonUniqueID);
                writer.WriteString(pokemonMoveHit.moveID);
                writer.WriteInt32(pokemonMoveHit.currentHit);
                writer.WriteList(pokemonMoveHit.hitTargets);
            }

            else if (obj is PBS.Battle.View.Events.PokemonStatChange pokemonStatChange)
            {
                writer.WriteInt32(POKEMONSTATCHANGE);
                writer.WriteString(pokemonStatChange.pokemonUniqueID);
                writer.WriteInt32(pokemonStatChange.modValue);
                writer.WriteBoolean(pokemonStatChange.maximize);
                writer.WriteBoolean(pokemonStatChange.minimize);

                List <int> statInts = new List <int>();
                for (int i = 0; i < pokemonStatChange.statsToMod.Count; i++)
                {
                    statInts.Add((int)pokemonStatChange.statsToMod[i]);
                }
                writer.WriteList(statInts);
            }
            else if (obj is PBS.Battle.View.Events.PokemonStatUnchangeable pokemonStatUnchangeable)
            {
                writer.WriteInt32(POKEMONSTATUNCHANGEABLE);
                writer.WriteString(pokemonStatUnchangeable.pokemonUniqueID);
                writer.WriteBoolean(pokemonStatUnchangeable.tooHigh);

                List <int> statInts = new List <int>();
                for (int i = 0; i < pokemonStatUnchangeable.statsToMod.Count; i++)
                {
                    statInts.Add((int)pokemonStatUnchangeable.statsToMod[i]);
                }
                writer.WriteList(statInts);
            }

            else if (obj is PBS.Battle.View.Events.PokemonAbilityActivate pokemonAbilityActivate)
            {
                writer.WriteInt32(POKEMONABILITYACTIVATE);
                writer.WriteString(pokemonAbilityActivate.pokemonUniqueID);
                writer.WriteString(pokemonAbilityActivate.abilityID);
            }

            else
            {
                writer.WriteInt32(BASE);
            }
        }