Ejemplo n.º 1
0
    public void Load()
    {
        rowList.Clear();
        string[][] grid = CsvParser2.Parse(file.text);
        for (int i = 1; i < grid.Length; i++)
        {
            int           j   = 0;
            MyPlayerEvent row = new MyPlayerEvent();
            try
            {
                j               = 0;
                row.eventtype   = EnumUtil.EnumFromString <PlayerEvent>(grid[i][j++], PlayerEvent.Null);
                row.attribute_1 = grid[i][j++];
                row.attribute_2 = grid[i][j++];
                row.metric_1    = (grid[i][j].Equals(""))? 0 : float.Parse(grid[i][j]);
                j++;
                row.metric_2 = (grid[i][j].Equals("")) ? 0 : float.Parse(grid[i][j]);
                j++;
                row.wave_time = (grid[i][j].Equals("")) ? 0 : float.Parse(grid[i][j]);
                j++;
                row.eventtime = DateTime.Parse(grid[i][j]);
            }
            catch (Exception e)
            {
                Debug.Log("Could not parse " + String.Join(" | ", grid[i]) + " j " + j + " " + e.Message + "\n");
            }
            rowList.Add(row);
        }

        rowList.Sort();

        isLoaded = true;
    }
Ejemplo n.º 2
0
    bool SpecialSkillUsed(MyPlayerEvent e)
    {
        List <Vector2> positions = new List <Vector2>();

        string[] list = e.attribute_2.Split('|');
        foreach (string s in list)
        {
            if (s.Equals(""))
            {
                continue;
            }
            string[] coords = s.Split('_');
            positions.Add(new Vector2(float.Parse(coords[0]), float.Parse(coords[1])));
        }

        EffectType effectType = EnumUtil.EnumFromString <EffectType>(e.attribute_1, EffectType.Null);

        if (effectType == EffectType.Null || positions.Count == 0)
        {
            Debug.LogError("Cannot do special attack with an invalid effecttype or positions " + e.attribute_1 + " " + e.attribute_2 + "\n");
            return(false);
        }
        Peripheral.Instance.my_skillmaster.SimulateSkill(positions, effectType);
        return(true);
    }
Ejemplo n.º 3
0
    public void RunMe(int id)
    {
        //Tracker.track = false;
        current_run = id;

        MyPlayerEvent e = runs[current_run].findEventType(PlayerEvent.LoadGame);

        string[] settings = e.attribute_1.Split('|');

        Difficulty difficulty = EnumUtil.EnumFromString <Difficulty>(settings[0], Difficulty.Normal);

        int level = (int)e.metric_1;

        Central.Instance.game_saver.DeleteSaveGame(2);



        Central.Instance.game_saver.SelectSaveGame(2, true);
        Central.Instance.level_list.test_mode = true;
        Central.Instance.setCurrentLevel(level);
        Central.Instance.level_list.SetDifficulty(difficulty);

        Central.Instance.changeState(GameState.Loading, "NewLevel");
        skills_and_inventory = e.attribute_2;
        getNextEvent();
        am_running = true;
        done       = false;
        StartCoroutine(KeepTheFlow());
        StartCoroutine(runEvents());
        StartCoroutine(MaintainFF());
        StartCoroutine(TrackXP());
    }
