Пример #1
0
    private void SpawnHousesWithinCity(int numberOfHouses)
    {
        Grid  grid     = FindObjectOfType <Grid>();
        float gridUnit = grid.cellSize.x;

        for (int i = 0; i < numberOfHouses; i++)
        {
            Vector3 actualPos = Vector3.zero;
            int     attempts  = 0;
            do
            {
                Vector3 gridSnappedPos = Vector3.zero;
                Vector2 pos            = UnityEngine.Random.insideUnitCircle * CityRadius;
                Vector3 pos3           = pos;
                gridSnappedPos = new Vector3(Mathf.Round(pos.x / gridUnit), Mathf.Round(pos.y / gridUnit), 0);
                Vector3 halfStep = (new Vector3(1, 1, 0)) * gridUnit / 2f;
                actualPos = transform.position + gridSnappedPos + halfStep;
                attempts++;
                if (attempts > 10)
                {
                    break;
                }
            }while (!(IsTestLocationValid_NavMesh(actualPos) & IsTestLocationValid_Physics(actualPos)));

            GameObject newHouse = Instantiate(housePrefab, actualPos, housePrefab.transform.rotation) as GameObject;
            Building   house    = newHouse.GetComponent <Building>();
            house.am = am;
            house.SetHouseIFFAllegiance(iff.GetIFFAllegiance());
            //house.InitializeBuilding();
            house.SetOwningCity(this);
            NetworkServer.Spawn(newHouse);
            hic.Add(house);
        }
    }
Пример #2
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (cs.IsRunningOnServer)
     {
         int collisionIFF = collision.GetComponent <IFF>().GetIFFAllegiance();
         int ownIFF       = iff.GetIFFAllegiance();
         if (collisionIFF == ownIFF)
         {
             return;
         }
         cityToCapture = collision.GetComponent <CitySquare>();
     }
 }
Пример #3
0
    private void EvaluateDetectedObject(GameObject go)
    {
        Debug.Log("Evaluating detected object " + go.name);
        IFF goIFF;

        if (go.TryGetComponent <IFF>(out goIFF) && go.GetComponent <ControlSource>() != null)
        {
            int targetIFF = goIFF.GetIFFAllegiance();
            if (targetIFF != ownIFF.GetIFFAllegiance())
            {
                targets.Add(go);
            }
        }
    }
Пример #4
0
 void Start()
 {
     am  = FindObjectOfType <AllegianceManager>();
     iff = transform.root.GetComponentInChildren <IFF>();
     am.AddFactionLeaderToList(iff.GetIFFAllegiance(), this);
     //Debug.Log(gameObject.name + " attempted to add an FL for allegiance: " + iff.GetIFFAllegiance());
 }
Пример #5
0
 void Start()
 {
     am = FindObjectOfType <AllegianceManager>();
     sr = GetComponent <SpriteRenderer>();
     SelectCityName();
     SpawnHousesWithinCity(numberOfHousesToSpawn);
     ConvertHousesToTurrets();
     SetAllegianceForBuildingsInCity(iff.GetIFFAllegiance());
 }
Пример #6
0
 public void FadeOrTurnInvisible()
 {
     if (iff.GetIFFAllegiance() == am.GetPlayerIFF())
     {
         SlightlyFadeOutForPlayerUnit();
     }
     else
     {
         MakeObjectInvisible();
     }
 }
Пример #7
0
 public void FindCurrentOwner()
 {
     owner = am.GetFactionLeader(iff.GetIFFAllegiance()).gameObject;
 }
Пример #8
0
 private void ScanForTarget()
 {
     timeSinceLastScan -= Time.deltaTime;
     if (timeSinceLastScan <= 0)
     {
         target            = ut.FindClosestTargetWithinSearchRange(gameObject, searchRange, ownIFF.GetIFFAllegiance());
         timeSinceLastScan = timeBetweenScans;
     }
 }