Beispiel #1
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);
        }
    }
Beispiel #2
0
    void OnEnable()
    {
        if (_roadScript == null)
        {
            _roadScript = FindObjectOfType <RoadScript>();
        }

        _randomSpeedMultiplier = Random.Range(_randomSpeedMultiplierMin, _randomSpeedMultiplierMax);
    }
Beispiel #3
0
    private void GenerateMiner()
    {
        GameObject  newMiner = Instantiate(miner, getTopObject().transform.position, Quaternion.identity);
        MinerScript minerSc  = newMiner.GetComponent(typeof(MinerScript)) as MinerScript;

        minerSc.setDirection(getBottomObject().transform.position);
        RoadScript roadSc = GetComponent(typeof(RoadScript)) as RoadScript;

        minerSc.setRoadMovingOn(roadSc);
    }
Beispiel #4
0
    public void createWorker()
    {
        GameObject   activeObj  = manager.getActiveObject();
        IcanHaveRoad haveRoad   = activeObj.GetComponent(typeof(IcanHaveRoad)) as IcanHaveRoad;
        RoadScript   roadScript = haveRoad.getRoad();
        GameObject   newWorker  = Instantiate(Worker, roadScript.getTopObject().transform.position, Quaternion.identity);
        WorkerScript worker     = newWorker.GetComponent(typeof(WorkerScript)) as WorkerScript;

        worker.setDirection(roadScript.getBottomObject().transform.position);
        worker.setRoadMovingOn(roadScript);
    }
Beispiel #5
0
 // Update is called once per frame
 void Update()
 {
     if (moveDirection != transform.position)
     {
         move();
     }
     else
     {
         if (transform.position == roadMovingOn.getBottomObject().transform.position)
         {
             IcanHaveRoad haveRoad = roadMovingOn.getBottomObject().GetComponent(typeof(IcanHaveRoad)) as IcanHaveRoad;
             RoadScript   newRoad  = haveRoad.getRoad();
             roadMovingOn = newRoad;
             if (moveDirection != newRoad.getTopObject().transform.position)
             {
                 moveDirection = newRoad.getTopObject().transform.position;
             }
             else
             {
                 moveDirection = haveRoad.getRoad().getBottomObject().transform.position;
             }
         }
         else
         {
             IcanHaveRoad haveRoad = roadMovingOn.getTopObject().GetComponent(typeof(IcanHaveRoad)) as IcanHaveRoad;
             RoadScript   newRoad  = haveRoad.getRoad();
             roadMovingOn = newRoad;
             if (moveDirection != newRoad.getBottomObject().transform.position)
             {
                 moveDirection = newRoad.getBottomObject().transform.position;
             }
             else
             {
                 moveDirection = newRoad.getTopObject().transform.position;
             }
         }
     }
 }
Beispiel #6
0
    void Start()
    {
        s_instance = this;

        for (int i = 0; i < transform.childCount; i++)
        {
            Transform road  = transform.GetChild(i);
            float     width = road.GetComponent <RectTransform>().sizeDelta.x;
            if (road.rotation.z == 0)
            {
                roadList.Add(new RoadInfo(road, width));
            }
            else
            {
                ladderList.Add(new RoadInfo(road, width));
            }

            if (!isShowLine)
            {
                road.GetComponent <Image>().color = new Color(0, 0, 0, 0);
            }
        }
    }
Beispiel #7
0
 public void setRoadMovingOn(RoadScript theRoad)
 {
     roadMovingOn = theRoad;
 }
