예제 #1
0
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            LOAD STATS



    public void LoadStats(InitLevel level)
    {
        Peripheral.Instance.addDreams(level.init_stats.dreams, Vector3.zero, false);
        Peripheral.Instance.max_dreams = 2000;
        PathfinderType PathType = PathfinderType.GridBased;

        Peripheral.Instance.SetInitHealth(level.init_stats.health);
        Peripheral.Instance.pathf    = PathType;
        Peripheral.Instance.tileSize = 1; // not supported through file
        if (level.init_stats.map_size_x > 0)
        {
            EagleEyes.Instance.setMapSize(level.init_stats.map_size_x, level.init_stats.map_size_y);
        }
        else
        {
            Debug.LogError("WTF no map size\n");
        }

        /*
         * LevelMod[] level_mod;
         * if (level.init_stats.level_mod != null && level.init_stats.level_mod.Length > 0)
         * {
         *  level_mod = level.init_stats.level_mod;
         * }
         * else
         * {
         *  level_mod = new LevelMod[1];
         *  level_mod[0] = new LevelMod();
         * }
         *
         * Peripheral.Instance.level_mod = level_mod;
         */
        Peripheral.Instance.env_type = EnumUtil.EnumFromString <EnvType>(level.init_stats.env, EnvType.Default);
    }
예제 #2
0
    public TiledWorld(string name, InitLevel initLevel, int defaultBlock = 0) : base(name, initLevel)
    {
        this.defaultBlock = defaultBlock;
        string pathToJson = HardwareInterface.instance.Content.RootDirectory + "/maps/" + name + ".json";

        loadFromJson(pathToJson);
    }
예제 #3
0
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                    LOAD ACTORS
 public void LoadAllToys(InitLevel level)
 {
     for (int i = 0; i < level.toys.Length; i++)
     {
         unitStats actor = LoadToy(level.toys[i]);
         Central.Instance.setUnitStats(actor, true);
     }
 }
예제 #4
0
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%              LOAD FILE

    public void LevelWavesOnly(string filename)
    {
        TextAsset stuff = ((TextAsset)Resources.Load(Path.Combine("Levels", filename)));

        try
        {
            InitLevel level = JsonUtility.FromJson <InitLevel>(stuff.text);
            LoadWaves(level);
        } catch (Exception e)
        {
            Debug.Log(e.ToString() + "\n" + e.StackTrace + "\n");
        }
    }
예제 #5
0
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%            LOAD WAVES

    public void LoadWaves(InitLevel level)
    {
        //random wave mode is not supported!!!
        List <int> pathlist = new List <int>();

        LevelMod level_mod = Peripheral.Instance.getLevelMod();

        Moon.Instance.Waves = new List <wave>();


        for (int x = 0; x < level.waves.Length; x++)
        {
            InitWave init_wave = level.waves[x];
            int      i         = 1;
            wave     mywave    = new wave();
            mywave.points = init_wave.points;
            mywave.xp     = 5f;

            for (int y = 0; y < init_wave.wavelets.Length; y++)
            {
                InitWavelet init_wavelet = init_wave.wavelets[y];
                init_wavelet.Modify(level_mod.wave_time_multiplier);
                mywave.add_wavelet(init_wavelet, false);
                i++;
            }
            mywave.wait = init_wave.wait_time;

            TimeName time_start = EnumUtil.EnumFromString <TimeName>(init_wave.time_start, TimeName.Null);
            TimeName time_end   = EnumUtil.EnumFromString <TimeName>(init_wave.time_end, TimeName.Null);
            if (time_start != TimeName.Null && time_end != TimeName.Null)
            {
                mywave.SetTime(time_start, time_end, init_wave.time_change_percent);
            }
            else if (time_start != TimeName.Null)
            {
                mywave.SetStartTime(time_start);
            }
            else
            {
                mywave.SetStartTime(TimeName.Day);
                // Debug.Log("WAVE missing start time! Assuming Day\n");
            }
            //mywave.adjust_total_run_time();
            Moon.Instance.AddWave(mywave);
        }
        if (LevelBalancer.Instance.am_enabled)
        {
            LevelBalancer.Instance.original_waves = CloneUtil.copyList <wave>(Moon.Instance.Waves);
            LevelBalancer.Instance.AutoSetPaths();
        }
    }
예제 #6
0
    public void LoadLevel(string filename)
    {
        TextAsset stuff = ((TextAsset)Resources.Load(Path.Combine("Levels", filename)));

        try
        {
            InitLevel level = JsonUtility.FromJson <InitLevel>(stuff.text);
            LoadStats(level);
            LoadAllToys(level);
            LoadWish(level);
            LoadWaves(level);

            Moon.Instance.CalculateWishes();
        }
        catch (Exception e)
        {
            Debug.Log(e.ToString() + "\n" + e.StackTrace + "\n");
        }
    }
예제 #7
0
    public void LoadWish(InitLevel level)
    {
        WishDial[] dials = new WishDial[level.wishes.Length];

        for (int i = 0; i < level.wishes.Length; i++)
        {
            WishType type = EnumUtil.EnumFromString <WishType>(level.wishes[i].wishtype, WishType.Null);
            if (type == WishType.Null)
            {
                Debug.Log("Trying to load Null wishtype from file\n");
                continue;
            }

            dials[i] = new WishDial(type, level.wishes[i].count);
        }


        Moon.Instance.SetWishDials(dials);
    }
예제 #8
0
    public void TestToJson()
    {
        InitLevel test = new InitLevel();

        test.init_stats = new InitStats(90, 10, TimeName.Day, 24, 20, 16, new LevelMod[1], EnvType.Default);


        test.toys    = new InitToy[2];
        test.toys[0] = new InitToy("sensible_tower", 1);
        test.toys[1] = new InitToy("airy_tower", 1);


        test.waves = new InitWave[2];
        InitWavelet[] wavelets = new InitWavelet[2];

        InitEnemyCount[] enemies0 = new InitEnemyCount[2];
        enemies0[0] = new InitEnemyCount("soldier", 3, 0);
        enemies0[1] = new InitEnemyCount("furfly", 3, 1);

        wavelets[0] = new InitWavelet(0.5f, 3, enemies0);

        //

        InitEnemyCount[] enemies1 = new InitEnemyCount[2];
        enemies1[0] = new InitEnemyCount("tank", 3, 0);
        enemies1[1] = new InitEnemyCount("furfly", 6, 1);

        wavelets[1] = new InitWavelet(0.8f, 5, enemies1);


        test.waves[0] = new InitWave(TimeName.Night, TimeName.Day, 0.8f, 90, 3, wavelets);
        test.waves[1] = new InitWave(TimeName.Day, TimeName.Day, 0.8f, 95, 4, wavelets);

        test.wishes    = new InitWish[2];
        test.wishes[0] = new InitWish(WishType.MoreDamage, 2);
        test.wishes[1] = new InitWish(WishType.MoreXP, 8);
        Debug.Log(JsonUtility.ToJson(test, true));
    }
예제 #9
0
 public World(string name, InitLevel initLevel)
 {
     this.name      = name;
     this.initLevel = initLevel;
 }