/// <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());
    }
示例#3
0
    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);
        }
    }
示例#7
0
    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);
        }
    }
示例#8
0
 void setXpReqs()
 {
     xp_reqs = TowerStore.getXpReqs(toy_type, runetype);
 }
示例#9
0
    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;
    }
示例#10
0
 public bool HasTowerMounted()
 {
     return(TowerStore.IsTowerOnGridPosition(GridPosition));
 }