示例#1
0
 public void AddTileToCity(Hextile tile)
 {
     if (!possibleCity.Contains(tile))
     {
         possibleCity.Add(tile);
     }
 }
示例#2
0
 public void AddTileToBlockedArea(Hextile tile)
 {
     if (!possibleBlockedArea.Contains(tile))
     {
         possibleBlockedArea.Add(tile);
     }
 }
 public void AddTileToTargets(Hextile tile)
 {
     if (!targets.Contains(tile))
     {
         targets.Add(tile);
     }
 }
示例#4
0
    public void CheckCity(int citySize)
    {
        int     randomNumber = Random.Range(0, planet.hextileList.Count);
        Hextile randomHex    = planet.hextileList[randomNumber];

        GameObject newCPObj = AICityPlaceObjects[citySize];

        newCPObj.SetActive(true);
        newCPObj.transform.position = randomHex.transform.position;
    }
    void Start()
    {
        for (int i = 0; i <= numPlayers; i++)
        {
            string holderName = "Player " + i.ToString() + " Map";
            if (transform.Find(holderName))
            {
                DestroyImmediate(transform.Find(holderName).gameObject);
            }
            Transform mapHolder = new GameObject(holderName).transform;
            mapHolder.parent = transform;
            Planet planet = mapHolder.gameObject.AddComponent <Planet>();

            List <Hextile> hextileList = new List <Hextile>();

            int numRows = 15;
            for (int k = 1; k <= numRows; k++)
            {
                int   rowLength = DetermineRowLength(k, numRows);
                float rowCenter = (rowLength / 2);

                string    rowName   = "Row Holder " + k.ToString();
                Transform rowHolder = new GameObject(rowName).transform;
                rowHolder.parent = mapHolder;

                for (int j = 0; j < rowLength; j++)
                {
                    GameObject newTile = Instantiate(hextile, new Vector3(k, 0, j - rowCenter), Quaternion.identity);
                    newTile.transform.parent = rowHolder;

                    var euler = newTile.transform.eulerAngles; //Rotate the tile randomly so the cities look a little random.
                    euler.y = Random.Range(0, 360);
                    newTile.transform.eulerAngles = euler;

                    Hextile currentTileScript = newTile.GetComponent <Hextile>();
                    currentTileScript.tileLocation = new Vector2(k, j);
                    hextileList.Add(currentTileScript);
                }

                if (k % 2 == 0) // Here we're checking if this row is an odd number, and if it is, shifting its z position by -0.5
                {
                }
                else
                {
                    rowHolder.position += new Vector3(0, 0, -0.5f);
                }
            }

            //Offset the entire player's grid based on the number of players
            int offset = 15;
            mapHolder.transform.position += new Vector3(0, 0, offset * i);

            planet.hextileList = hextileList;
        }
    }
    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.name == "Main")
        {
            GameObject hextileObject = other.gameObject.transform.parent.gameObject;

            Hextile tileScript = hextileObject.GetComponent <Hextile>();

            targetting.ResetColors();
            targetting.ClearTargets();
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "Main")
        {
            GameObject hextileObject = other.gameObject.transform.parent.gameObject;

            Hextile tileScript = hextileObject.GetComponent <Hextile>();

            Renderer hextileRenderer = hextileObject.transform.Find("Main").GetComponent <Renderer>();
            hextileRenderer.material.color = Color.yellow;

            targetting.singleTarget = tileScript;
        }
    }
示例#8
0
    public override void ExecuteAction()
    {
        base.ExecuteAction();

        //Card Resolution

        for (int i = 0; i < targets.Count; i++)
        {
            Hextile hextileObject = targets[i];
            if (hextileObject.isCity)
            {
                hextileObject.TakeDamage(2);
            }
        }
    }
    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.name == "Main")
        {
            GameObject hextileObject = other.gameObject.transform.parent.gameObject;

            Hextile tileScript = hextileObject.GetComponent <Hextile>();

            if (!tileScript.isCity && !tileScript.blocked)
            {
                cityPlacementScript.ResetColors();
                cityPlacementScript.ClearCity();
            }
        }
    }
