Example #1
0
    protected virtual void MultiSelect()
    {
        player.userInput.Deselect();
        SelectBox.Disable();
        Vector3 groundClickedPosition = WorldTouchPoint(Camera.main.ScreenToWorldPoint(clickedPosition));
        Vector3 groundMousePosition   = WorldTouchPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition));
        float   distance = Mathf.Abs(groundMousePosition.x - groundClickedPosition.x);
        float   xMin     = Mathf.Min(groundMousePosition.x, groundClickedPosition.x);
        float   zMin     = Mathf.Min(groundMousePosition.z, groundClickedPosition.z);
        float   zMax     = Mathf.Max(groundMousePosition.z, groundClickedPosition.z);
        List <MobileWorldObject> mobileWoList = new List <MobileWorldObject> ();

        RaycastHit[] hits = Physics.CapsuleCastAll(new Vector3(xMin, 0f, zMin), new Vector3(xMin, 0f, zMax), 0.1f, Vector3.right, distance, LayerMask.GetMask(new string[] { player.species.ToString() }));
        foreach (RaycastHit hit in hits)
        {
            MobileWorldObject mobileWO = hit.collider.gameObject.GetComponent <MobileWorldObject> ();
            if (mobileWO && mobileWO as SentryMob == null)
            {
                mobileWoList.Add(mobileWO);
            }
        }
        foreach (MobileWorldObject mobileWO in mobileWoList)
        {
            mobileWO.SelectTap(player);
            player.userInput.SelectedObjects.Add(mobileWO as WorldObject);
        }
        if (mobileWoList.Count == 1)
        {
            player.userInput.OpenPanel(mobileWoList[0].buttons);
        }
    }
Example #2
0
 protected virtual void ResetMob(MobileWorldObject newMob)
 {
     newMob.isAlive        = true;
     newMob.healthArray[0] = newMob.healthArray[1];
     if (newMob.healthBar)
     {
         newMob.healthBar.ResetBar();
     }
     newMob.transform.position = spawnPoint;
 }
Example #3
0
    private void SetPlaceability()
    {
        isPlaceable = false;
        Vector3    origin = new Vector3(transform.position.x, 100f, transform.position.z);
        RaycastHit hit;

        if (Physics.Raycast(origin, Vector3.down, out hit, 200f, LayerMask.GetMask(new string[] { "BuildingArea" })))
        {
            BuildingSlot bS = hit.collider.GetComponent <BuildingSlot> ();
            if (bS.species == player.species && !bS.isOccupied)
            {
                transform.position = bS.transform.position;
                currBuildingSlot   = bS;
                Collider[] colls = Physics.OverlapSphere(transform.position, buildingRadius, GameManager.woLayerMask);
                if (colls.Length == 0)
                {
                    isPlaceable = true;
                }
                else if (searchTimer > 1f)
                {
                    foreach (Collider coll in colls)
                    {
                        MobileWorldObject wO = coll.GetComponent <MobileWorldObject>();
                        if (wO && wO.GetSpecies() == player.species && !wO.isMoving && !wO.attacking)
                        {
                            Vector3 buildingPos = new Vector3(transform.position.x, 0f, transform.position.z);
                            Vector3 woPos       = new Vector3(wO.transform.position.x, 0f, wO.transform.position.z);
                            if (woPos == buildingPos)
                            {
                                woPos += new Vector3(Random.Range(-1f, 1f), 0f, Random.Range(-1f, 1f));
                            }
                            Vector3 moveVector  = woPos - buildingPos;
                            float   distance    = buildingRadius + (wO.mainCollider as SphereCollider).radius - moveVector.magnitude + 1f;
                            Vector3 destination = wO.transform.position + moveVector.normalized * distance;
                            wO.SetNavAgentDestination(destination, distance + moveVector.magnitude);
                        }
                    }
                    searchTimer = 0f;
                }
            }
        }
        else
        {
            currBuildingSlot = null;
        }
        if (isPlaceable)
        {
            thisRenderer.material.color = activeSpriteColor;
        }
        else
        {
            thisRenderer.material.color = inactiveSpriteColor;
        }
    }
Example #4
0
    protected override void ResetMob(MobileWorldObject newMob)
    {
        base.ResetMob(newMob);
        Unit newUnit = newMob as Unit;

        newUnit.garrisoned   = true;
        newUnit.currPopCount = mobPopCount;
        if (mainStratPoint)
        {
            mainStratPoint.SpeciesUnitTrainerUnitMade(mobPopCount);
        }
    }
Example #5
0
 public void RemoveUnitFromCurrentSquad(MobileWorldObject unit)
 {
     if (unit.squadInt > 0)
     {
         squadDick[unit.squadInt].Remove(unit);
         if (squadDick[unit.squadInt].Count == 0)
         {
             squadDick.Remove(unit.squadInt);
             squadStopDick.Remove(unit.squadInt);
             squadFormationSetDick.Remove(unit.squadInt);
         }
         unit.squadInt = 0;
     }
 }
Example #6
0
 protected override void ResetMob(MobileWorldObject newMob)
 {
     base.ResetMob(newMob);
     newMob.gameObject.SetActive(true);
 }
Example #7
0
 protected override void Awake()
 {
     base.Awake();
     thisMobileWO = thisWorldObject as MobileWorldObject;
 }