public static void Postfix()
            {
                List <BloonModel> goldenBloons = new List <BloonModel>();

                foreach (var item in Game.instance.model.bloons)
                {
                    if (item.baseId == "Golden")
                    {
                        goldenBloons.Add(item);
                    }
                }
                Random rand = new Random();
                Il2CppReferenceArray <RoundSetModel> roundSets = InGame.instance.bridge.Model.roundSets;

                for (int i = 0; i < roundSets.Length; i++)
                {
                    Il2CppReferenceArray <RoundModel> rounds = roundSets[i].rounds;
                    for (int j = 0; j < rounds.Length; j++)
                    {
                        int randombloon = rand.Next(0, goldenBloons.Count);
                        BloonEmissionModel goldenBloon = new BloonEmissionModel(goldenBloons[randombloon].id, 0, goldenBloons[randombloon].id);
                        Il2CppReferenceArray <BloonEmissionModel> temp = rounds[j].emissions;
                        List <BloonEmissionModel> temp2 = new List <BloonEmissionModel>();
                        foreach (var item in temp)
                        {
                            temp2.Add(item);
                        }
                        temp2.Add(goldenBloon);
                        rounds[j].emissions_ = (Il2CppReferenceArray <BloonEmissionModel>)temp2.ToArray();
                    }
                }
            }
예제 #2
0
        /// <summary>
        /// (Cross-Game compatible) Spawn a BloonModel on the map
        /// </summary>
        /// <param name="spawner"></param>
        /// <param name="bloonModel"></param>
        public static void Emit(this Spawner spawner, BloonModel bloonModel)
        {
#if BloonsTD6
            Il2CppSystem.Collections.Generic.List <Bloon.ChargedMutator> chargedMutators    = new Il2CppSystem.Collections.Generic.List <Bloon.ChargedMutator>();
            Il2CppSystem.Collections.Generic.List <BehaviorMutator>      nonChargedMutators = new Il2CppSystem.Collections.Generic.List <BehaviorMutator>();
            spawner.Emit(bloonModel, InGame.Bridge.GetCurrentRound(), 0);
#elif BloonsAT
            var emissionModel = new BloonEmissionModel(bloonType: bloonModel.baseType);
            spawner.Emit(emissionModel);
#endif
        }
예제 #3
0
        public override void OnUpdate()
        {
            base.OnUpdate();
            bool inAGame = InGame.instance != null && InGame.instance.bridge != null;


            if (inAGame)
            {
                if (!updated)
                {
                    var rounds = InGame.instance.bridge.Model.roundSetsByName;
                    var rsm    = rounds["DefaultRoundSet"];
                    for (int i = 0; i < rsm.rounds.Count; i++)
                    {
                        Il2CppReferenceArray <BloonEmissionModel> bme = new Il2CppReferenceArray <BloonEmissionModel>(rsm.rounds[i].emissions.Count);
                        for (int j = 0; j < rsm.rounds[i].emissions.Count; j++)
                        {
                            bme[j] = new BloonEmissionModel(rsm.rounds[i].emissions[j].bloon, 0, rsm.rounds[i].emissions[j].bloon);
                        }
                        rsm.rounds[i].emissions_ = bme;
                    }

                    rsm = rounds["AlternateRoundSet"];
                    for (int i = 0; i < rsm.rounds.Count; i++)
                    {
                        Il2CppReferenceArray <BloonEmissionModel> bme = new Il2CppReferenceArray <BloonEmissionModel>(rsm.rounds[i].emissions.Count);
                        for (int j = 0; j < rsm.rounds[i].emissions.Count; j++)
                        {
                            bme[j] = new BloonEmissionModel(rsm.rounds[i].emissions[j].bloon, 0, rsm.rounds[i].emissions[j].bloon);
                        }
                        rsm.rounds[i].emissions_ = bme;
                    }
                    updated = true;
                }
            }
            else
            {
                updated = false;
            }
        }
예제 #4
0
        public override void OnUpdate()
        {
            base.OnUpdate();
            bool inAGame = InGame.instance != null && InGame.instance.bridge != null;


            if (inAGame)
            {
                if (!updated)
                {
                    var rounds = InGame.instance.bridge.Model.roundSetsByName;
                    var def    = rounds["DefaultRoundSet"];
                    var abr    = rounds["AlternateRoundSet"];
                    for (int i = 0; i < def.rounds.Count; i++)
                    {
                        var total = def.rounds[i].emissions.Count + abr.rounds[i].emissions.Count;
                        Il2CppReferenceArray <BloonEmissionModel> new_emissions = new Il2CppReferenceArray <BloonEmissionModel>(total);
                        for (int j = 0; j < def.rounds[i].emissions.Count; j++)
                        {
                            new_emissions[j] = new BloonEmissionModel(def.rounds[i].emissions[j].bloon, def.rounds[i].emissions[j].time, def.rounds[i].emissions[j].bloon);
                        }
                        for (int j = 0; j < abr.rounds[i].emissions.Count; j++)
                        {
                            new_emissions[j + def.rounds[i].emissions.Count] = new BloonEmissionModel(abr.rounds[i].emissions[j].bloon, abr.rounds[i].emissions[j].time, abr.rounds[i].emissions[j].bloon);
                        }
                        def.rounds[i].emissions_ = new_emissions;
                    }

                    updated = true;
                }
            }
            else
            {
                updated = false;
            }
        }