상속: MonoBehaviour
예제 #1
0
    public void SetState(CubeState state, string playerId)
    {
        if (currentState == state)
        {
            return;
        }

        if (state == CubeState.Default)
        {
            thisMeshRenderer.material = gameField.cubeDefaultMaterial;
        }
        else if (state == CubeState.Signed)
        {
            thisMeshRenderer.material = gameField.cubeSignMaterials[gameField.GetSignForPlayer(playerId)];
        }
        else if (state == CubeState.Mine)
        {
            mine = gameField.InsertMine(this, playerId);
        }
        else if (state == CubeState.MineUsed)
        {
            mine.Expolde();
        }
        else
        {
            throw new System.NotImplementedException("[SetState] Unknown cube state " + state);
        }

        currentState = state;
    }
예제 #2
0
 void OnTriggerEnter(Collider coll)
 {
     if (coll.gameObject.tag == "upgradecrate")
     {
         upgrade_if_better(coll.gameObject);
         cs.GetComponent <CrateSpawnerScript>().return_crate(coll.gameObject);
     }
     else if (coll.gameObject.tag == "upgradefrontgun")
     {
         // What do we want to do here?
         Destroy(coll.gameObject);
     }
     else if (coll.gameObject.tag == "upgradesidegun")
     {
         // What do we want to do here?
         Destroy(coll.gameObject);
     }
     else if (coll.gameObject.tag == "shell")
     {
         // Week08 Week 08
         ShipStatsScript sss         = GetComponent <ShipStatsScript>();
         ShellScript     shellScript = coll.gameObject.GetComponent <ShellScript>();
         sss.take_damage(shellScript.damage);
         shellHolderScript.return_shell(coll.gameObject);
         shellHolderScript.get_Exp();
         //coll.point
     }
     else if (coll.gameObject.tag == "mine")
     {
         ShipStatsScript sss        = GetComponent <ShipStatsScript>();
         MineScript      mineScript = coll.gameObject.GetComponent <MineScript>();
         sss.take_damage(mineScript.damage);
     }
 }
예제 #3
0
    void CheckForInput(RaycastHit hit)
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            if (hit.collider.CompareTag("Door"))
            {
                Animator doorAnim = hit.collider.GetComponent <DoorScript>().GetAnim();
                doorAnim.SetBool("isOpen", !doorAnim.GetBool("isOpen"));
            }

            if (hit.collider.CompareTag("Mine"))
            {
                Tool       currTool = GetComponentInChildren <Tool>();
                MineScript mine     = hit.collider.GetComponent <MineScript>();
                if (interactText.activeInHierarchy)
                {
                    mine.SetToolIndex(mine.GetNeededToolIndex() + 1);

                    AudioManager.audioManager.PlaySound(currTool.GetSound(), transform.position);

                    if (mine.GetNeededToolIndex() == mine.GetLastToolIndex())
                    {
                        Manager.GetManager().RemoveMine(hit.collider.gameObject);
                        Manager.GetManager().AddMinesCount();
                        //canvas.SetActive(true);
                    }
                }
            }
        }
    }
예제 #4
0
    public void setMine(GameObject obj)
    {
        float distance = Vector2.Distance(transform.position, obj.transform.position);

        if (distance < 1.75f && mineRoad == null)
        {
            MineScript mineScript = obj.GetComponent(typeof(MineScript)) as MineScript;
            mine = mineScript;
            GameObject newMineRoad    = Instantiate(road, transform.position, Quaternion.identity);
            Vector2    rotationVector = new Vector2(
                transform.position.x - obj.transform.position.x,
                transform.position.y - obj.transform.position.y
                );
            newMineRoad.transform.localScale += new Vector3(0, distance, 1);
            newMineRoad.transform.up          = rotationVector;

            Vector3 roadPos = new Vector3(
                (obj.transform.position.x + transform.position.x) / 2,
                (obj.transform.position.y + transform.position.y) / 2,
                15f
                );
            newMineRoad.transform.position = roadPos;

            MinaralMineRoad roadScript = newMineRoad.GetComponent(typeof(MinaralMineRoad)) as MinaralMineRoad;
            // Set Road variables
            roadScript.setTopObject(obj);           // top object the builded object
            roadScript.setBottomObject(gameObject); //  bottom object platform
            roadScript.connetedToMine();
            mineRoad = roadScript;
            beingDig = true;
            // Set mine's mineRoad variable
            //mine.setMineRoad(roadScript);
        }
    }