Beispiel #8
0
    void FixedUpdate()
    {
        if (Input.touchCount == 2)
        {
            Touch touch0 = Input.GetTouch(0);
            Touch touch1 = Input.GetTouch(1);

            Vector2 touch0PrevPos = touch0.position - touch0.deltaPosition;
            Vector2 touch1PrevPos = touch1.position - touch1.deltaPosition;

            float prevMagnitude = (touch0PrevPos - touch1PrevPos).magnitude;
            float curMagnitude  = (touch0.position - touch1.position).magnitude;

            float distance = curMagnitude - prevMagnitude;
            float moveDist = distance * 0.01f;
            gameCamera.ZoomInOut(moveDist);
        }
        else if (Input.touchCount == 1)
        {
            Touch        touch = Input.GetTouch(0);
            Vector2      pos   = Camera.main.ScreenToWorldPoint(touch.position);
            RaycastHit2D hit   = Physics2D.Raycast(pos, Camera.main.transform.forward);

            if (buildStateActive)
            {
                float          distance       = Vector3.Distance(activeObject.transform.position, pos);
                PlatformScript platformScript = activeObject.GetComponent(typeof(PlatformScript)) as PlatformScript;

                /*Debug.Log(distance);
                 * Debug.Log(activeObject.transform.position);
                 * Debug.Log(pos);*/
                if (touch.phase == TouchPhase.Began &&
                    willBuildObject != null &&
                    touch.position.y > 30 &&
                    hit.collider == null &&
                    distance <= 1.75f &&
                    platformScript != null &&
                    platformScript.canHaveMoreRoad()
                    )
                {
                    IBuyAble buyAble = willBuildObject.GetComponent(typeof(IBuyAble)) as IBuyAble;
                    if (buyAble != null && resourceManagerScript.canBuy(buyAble.getGoldPrice(), buyAble.getMinaralPrice()))
                    {
                        GameObject   newObj   = Instantiate(willBuildObject, pos, Quaternion.identity);
                        IcanHaveRoad haveRoad = newObj.GetComponent(typeof(IcanHaveRoad)) as IcanHaveRoad;
                        // rotate new object face to the platform
                        Vector2 rotationVector = new Vector2(
                            activeObject.transform.position.x - newObj.transform.position.x,
                            activeObject.transform.position.y - newObj.transform.position.y
                            );
                        newObj.transform.up = rotationVector;
                        // Create road
                        GameObject connetionRoad = Instantiate(road, activeObject.transform.position, Quaternion.identity);
                        // rotate and scale the road between newObj and platform
                        connetionRoad.transform.localScale += new Vector3(0, distance, 1);
                        connetionRoad.transform.up          = rotationVector;
                        Vector3 roadPos = new Vector3(
                            (newObj.transform.position.x + activeObject.transform.position.x) / 2,
                            (newObj.transform.position.y + activeObject.transform.position.y) / 2,
                            15f
                            );
                        connetionRoad.transform.position = roadPos;
                        RoadScript roadScript = connetionRoad.GetComponent(typeof(RoadScript)) as RoadScript;
                        // Set Road variables
                        roadScript.setTopObject(newObj);          // top object the builded object
                        roadScript.setBottomObject(activeObject); //  bottom object platform
                                                                  // Add road to new builded object
                        haveRoad.addRoad(roadScript);
                        // Adding roads to platformObject
                        platformScript.addRoad(roadScript);

                        if (newObj.CompareTag("Mine"))
                        {
                            checkMineAndMinaralConnetion(newObj);
                        }
                        if (newObj.CompareTag("House"))
                        {
                            resourceManagerScript.updateMaxPopulationCount(5);
                        }
                        if (newObj.CompareTag("defenceBuildings"))
                        {
                            TowerScript newDefenceBuilding = newObj.GetComponent(typeof(TowerScript)) as TowerScript;
                            defanceBuildings.Add(newDefenceBuilding);
                        }

                        // Buy the building
                        resourceManagerScript.buyBuilding(buyAble.getGoldPrice(), buyAble.getMinaralPrice());
                    }
                    else
                    {
                        Debug.Log("you cant buy");
                    }
                }
                endBuildingState();
            }
            else if (touch.phase == TouchPhase.Began) //check for the first touch
            {
                fp = Camera.main.ScreenToWorldPoint(touch.position);
                lp = Camera.main.ScreenToWorldPoint(touch.position);
            }
            else if (touch.phase == TouchPhase.Moved) // update the last position based on where they moved
            {
                lp = Camera.main.ScreenToWorldPoint(touch.position);
                if (Mathf.Abs(lp.x - fp.x) > dragDistance || Mathf.Abs(lp.y - fp.y) > dragDistance)
                {
                    Vector3 camMovePos = lp - fp;
                    gameCamera.Move(camMovePos);
                }
            }
            else if (touch.phase == TouchPhase.Ended) //check if the finger is removed from the screen
            {
                lp = Camera.main.ScreenToWorldPoint(touch.position);
                if (Mathf.Abs(lp.x - fp.x) > dragDistance || Mathf.Abs(lp.y - fp.y) > dragDistance)
                {
                    Vector3 camMovePos = lp - fp;
                    gameCamera.Move(camMovePos);
                }
                else
                {
                    if (EventSystem.current.IsPointerOverGameObject() && buildPanel.activeSelf)
                    {
                        Debug.Log("on game object");
                    }
                    else
                    {
                        if (buildPanel.activeSelf)
                        {
                            buildPanel.SetActive(false);
                        }
                        else
                        {
                            if (touch.position.y > 30)
                            {
                                if (hit.collider != null)
                                {
                                    if (activeObject != null)
                                    {
                                        IselectAble tmp = activeObject.GetComponent(typeof(IselectAble)) as IselectAble;
                                        tmp.setSelect(false);
                                        activeObject = hit.collider.gameObject;
                                        IselectAble selectedObject = activeObject.GetComponent(typeof(IselectAble)) as IselectAble;
                                        selectedObject.setSelect(true);
                                    }
                                    else
                                    {
                                        activeObject = hit.collider.gameObject;
                                        IselectAble selectedObject = activeObject.GetComponent(typeof(IselectAble)) as IselectAble;
                                        selectedObject.setSelect(true);
                                    }
                                }
                                else
                                {
                                    if (activeObject != null)
                                    {
                                        IselectAble platform = activeObject.GetComponent(typeof(IselectAble)) as IselectAble;
                                        if (platform != null)
                                        {
                                            platform.setSelect(false);
                                            activeObject = null;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                // menu element
                            }
                        }
                    }
                }
            }
        }
    }
Beispiel #9
0
 public void addRoad(RoadScript road)
 {
     roadList.Add(road);
     connetedRoadCount += 1;
 }
Beispiel #10
0
 private void Awake()
 {
     roadScript = GameObject.Find("RoadParent").GetComponent <RoadScript>();
     playerInp  = Player.GetComponent <playerInput>();
 }
Beispiel #11
0
 public void addRoad(RoadScript roadScript)
 {
     road = roadScript;
 }