コード例 #1
0
ファイル: GridGenerator.cs プロジェクト: NotSoOld/voltage
 void Update()
 {
     if (checkGrid)
     {
         if (GameObject.FindGameObjectsWithTag("electron").Length == 0)
         {
             CreateNewGridElts();
             checkGrid = false;
             GridEltBehaviour.FindElements();
             if (ui.comboDisplays > 1)
             {
                 ui.CalculateTimeBonus();
             }
             ui.AddScore();
             ui.ClearComboDisplay();
         }
     }
 }
コード例 #2
0
ファイル: GridGenerator.cs プロジェクト: NotSoOld/voltage
 public void CreateNewGridElts()
 {
     GridEltBehaviour[,] newgrid = new GridEltBehaviour[7, 10];
     for (int i = 0; i < 7; i++)                     //for each column we check, where are empty spaces and how many new wires we need to add
     {
         int deletedEltsCnt = 0;
         for (int j = 0; j < 10; j++)
         {
             if (grid[i, j] == null)                                 //count deleted wires
             {
                 deletedEltsCnt++;
             }
             else                                                    //else if element is present
             {
                 int deletedUnderCnt = 0;
                 for (int k = j; k >= 0; k--)                                //we watch down from it and count deleted
                 {
                     if (grid[i, k] == null)
                     {
                         deletedUnderCnt++;
                     }
                 }
                 StartCoroutine(MoveToPosition(grid[i, j].transform.position.y - deletedUnderCnt, grid[i, j].transform)); //move it
                 newgrid[i, j - deletedUnderCnt] = grid[i, j];                                                            //and remember to reassign it
             }
         }
         for (int j = 0; j < 10; j++)                        //reassign all present wires in this column
         {
             grid[i, j] = newgrid[i, j];
         }
         for (int j = 0; j < deletedEltsCnt; j++)                            //and create missing wires
         {
             GameObject elt = (GameObject)Instantiate(wires[Random.Range(0, 4)], new Vector3(i - 2.5f, j + 7), Quaternion.identity);
             elt.transform.Rotate(0f, 0f, 90f * Random.Range(0, 4), Space.Self);
             GridEltBehaviour eltscript = elt.GetComponent <GridEltBehaviour>();
             grid[i, j + 10 - deletedEltsCnt] = eltscript;
             eltscript.ui = ui;
             StartCoroutine(MoveToPosition(j + 10 - deletedEltsCnt - 4, elt.transform));
         }
     }
 }
コード例 #3
0
ファイル: GridEltBehaviour.cs プロジェクト: NotSoOld/voltage
    IEnumerator MoveElectron(Vector3 start, Vector3 end, GridEltBehaviour element, Vector3 center)
    {
        GameObject newElectron = (GameObject)Instantiate(electron, start, Quaternion.identity);

        GridGenerator.checkGrid = true;
        //elementsUsed++;
        int i = 1;

        if (!UniMath.ApproximatelyEqual(start.x, end.x) && !UniMath.ApproximatelyEqual(start.y, end.y))
        {
            while (newElectron.transform.position != center)
            {
                newElectron.transform.position = Vector3.Lerp(start, center, 0.4f * i);
                i++;
                yield return(new WaitForFixedUpdate());
            }
            i = 1;
            while (newElectron.transform.position != end)
            {
                newElectron.transform.position = Vector3.Lerp(center, end, 0.4f * i);
                i++;
                yield return(new WaitForFixedUpdate());
            }
        }
        else
        {
            while (newElectron.transform.position != end)
            {
                newElectron.transform.position = Vector3.Lerp(start, end, 0.2f * i);
                i++;
                yield return(new WaitForFixedUpdate());
            }
        }
        if (element != null)
        {
            element.CheckForCurcuit(end);
        }

        Destroy(newElectron);
    }
コード例 #4
0
ファイル: GridGenerator.cs プロジェクト: NotSoOld/voltage
    void Start()
    {
        GridEltBehaviour[] powersAndDisplays = GameObject.FindObjectsOfType <GridEltBehaviour>();
        int powerscnt   = 0;
        int displayscnt = 0;

        for (int i = 0; i < 20; i++)
        {
            if (powersAndDisplays[i].isPower)
            {
                powers[powerscnt]    = powersAndDisplays[i];
                powers[powerscnt].ui = ui;
                powerscnt++;
            }
            if (powersAndDisplays[i].isDisplay)
            {
                displays[displayscnt]    = powersAndDisplays[i];
                displays[displayscnt].ui = ui;
                displayscnt++;
            }
        }
        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                GameObject elt = (GameObject)Instantiate(wires[Random.Range(0, 4)], new Vector3(i - 2.5f, j - 2), Quaternion.identity);
                elt.transform.Rotate(0f, 0f, 90f * Random.Range(0, 4), Space.Self);
                GridEltBehaviour eltscript = elt.GetComponent <GridEltBehaviour>();
                grid[i, j]   = eltscript;
                eltscript.ui = ui;
                StartCoroutine(MoveToPosition(j - 4, elt.transform));
            }
        }
        checkGrid = false;
        GridEltBehaviour.FindElements();
    }