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; }
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); }
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()); }
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); }
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)); }
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); }
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); }
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); } }
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); }
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); }
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); }
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); }
public bool StartWaveEarly(MyPlayerEvent e) { Peripheral.Instance.StartWave(); return(true); }
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))); } }