Ejemplo n.º 4
0
    bool SkillUpgrade(MyPlayerEvent e)
    {
        int        order       = (int)e.metric_2;
        Toy        upgrade_me  = null;
        EffectType effect_type = EnumUtil.EnumFromString <EffectType>(e.attribute_1, EffectType.Null);

        if (effect_type == EffectType.Null)
        {
            Debug.LogError("Cannot upgrade toy of order " + order + " to invalid effectType " + e.attribute_1 + "\n");
            return(false);
        }

        foreach (Toy toy in toys)
        {
            if (toy.rune.order == order)
            {
                upgrade_me = toy;
            }
        }



        if (upgrade_me == null)
        {
            Debug.LogError("Could not find toy of order " + order + " to upgrade\n");
            return(false);
        }


        if (!upgrade_me.island.isBlocked() || upgrade_me.island.my_toy.building.construction_in_progress)
        {
            Debug.LogError("Toy of order " + order + " does not exist or is still building\n");
            return(false);
        }

        // StateType canUpgrade = upgrade_me.island.my_toy.rune.CanUpgrade(effect_type, upgrade_me.runetype);
        //if (canUpgrade == StateType.Yes)

        //{
        float success = upgrade_me.island.my_toy.rune.Upgrade(effect_type, true, true);

        if (success == 0)
        {
            Debug.LogError("Failed to upgrade toy " + order + " " + effect_type + "\n");
            return(false);
        }
        //}
        //else
        //{
        //Debug.LogError("Cannot upgrade toy " + order + " " + effect_type + ": " + canUpgrade + "\n");
        //return false;
        //}

        return(true);
    }
Ejemplo n.º 5
0
    public int CompareTo(object obj)
    {
        if (obj == null)
        {
            return(1);
        }
        MyPlayerEvent d = obj as MyPlayerEvent;

        return((this.wave_time == 0 || d.wave_time == 0) ?
               this.eventtime.CompareTo(d.eventtime) : this.wave_time.CompareTo(d.wave_time));
    }
Ejemplo n.º 6
0
    public bool TowerBuild(MyPlayerEvent e)
    {
        if (e.event_complete)
        {
            return(true);
        }


        //unitStats stats = Central.Instance.getToy(tower.toy_id.rune_type, tower.toy_id.toy_type);
        unitStats stats    = Central.Instance.getToy(e.attribute_1);
        string    toy_name = stats.name;
        bool      force    = true;

        if (force || canBuildTower(stats, force))
        {
            Toy           f      = null;
            Island_Button island = Monitor.Instance.getIslandByID(e.attribute_2);
            if (island == null)
            {
                Debug.LogError("Could not locate island " + e.attribute_2 + " for tower " + e.attribute_1 + "\n");
                return(false);
            }

            GameObject o   = Peripheral.Instance.makeToy(toy_name, island, true, ref f, true);
            Toy        toy = o.GetComponent <Toy>();
            toy.my_tower_stats.name = e.metric_1.ToString();

            if (toy.toy_type == ToyType.Temporary)
            {
                ghosts.Add(toy);
            }
            else
            {
                toys.Add(toy);
            }

            if (toy.toy_type == ToyType.Hero)
            {
                loadHeroSkills(skills_and_inventory, toy.runetype);
            }

            e.event_complete = true;
            return(true);
        }
        else
        {
            Debug.LogError("Could not build tower " + e.attribute_2 + " for tower " + e.attribute_1 + "\n");
            return(false);
        }

        return(false);
    }
Ejemplo n.º 7
0
    bool TimeScaleChange(MyPlayerEvent e)
    {
        TimeScale timescale = EnumUtil.EnumFromString <TimeScale>(e.attribute_1, TimeScale.Null);

        if (timescale == TimeScale.Null)
        {
            Debug.LogError("Invalid TimeScaleChange to " + e.attribute_1 + "\n");
            return(false);
        }

        ff = timescale;
        return(true);
    }
Ejemplo n.º 8
0
    bool timeToExecuteEvent(MyPlayerEvent e)
    {
        switch (e.eventtype)
        {
        case PlayerEvent.StartWaveEarly:

            float comp = Moon.Instance.TIME + timer;
            //    Debug.Log("wavetime " + e.wave_time + " wave interval - " + e.metric_1 + " time saved " + e.metric_2 + " -> " + hey + " " + comp + "\n");
            return(e.wave_time + e.metric_1 - e.metric_2 <= comp);

        default:

            return(e.wave_time <= Moon.Instance.TIME);
        }
    }
Ejemplo n.º 9
0
    bool UsedInventory(MyPlayerEvent e)
    {
        Wish w = new Wish();

        w.type = EnumUtil.EnumFromString(e.attribute_1, WishType.Null);
        if (w.type == WishType.Null)
        {
            Debug.LogError("Invalid wishtype " + e.attribute_1 + "\n");
            return(false);
        }
        w.strength = 1;

        Peripheral.Instance.my_inventory.UseWish(w, true);

        return(true);
    }
