Пример #1
0
    public void loadSnapshot(RuneSaver saver)
    {
        runetype       = saver.runetype;
        toy_type       = saver.toy_type;
        invested_cost  = saver.invested_cost;
        ID             = saver.ID;
        level          = saver.level;
        xp             = saver.xp;
        distance_bonus = saver.distance_bonus;
        order          = saver.order;

        if (saver.max_level < 0)
        {
            saver.max_level = 0;
        }
        int max_level = Mathf.Max(saver.max_level,
                                  LevelStore.getMaxLevel(Central.Instance.current_lvl, Peripheral.Instance.difficulty, runetype, toy_type));

        setMaxLevel(max_level);

        Sun.OnDayTimeChange += OnDayTimeChange;
        StaticRune.assignStatBits(ref stats, this);

        foreach (StatBitSaver s in saver.stats)
        {
            StatBit stat = getStat(s.effect_type);
            stat.loadSnapshot(s, this);
        }

        UpdateTimeOfDay();
        setXpReqs();
        UpdateStats();
    }
Пример #2
0
 public ToySaver(string _name, float _ammo, RuneSaver _rune, ToyType _type, float _construction_time, tower_stats _tower_stats)
 {
     toy_name           = _name;
     ammo               = _ammo;
     rune_saver         = _rune;
     type               = _type;
     construnction_time = _construction_time;
     tower_stats        = _tower_stats;
 }
Пример #3
0
    public void loadSnapshot(RuneSaver rune_saver)
    {
        rune = new Rune();
        rune.loadSnapshot(rune_saver);

        if (rune_buttons != null)
        {
            rune_buttons.UpdateMe();
        }
        rune.UpdateStats();
    }
Пример #4
0
    public RuneSaver getSnapshot()
    {
        RuneSaver saver = new RuneSaver();

        saver.runetype       = runetype;
        saver.ID             = ID;
        saver.level          = level;
        saver.xp             = xp;
        saver.invested_cost  = invested_cost;
        saver.distance_bonus = distance_bonus;
        saver.order          = order;
        saver.toy_type       = toy_type;
        saver.max_level      = max_level;
        StatBitSaver[] saver_stats = new StatBitSaver[stats.Length];

        for (int i = 0; i < stats.Length; i++)
        {
            saver_stats[i] = stats[i].getSnapshot();
        }
        saver.stats = saver_stats;
        return(saver);
    }
Пример #5
0
    public void LoadBasicMidLevelShit(SaveState saver)
    {
        //	Debug.Log("Peripheral loaded snapshot, wave " + saver.current_wave + "\n");
        StopAllCoroutines();
        level_state = LState.WaveButton;
        ChangeTime(TimeScale.Normal);
        Wave_interval = 0f;
        TIME          = 0f;
        have_cities   = false;
        toy_parents   = new List <Toy>();
        Moon.Instance.WaveInProgress = false;
        foreach (unitStatsSaver a in saver.actor_stats)
        {
            Central.Instance.setUnitStats(a, a.toy_id.toy_type == ToyType.Hero);
        }

        Monitor.Instance.ResetIslands();

        xp_factor.Reset();
        damage_factor.Reset();
        dream_factor.Reset();

        difficulty = saver.difficulty;


        if (saver.type == SaveStateType.MidLevel)
        {
            FancyLoader.Instance.LoadWavesOnly(Central.Instance.level_list.levels[Central.Instance.current_lvl].name);

            Moon.Instance.SetWave(saver.current_wave, 0);
            Sun.Instance.Init(0);
            Moon.Instance.WaveInProgress = false;
            foreach (unitStatsSaver a in saver.actor_stats)
            {
                Central.Instance.setUnitStats(a, true);
            }

            TIME = next_wave_time;
            Debug.Log("Peripheral Loading snapshot\n");
            // Sun.Instance.SetTimePassively(saver.time_of_day);



            PlaceCastle();
            RuneSaver castle_toysaver = saver.getCastle();
            if (castle_toysaver != null)
            {
                castle.loadSnapshot(castle_toysaver);                         //this guy needs to be loaded first
            }
            else
            {
                Debug.LogError("Could not find castle toysaver!");
            }

            //castle.rune.DoSpecialThing(EffectType.Architect); //load gnomesss


            if (saver.health > 0)
            {
                SetHealth(saver.health, false);
            }
            dreams = saver.dreams;
            setToys(0);
            monster_count = 0;

            for (int i = 0; i < saver.islands.Count; i++)
            {
                var           island_saver = saver.islands[i];
                Island_Button island       = null;
                Monitor.Instance.islands.TryGetValue(island_saver.name, out island);

                if (island == null)
                {
                    Debug.Log("Could not find island " + island_saver.name + "\n"); continue;
                }
                if (island_saver.island_type != IslandType.Null)
                {
                    island.ChangeType(island_saver.island_type, false);
                }

                if (island_saver.toy_saver != null)
                {
                    if (island_saver.toy_saver.rune_saver.runetype == RuneType.Castle)
                    {
                        continue;
                    }
                    if (island_saver.toy_saver.toy_name.Equals(Get.NullToyName()))
                    {
                        continue;
                    }
                    Toy toy = null;


                    GameObject toy_object = makeToy(island_saver.toy_saver.toy_name, island, false, ref toy, false);
                    if (toy_object == null)
                    {
                        Debug.Log("FAILED TO LOAD TOY! NO FIREARM\n"); return;
                    }
                    toy.loadSnapshot(island_saver.toy_saver);
                    if (toy.firearm != null)
                    {
                        toy.firearm.CheckForUpgrades();
                    }

                    if (island_saver.toy_saver.rune_saver.runetype != RuneType.Modulator &&
                        (island_saver.toy_saver.type == ToyType.Normal))
                    {
                        incrementToys();
                    }
                }
                if (!(island_saver.block_timer > 0))
                {
                    continue;
                }
                island.MakeDeadIsland(island_saver.block_timer);
            }
            //skillmaster is initialized indirectly, when the toys are initialized, through Rune
            Central.Instance.level_list.special_skill_button_driver.Init();
            EagleEyes.Instance.UpdateToyButtons("blah", ToyType.Normal, false);
        }
        else
        {
            Debug.LogError("Loading midlevel shit on a non midlevel savegame!\n");
            Debug.Log("Peripheral loaded start level snapshot, current wave is " + 0 + "\n");
            Moon.Instance.SetWave(0, 0);

            Sun.Instance.Init(0);

            PlaceCastle();
        }// end loading snapshot specific stuff

        EagleEyes.Instance.UpdateToyButtons("blah", ToyType.Normal, false);
        level_active = true;
        ChangeTime(TimeScale.Normal);
        // not sure what this is for, what are we saving for castle???
        //if (saver.castle != null){  castle.loadSnapshot(saver.castle);		}
    }