コード例 #1
0
    // sets a starting set of tower presets
    public void setStartingTowers()
    {
        List <float[]> presets = new List <float[]>();

        for (int i = 0; i < 14; i++)
        {
            float[] chromosome = new float[11];
            for (int j = 0; j < 11; j++)
            {
                chromosome[j] = Random.Range((float)0, (float)0.2);
            }
            presets.Add(chromosome);
        }
        for (int i = 0; i < 2; i++)
        {
            float[] chromosome = new float[11];
            for (int j = 0; j < 11; j++)
            {
                chromosome[j] = Random.Range((float)0, (float)1);
            }
            presets.Add(chromosome);
        }

        foreach (float[] chromosome in presets)
        {
            TowerPreset tp = new TowerPreset();
            tp.TowerPresetFromChromosome(chromosome);
            towerPresets.Add(tp);
        }
    }
コード例 #2
0
 /*
  * If tower was deleted, new tower must
  * be created using crossover of tower that
  * was deleted and two random towers in the
  * population
  */
 public void towerDeleted(TowerPreset tp)
 {
     towersGenerated = 0;
     float[] chromosome = tp.getChromosome();
     towerPresets.Remove(tp);
     generateNewTowerPreset(chromosome);
 }
コード例 #3
0
        public void Init(TowerPreset preset)
        {
            Clear();

            for (int i = 0; i < preset.ActiveActions.Length; i++)
            {
                var view = Instantiate(activeViewPrefab, activeActionsContainer);
                view.Init(i, preset.ActiveActions[i]);
                _allViews.Add(view);
            }

            if (preset.BeginPlayerTurnAction != null)
            {
                var view = Instantiate(beginViewPrefab, passiveActionsContainer);
                view.Init(-1, preset.BeginPlayerTurnAction);
                _allViews.Add(view);
            }

            if (preset.EndPlayerTurnAction != null)
            {
                var view = Instantiate(endViewPrefab, passiveActionsContainer);
                view.Init(-1, preset.EndPlayerTurnAction);
                _allViews.Add(view);
            }
        }
コード例 #4
0
        public void Init(int id, TowerPreset preset)
        {
            _id     = id;
            _preset = preset;

            cost.text = preset.Cost.ToString();
            name.text = preset.Name;
        }
コード例 #5
0
ファイル: PlaneController.cs プロジェクト: Timurizer/ITD
    // sets the tower
    public void setTower(TowerPreset preset)
    {
        GameObject go = (Instantiate(towerPrefab, new Vector3(transform.position.x, transform.position.y, transform.localPosition.z), transform.rotation)
                         as GameObject);

        go.transform.parent = gameObject.transform;
        go.GetComponent <TowerScript>().setStats(preset);
        towerSet = true;
    }
コード例 #6
0
        public void ReplaceTower(Tower tower, TowerPreset preset)
        {
            var towerHolder = _currentTowers.Find((holder) => holder.GridObject == tower);

            if (towerHolder != null)
            {
                ReplaceTower(towerHolder, preset);
            }
        }
コード例 #7
0
        public IEnumerator CreateTower(TowerPreset preset, TileHolder tile, YieldInstruction wait = null)
        {
            var tower = new Tower(preset, tile.Tile);
            var obj   = Instantiate(TowerPrefab);

            obj.SetVisual(preset.VisualPrefab);
            obj.Init(tower, tile);
            _currentTowers.Add(obj);

            yield return(wait);
        }
コード例 #8
0
    /*
     * Method that generates a new tower using crossover over
     * given chromosome and two random chromosomes from population of towers
     * Every 15'th tower is generated using random.
     */
    public TowerPreset generateNewTowerPreset(float[] _chromosome)
    {
        if (!(towersGenerated % 15 == 0))
        {
            float[] individ1 = towerPresets[Random.Range(0, towerPresets.Count)].getChromosome();
            float[] individ2 = towerPresets[Random.Range(0, towerPresets.Count)].getChromosome();

            float[] newChromosome = new float[11];
            int     point1        = Random.Range(0, 11);
            int     point2        = Random.Range(point1, 11);
            int     swap          = Random.Range(0, 1);
            if (swap == 0)
            {
                float[] temp = _chromosome;
                _chromosome = individ1;
                individ1    = temp;
            }
            else
            {
                float[] temp = _chromosome;
                _chromosome = individ2;
                individ1    = temp;
            }
            for (int i = 0; i < point1; i++)
            {
                newChromosome[i] = _chromosome[i];
            }
            for (int i = point1; i < point2; i++)
            {
                newChromosome[i] = individ1[i];
            }
            for (int i = point2; i < 11; i++)
            {
                newChromosome[i] = individ2[i];
            }

            TowerPreset generated = new TowerPreset();
            generated.TowerPresetFromChromosome(newChromosome);
            return(generated);
        }
        else
        {
            float[] chromosome = new float[11];
            for (int j = 0; j < 11; j++)
            {
                chromosome[j] = Random.Range((float)0, (float)1);
            }
            TowerPreset tp = new TowerPreset();
            tp.TowerPresetFromChromosome(chromosome);
            return(tp);
        }
    }
コード例 #9
0
 // method for placing a tower
 public void deleteTower()
 {
     GameObject[] gos = GameObject.FindGameObjectsWithTag("Plane");
     foreach (GameObject go in gos)
     {
         //Debug.Log(go.GetComponent<PlaneController>().isSelected() + " " + go.GetComponent<PlaneController>().isTowerSet());
         if (go.GetComponent <PlaneController>().isSelected() && go.GetComponent <PlaneController>().isTowerSet())
         {
             TowerPreset oldPreset = go.GetComponent <PlaneController>().deleteTower();
             int         index     = towerPresets.IndexOf(oldPreset);
             towerPresets[index] = null;
             towerPresets[index] = generateNewTowerPreset(oldPreset.getChromosome());
             break;
         }
     }
 }
コード例 #10
0
ファイル: PlaneController.cs プロジェクト: Timurizer/ITD
    //deletes the tower
    public TowerPreset deleteTower()
    {
        int         childNum = transform.childCount;
        TowerPreset remember = null;

        for (int i = 0; i < childNum; i++)
        {
            if (transform.GetChild(i).tag == "Tower")
            {
                GameObject go = transform.GetChild(i).gameObject;
                remember = go.GetComponent <TowerScript>().getPreset();
                Destroy(go);
                break;
            }
        }
        towerSet = false;
        return(remember);
    }
コード例 #11
0
 public void ReplaceTower(TowerHolder tower, TowerPreset preset)
 {
     tower.Replace(preset);
 }
コード例 #12
0
 public void Replace(TowerPreset preset)
 {
     SetVisual(preset.VisualPrefab);
     GridObject.Replace(preset);
 }
コード例 #13
0
    float fireCooldownLeft;         //fire cooldown counter

    //sets stats of a tower (basicly just a preset)
    public void setStats(TowerPreset _preset)
    {
        preset = _preset;
    }