示例#10
0
    public bool PlaceCity()
    {
        bool success = false;

        if (possibleCity.Count < intendedSize)
        {
            possibleBlockedArea.Clear();
            possibleCity.Clear();
            return(success);
        }
        else
        {
            City           newCity      = new City();
            List <Hextile> newCityTiles = new List <Hextile>(possibleCity);
            newCity.cityTiles = newCityTiles;
            for (int i = 0; i < possibleCity.Count; i++)
            {
                Hextile tileScript = possibleCity[i];
                tileScript.isCity = !tileScript.isCity;
                tileScript.transform.Find("Main").GetComponent <Renderer>().material.color = Color.gray;
                tileScript.containingCity = newCity;
                tileScript.health         = 2;
                FloorGfx fgfx = tileScript.transform.Find("Main").GetComponent <FloorGfx>();
                fgfx.myColor = Color.gray;
            }
            newCity.cityEnergy = newCity.DetermineCityEnergy();
            newCity.owner      = 1;
            aiCities.Add(newCity);
            success = true;

            possibleCity.Clear();

            for (int i = 0; i < possibleBlockedArea.Count; i++)
            {
                Hextile tileScript = possibleBlockedArea[i];
                tileScript.blocked = !tileScript.blocked;
                FloorGfx fgfx = tileScript.transform.Find("Main").GetComponent <FloorGfx>();
                tileScript.transform.Find("Main").GetComponent <Renderer>().material.color = fgfx.myColor;
            }
            possibleBlockedArea.Clear();
        }

        return(success);
    }
    public void CreateCity()
    {
        if (possibleCity.Count < intendedSize)
        {
            Debug.Log("City too small!");
            return;
        }

        City           newCity      = new City();
        List <Hextile> newCityTiles = new List <Hextile>(possibleCity);

        newCity.cityTiles  = newCityTiles;
        newCity.cityEnergy = newCity.DetermineCityEnergy();
        newCity.owner      = 0;
        cH.myCities.Add(newCity);

        for (int i = 0; i < possibleCity.Count; i++)
        {
            Hextile tileScript = possibleCity[i];
            tileScript.isCity = !tileScript.isCity;
            tileScript.transform.Find("Main").GetComponent <Renderer>().material.color = Color.gray;
            tileScript.containingCity = newCity;
            tileScript.health         = 2;
            FloorGfx fgfx = tileScript.transform.Find("Main").GetComponent <FloorGfx>();
            fgfx.myColor = Color.gray;
        }


        possibleCity.Clear();

        for (int i = 0; i < possibleBlockedArea.Count; i++)
        {
            Hextile tileScript = possibleBlockedArea[i];
            tileScript.blocked = !tileScript.blocked;
            FloorGfx fgfx = tileScript.transform.Find("Main").GetComponent <FloorGfx>();
            tileScript.transform.Find("Main").GetComponent <Renderer>().material.color = fgfx.myColor;
        }
        possibleBlockedArea.Clear();

        tS.DecrementRemainingCities(intendedSize);
    }
    private void OnTriggerStay(Collider other)
    {
        if (other.gameObject.name == "Main")
        {
            GameObject hextileObject = other.gameObject.transform.parent.gameObject;

            Hextile tileScript = hextileObject.GetComponent <Hextile>();

            if (!tileScript.isCity && !tileScript.blocked)
            {
                Renderer hextileRenderer = hextileObject.transform.Find("Main").GetComponent <Renderer>();

                if (AICity)
                {
                    if (!blocker)
                    {
                        AICityPlacementScript.AddTileToCity(tileScript);
                    }
                    else
                    {
                        AICityPlacementScript.AddTileToBlockedArea(tileScript);
                    }
                }
                else
                {
                    if (!blocker)
                    {
                        hextileRenderer.material.color = Color.blue;
                        cityPlacementScript.AddTileToCity(tileScript);
                    }
                    else
                    {
                        hextileRenderer.material.color = Color.yellow;
                        cityPlacementScript.AddTileToBlockedArea(tileScript);
                    }
                }
            }
        }
    }
示例#13
0
    void Start()
    {
        cC = CameraControll.instance;
        for (int i = 0; i <= numPlayers - 1; i++)
        {
            string holderName = "Player " + i.ToString() + " Map";
            if (transform.Find(holderName))
            {
                DestroyImmediate(transform.Find(holderName).gameObject);
            }
            Transform mapHolder = new GameObject(holderName).transform;
            mapHolder.parent = transform;

            List <Hextile> hextileList = new List <Hextile>(); // revert back when done

            int numRows = 15;

            GameObject planetObject = Instantiate(planetSphere, mapHolder.transform.position, Quaternion.identity);
            planetObject.transform.position   += new Vector3((numRows - 1) / 2, -(planetSize / 2) + 1.5f, -1.5f);
            planetObject.transform.localScale *= planetSize;
            Color planetColor = Random.ColorHSV();//Color.white;//
            planetObject.GetComponent <Renderer>().material.color = planetColor;
            planetObject.transform.parent = mapHolder;
            Planet planet = planetObject.gameObject.AddComponent <Planet>();
            planet.hextileList = hextileList;

            for (int k = 1; k <= numRows; k++)
            {
                int   rowLength = DetermineRowLength(k, numRows);
                float rowCenter = (rowLength / 2);

                string    rowName   = "Row Holder " + k.ToString();
                Transform rowHolder = new GameObject(rowName).transform;
                rowHolder.parent = mapHolder;

                for (int j = 0; j < rowLength; j++)
                {
                    GameObject newTile = Instantiate(hextile, new Vector3(k, 0, j - rowCenter), Quaternion.identity);
                    tiles.Add(newTile);
                    newTile.transform.parent = rowHolder;

                    GameObject floor = newTile.transform.Find("Main").gameObject;
                    floor.GetComponent <Renderer>().material.color = planetColor;
                    floor.GetComponent <FloorGfx>().myColor        = planetColor;

                    Transform cityObject = newTile.transform.Find("City");
                    var       euler      = newTile.transform.eulerAngles; //Rotate the tile randomly so the cities look a little random.
                    euler.y = Random.Range(0, 360);
                    cityObject.eulerAngles = euler;
                    cityObject.localScale += new Vector3(0, Random.Range(0f, 2f), 0);
                    cityObject.gameObject.SetActive(false);

                    Hextile currentTileScript = newTile.GetComponent <Hextile>();
                    currentTileScript.tileLocation   = new Vector2(k, j);
                    currentTileScript.owningPlayerID = i;
                    hextileList.Add(currentTileScript);
                }


                if (k % 2 == 0) // Here we're checking if this row is an odd number, and if it is, shifting its z position by -0.5
                {
                }
                else
                {
                    rowHolder.position += new Vector3(0, 0, -0.5f);
                }
            }

            //Offset the entire player's grid based on the number of players
            int offset = 50;
            mapHolder.transform.position  = mapHolder.parent.position;
            mapHolder.transform.position += new Vector3(offset * i, 0, offset * i);


            Transform camAnchor = new GameObject().transform;
            camAnchor.transform.position = mapHolder.position += new Vector3(0, 0, numRows / 2);
            //cC.camSpots.Add(camAnchor);
        }
        //FogGen();
    }
示例#14
0
 public void GetTileNeighbours(Hextile mainTile)
 {
 }
示例#15
0
 public void ClearTargets()
 {
     targets.Clear();
     singleTarget = null;
 }