예제 #5
0
    void CheckForDistance(RaycastHit hit)
    {
        if (hit.collider.CompareTag("Door"))
        {
            interactText.SetActive(true);
        }

        else if (hit.collider.CompareTag("Mine"))
        {
            Tool       currTool = GetComponentInChildren <Tool>();
            MineScript mine     = hit.collider.GetComponent <MineScript>();
            if (currTool.GetName() == mine.toolsToUse[mine.GetNeededToolIndex()])
            {
                interactText.SetActive(true);
            }
            else if (currTool.GetName() != mine.toolsToUse[mine.GetNeededToolIndex()])
            {
                interactText.SetActive(false);
            }
        }
    }
예제 #6
0
    // Update is called once per frame
    void Update()
    {
        if (isActive)
        {
            return;
        }

        // check if it's time to spawn mines
        if (mineDelay <= 0)
        {
            Vector3 mineLocation;

            // spawn mines in area around boss
            for (int i = 0; i < numMines; i++)
            {
                // create new random location in boundaries
                mineLocation = new Vector3(Random.Range(minX, maxX)
                                           , Random.Range(minY, maxY)
                                           , 0);

                // spawn mine
                GameObject mine = Instantiate(minePrefab, mineLocation, Quaternion.identity);
                MineScript m    = mine.GetComponent <MineScript>();
                m.explosionDelay    = explosionDelay;
                m.explosionDuration = explosionDuration;
            }

            // reset mine delay
            mineDelay = mineSpawnDelay;
        }
        else
        {
            // countdown until spawn mines
            mineDelay -= Time.deltaTime;
        }
    }
    // Use this for initialization
    void Start()
    {
        if (PlayerPrefs.HasKey("map_num"))
        {
            mapNumber = PlayerPrefs.GetInt("map_num");
        }
        string mapDetails = mapFiles[mapNumber].text;

        string[] mapLines = mapDetails.Split('\n');
        string[] mapSpecs = mapLines[0].Split(' ');
        height         = int.Parse(mapSpecs[0]);
        width          = int.Parse(mapSpecs[1]);
        minerCount     = int.Parse(mapSpecs[2]);
        excavatorCount = int.Parse(mapSpecs[3]);
        haulerCount    = int.Parse(mapSpecs[4]);
        mineCount      = int.Parse(mapSpecs[5]);
        depoCount      = int.Parse(mapSpecs[6]);
        budget         = int.Parse(mapSpecs[7]);
        this.GetComponent <MapControllerScript>().budget = budget;
        for (int m = 0; m < minerCount; m++)
        {
            Instantiate(minerPrefab, mapObject.transform);
        }

        for (int e = 0; e < excavatorCount; e++)
        {
            Instantiate(excavatorPrefab, mapObject.transform);
        }

        for (int h = 0; h < haulerCount; h++)
        {
            Instantiate(haulerPrefab, mapObject.transform);
        }

        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                GameObject ground = Instantiate(groundPrefab, mapObject.transform);
                ground.transform.position = new Vector3(x, y, 0);
            }
        }

        for (int mn = 0; mn <= mineCount; mn++)
        {
            string     mineLine      = mapLines[mn];
            string[]   mineDetails   = mineLine.Split(' ');
            int        index         = int.Parse(mineDetails[0]);
            string     name          = "mine_" + index;
            string     element       = mineDetails[1];
            Vector2    position      = new Vector2(int.Parse(mineDetails[2]), int.Parse(mineDetails[3]));
            int        resourceCount = int.Parse(mineDetails[4]);
            GameObject mine          = Instantiate(minePrefab, mapObject.transform);
            mine.transform.position = position;
            mine.name = name;
            MineScript mineScript = mine.GetComponent <MineScript>();
            mineScript.index         = index;
            mineScript.element       = element;
            mineScript.resourceCount = resourceCount;
        }

        for (int d = mineCount + 1; d <= depoCount + mineCount; d++)
        {
            string     depoLine    = mapLines[d];
            string[]   depoDetails = depoLine.Split(' ');
            int        index       = int.Parse(depoDetails[0]);
            string     name        = "depo_" + index;
            string     element     = depoDetails[1];
            Vector2    position    = new Vector2(int.Parse(depoDetails[2]), int.Parse(depoDetails[3]));
            GameObject depo        = Instantiate(depoPrefab, mapObject.transform);
            depo.transform.position = position;
            depo.name = name;
            DepoScript depoScript = depo.GetComponent <DepoScript>();
            depoScript.element = element;
            depoScript.index   = index;
        }
        Camera.main.transform.position = new Vector3(0, 0, -1);
        Rect bounds = new Rect(new Vector2(-5f, -2.5f), new Vector2(width + 10f, height + 5f));

        Camera.main.GetComponent <Camera2D>().cameraLimits = bounds;
    }