Ejemplo n.º 10
0
    public bool SellTower(MyPlayerEvent e)
    {
        if (e.event_complete)
        {
            return(true);
        }

        foreach (Toy t in toys)
        {
            if (t.rune.order == e.metric_1)
            {
                Peripheral.Instance.sellToy(t, 0);
                return(true);
            }
        }
        Debug.LogError("Could not find toy for event " + e.toString() + "\n");
        return(false);
    }
Ejemplo n.º 11
0
    public bool ResetSkills(MyPlayerEvent e)
    {
        RuneType runetype = EnumUtil.EnumFromString <RuneType>(e.attribute_1, RuneType.Null);

        if (runetype == RuneType.Null)
        {
            Debug.LogError("Cannot reset skill for invalid runetype " + e.attribute_1 + "\n");
            return(false);
        }
        Rune rune = Central.Instance.getHeroRune(runetype);

        if (rune == null)
        {
            Debug.LogError("Cannot locate hero rune to reset: " + e.attribute_1 + "\n");
            return(false);
        }

        bool special = e.wave_time == -1;

        rune.resetSkills(special);

        return(true);
    }
Ejemplo n.º 12
0
    public bool AmmoRecharge(MyPlayerEvent e)
    {
        int toy_order   = (int)e.metric_2;
        Toy recharge_me = null;

        foreach (Toy ghost in ghosts)
        {
            if (ghost.rune.order == toy_order)
            {
                recharge_me = ghost;
            }
        }
        if (recharge_me == null)
        {
            Debug.LogError("Invalid toy order to recharge " + e.metric_2 + "\n");
            return(false);
        }

        recharge_me.firearm.AddAmmo(1, true);


        return(true);
    }
Ejemplo n.º 13
0
 public bool StartWaveEarly(MyPlayerEvent e)
 {
     Peripheral.Instance.StartWave();
     return(true);
 }
Ejemplo n.º 14
0
    IEnumerator runEvents()
    {
        yield return(new WaitForSeconds(0.5f));


        while (am_running && !done)
        {
            MyPlayerEvent e = runs[current_run].GetRowList()[current_event];

            if (e.event_complete)
            {
                getNextEvent();
                e = runs[current_run].GetRowList()[current_event];
            }



            if (!e.event_complete && timeToExecuteEvent(e))
            {
                executeEvent ee = null;

                if (e.eventtype == PlayerEvent.TowerBuilt)
                {
                    ee += new executeEvent(TowerBuild);                                        //force
                }
                if (e.eventtype == PlayerEvent.UsedInventory)
                {
                    ee += new executeEvent(UsedInventory);                                           //force
                }
                if (e.eventtype == PlayerEvent.SkillUpgrade)
                {
                    ee += new executeEvent(SkillUpgrade);
                }
                if (e.eventtype == PlayerEvent.AmmoRecharge)
                {
                    ee += new executeEvent(AmmoRecharge);                                          //force
                }
                if (e.eventtype == PlayerEvent.SpecialSkillUsed)
                {
                    ee += new executeEvent(SpecialSkillUsed);                                              //force
                }
                if (e.eventtype == PlayerEvent.StartWaveEarly)
                {
                    ee += new executeEvent(StartWaveEarly);
                }
                if (e.eventtype == PlayerEvent.TimeScaleChange)
                {
                    ee += new executeEvent(TimeScaleChange);
                }
                if (e.eventtype == PlayerEvent.SellTower)
                {
                    ee += new executeEvent(SellTower);
                }

                if (ee != null)
                {
                    Debug.Log("Executing event " + e.toString() + "\n");
                    bool success = ee(e);
                    if (!success)
                    {
                        Debug.LogError("Event " + e.toString() + " FAILED to execute\n");
                    }
                }

                e.event_complete = true;
            }
            yield return(StartCoroutine(CoroutineUtil.WaitForRealSeconds(0.3f)));
        }
    }