/// <summary> /// From Event /// </summary> /// <param name="newGridPosition"></param> public void OnMouseGridPositionChanged(Vector2Int newGridPosition) { if (placedTowersCount >= maxTowers || TowerStore.IsTowerOnGridPosition(newGridPosition) || !HasResourcesForSelectedTower()) { return; } currentMouseGridPosition = newGridPosition; var validPath = !startPoints.Contains(newGridPosition) && IsPathValidIfWaypointIsOccupied(); // print($"This waypoint is valid to place the tower: {validPath} | mouseGridPosition: {currentMouseGridPosition}"); var activeVFX = validPath ? validGridPositionVFX : invalidGridPositionVFX; activeVFX.transform.position = newGridPosition.GridPositionToVector3(); activeVFX.Play(); if (validPath && towerShop.SelectedItem) { SpawnPreviewTower(); } else if (previewTower) { DestroyPreviewTower(); } }
private void PlaceNewTower() { canPlaceTower = false; var newTower = Instantiate(previewTower, currentMouseGridPosition.GridPositionToVector3(), Quaternion.identity); // var towerComponent = newTower.GetComponent<Tower>(); if (!newTower /*|| !towerComponent*/) { return; } // towerComponent.Activate(); newTower.Activate(); TowerStore.AddTower(currentMouseGridPosition); placedTowersCount += 1; pathFinder.BlocksChanged = true; RefreshEnemyPaths(); resourcesController.AddCrystalsAmount(-towerShop.SelectedItem.GetBuildCost()); DestroyPreviewTower(); SwitchVfxOff(); OnMouseGridPositionChanged(currentMouseGridPosition); StartCoroutine(CanPlaceTowerCooldown()); }
void Start() { // Fabric.Runtime.Fabric.Initialize(); Crashlytics.SetDebugMode(true); TowerStore.initTowers(); EnemyStore.initEnemies(); LevelStore.initSettings(); //file = new Queue<string>(init_file.text.Split('\n')); //Loader.Instance.setFile (file); //Loader.Instance.LoadInitFile (); }
public void ResetSelected() { // Debug.Log("Resetting selected\n"); selected_button = null; Peripheral.Instance.SelectToy("", RuneType.Null, false); Monitor.Instance.InitMainSignal(RuneType.Null, ToyType.Null); foreach (MyLabel l in my_panel.list) { l.ui_button.SetSelectedToy(false); l.SetHidden(false); } selected_button_image.gameObject.SetActive(false); selected_island_image.sprite = TowerStore.getPreviewSprite(RuneType.Null, ToyType.Null); selected_button_image.gameObject.SetActive(false); }
public void setSelectedIslandImage(RuneType runeType, ToyType toyType) { selected_island_image.sprite = TowerStore.getPreviewSprite(runeType, toyType); if (selected_island == null) { return; } Vector3 set_to = selected_island.transform.position; //if (runeType != RuneType.Null && toyType != ToyType.Null) set_to.y += 0.17f; selected_island_image.GetComponent <RectTransform>().position = set_to; }
private void InitializeGrid() { grid.Clear(); var waypoints = FindObjectsOfType <Waypoint>().Where(waypoint => !TowerStore.IsTowerOnGridPosition(waypoint.GridPosition)).ToList(); foreach (var waypoint in waypoints) { var position = waypoint.GridPosition; if (grid.ContainsKey(position)) { Debug.LogWarning($"Overlapping waypoint at position: {waypoint}"); continue; } grid.Add(position, waypoint); } }
public unitStats LoadActor(string line) { // Debug.Log("Loading actor\n"); JSONObject pname = new JSONObject(); JSONObject pcost = new JSONObject(); JSONObject ptoytype = new JSONObject(); //JSONObject pcost_runetype = new JSONObject (); JSONObject prune_type = new JSONObject(); JSONObject pcost_wishtype = new JSONObject(); JSONParser p = new JSONParser(line); JSONObject ppermanent = new JSONObject(); JSONObject pammo = new JSONObject(); JSONObject inv = new JSONObject(); JSONObject pmax_lvl = new JSONObject(); JSONObject exclude_skills = new JSONObject(); JSONObject required_building = new JSONObject(); p.parse(); p.root.TryGetValue("name", out pname); p.root.TryGetValue("cost", out pcost); p.root.TryGetValue("toy_type", out ptoytype); p.root.TryGetValue("rune_type", out prune_type); p.root.TryGetValue("cost_wishtype", out pcost_wishtype); p.root.TryGetValue("max_lvl", out pmax_lvl); p.root.TryGetValue("ammo", out pammo); p.root.TryGetValue("inventory", out inv); p.root.TryGetValue("islandtype", out ppermanent); p.root.TryGetValue("exclude_skills", out exclude_skills); p.root.TryGetValue("required_building", out required_building); unitStats test = Central.Instance.getToy(pname.value); if (test != null) { if (pmax_lvl != null) { test.setMaxLvl(int.Parse(pmax_lvl.value)); } // Debug.Log("Loading actor again\n"); //thing has already been defined in a previous level. do not load most stats again return(test); } else { int cost = int.Parse(pcost.value); unitStats stats = new unitStats(pname.value); if (pmax_lvl != null) { stats.setMaxLvl(int.Parse(pmax_lvl.value)); } stats.isUnlocked = false; RuneType rune_type = (prune_type != null) ? EnumUtil.EnumFromString(prune_type.value, RuneType.Null) : RuneType.Null; ToyType toy_type = (ptoytype != null) ? EnumUtil.EnumFromString(ptoytype.value, ToyType.Null) : ToyType.Null; //WishType wish_type = WishType.Null; CostType cost_type = CostType.Dreams; stats.toy_id.toy_type = toy_type; stats.toy_id.rune_type = rune_type; cost_type = TowerStore.costType(rune_type, toy_type); //if (pcost_wishtype != null) wish_type = Get.WishTypeFromString(pcost_wishtype.value); if (required_building != null) { stats.required_building = (required_building.value); } stats.setCost(cost_type, cost); stats.island_type = ppermanent != null?EnumUtil.EnumFromString(ppermanent.value, IslandType.Permanent) : IslandType.Permanent; if (pammo != null) { stats.ammo = int.Parse(pammo.value); } Central.Instance.setUnitStats(stats, false); return(stats); } }
void setXpReqs() { xp_reqs = TowerStore.getXpReqs(toy_type, runetype); }
public Toy toy_parent; //firearm assigned here. buttons talk directly to the firearm public void Awake() { content = TowerStore.getBasicName(label.runetype, label.toytype); label.content = content; }
public bool HasTowerMounted() { return(TowerStore.IsTowerOnGridPosition(GridPosition)); }