public void Fill()
    {
        for (int i = 0; i < monsterPrefabs.Length; i++)
        {
            GameObject prefab = monsterPrefabs[i];
            UnitPrefabs.AddPrefab(prefab, i, UnitPrefabCategory.Monster);
        }

        for (int i = 0; i < producePrefabs.Length; i++)
        {
            GameObject prefab = producePrefabs[i];
            UnitPrefabs.AddPrefab(prefab, i, UnitPrefabCategory.Produce);
        }

        for (int i = 0; i < plantPrefabs.Length; i++)
        {
            GameObject prefab = plantPrefabs[i];
            UnitPrefabs.AddPrefab(prefab, i, UnitPrefabCategory.Plant);
        }

        for (int i = 0; i < seedPrefabs.Length; i++)
        {
            GameObject prefab = seedPrefabs[i];
            UnitPrefabs.AddPrefab(prefab, i, UnitPrefabCategory.Seed);
        }
    }
    public void CreateUnitType(int count, UnitTeams team, string type)
    {
        GameObject   prefab = null;
        GameObject   go;
        BaseUnit     unitScript;
        UnitSettings settings;

        UnitPrefabs unitPrefabs = prefabs.Find(t => t.team == team);

        if (unitPrefabs.prefabs != null)
        {
            prefab = unitPrefabs.prefabs.Find(t => t.name.ToLower().Contains(type.ToLower()));
        }

        if (prefab != null)
        {
            for (int i = 0; i < count; i++)
            {
                go = Instantiate(prefab, GetRandomUnitPosition(unitPrefabs), Quaternion.identity);
                go.transform.rotation = Quaternion.LookRotation(new Vector3(-go.transform.position.x, 0, 0));
                unitScript            = go.GetComponent <BaseUnit>();
                settings = unitSettings.Find(t => t.team.ToLower() == team.ToString().ToLower() && t.unitType.ToLower() == type.ToLower());
                unitScript.Init(settings);
            }
        }
    }
    private Vector3 GetRandomUnitPosition(UnitPrefabs unitPrefabs)
    {
        int x = Random.Range(unitPrefabs.instantiateAreaStartGridPos.x, unitPrefabs.instantiateAreaEndGridPos.x);
        int y = Random.Range(unitPrefabs.instantiateAreaStartGridPos.y, unitPrefabs.instantiateAreaEndGridPos.y);

        return(LvlManager.instance.GridPosToWorld(x, y));
    }
Example #4
0
    /// <summary>
    /// Reads Unit Types From XML File
    /// </summary>
    /// <param name="path">The Location of the XML File</param>
    /// <returns>A Dictionary of Unit Names and Unit Types</returns>
    public Dictionary <string, Unit> LoadUnits(string path)
    {
        Dictionary <string, Unit> types = new Dictionary <string, Unit>();
        XmlDocument doc = new XmlDocument();
        string      xml = Resources.Load(path).ToString();

        doc.LoadXml(xml);
        foreach (XmlNode node in doc.DocumentElement["Units"])
        {
            string name           = node["Name"].InnerText;
            int    Movement       = int.Parse(node["Movement"].InnerText);
            int    Vision         = int.Parse(node["Vision"].InnerText);
            bool   CanSettle      = bool.Parse(node["CanSettle"].InnerText);
            int    ProductionCost = int.Parse(node["ProductionCost"].InnerText);
            int    HitPoints      = int.Parse(node["HitPoints"].InnerText);
            bool   Attackable     = bool.Parse(node["Attackable"].InnerText);
            Unit   u = new Unit(name, Movement, Vision, CanSettle, ProductionCost, HitPoints, Attackable, GetHexAt(0, 0));
            //CHANGEME
            UnitPrefabs.Add(name, UnitPrefab);
            types.Add(name, u);
        }

        return(types);
    }