Beispiel #1
0
    // Constructor
    public JobDef(string csvLine, Dictionary <string, List <int> > column)
    {
        guid = Guid.NewGuid();

        inputResources        = new ResourceQuantityQualityList();
        outputName            = new List <string>();
        defaultOutputQuantity = new List <int>();

        string[] values = csvLine.Split(',');

        // Job Name
        if (values[column["Job Name"][0]].Length > 0)
        {
            name = values[column["Job Name"][0]];
        }

        // Description
        if (values[column["Description"][0]].Length > 0)
        {
            description = values[column["Description"][0]];
        }

        //Industry,Skill
        if (values[column["Industry"][0]].Length > 0)
        {
            industry = values[column["Industry"][0]];
        }

        if (values[column["Skill"][0]].Length > 0)
        {
            skill = values[column["Skill"][0]];
        }

        // Tier
        if (values[column["Tier"][0]].Length > 0)
        {
            if (!Int32.TryParse(values[column["Tier"][0]], out tier))
            {
                Debug.Log("Cannot Parse Job Tier");
            }
        }

        // Tiles Required
        if (values[column["Tiles Required"][0]].Length > 0)
        {
            tileRequired = values[column["Tiles Required"][0]];
        }

        // Max Workers
        if (values[column["Work PMU"][0]].Length > 0)
        {
            if (!Single.TryParse(values[column["Work PMU"][0]], out defaultPMUs))
            {
                Debug.Log("Cannot Parse Work PMU");
            }
        }

        // Resources to Craft
        List <int> inputName  = column["Input Name"];
        List <int> inputType  = column["Input Type"];
        List <int> inputTier  = column["Input Tier"];
        List <int> inputQuant = column["Input Quantity"];

        for (int i = 0; i < inputName.Count; i++)
        {
            // Check for NQQ
            if (values[inputName[i]].Length > 0)
            {
                string name = values[inputName[i]];
                int    quantity;
                if (!Int32.TryParse(values[inputQuant[i]], out quantity))
                {
                    Debug.Log("Cannot Parse Input Quantity: " + values[inputQuant[i]]);
                }
                ResourceNameQuantityQuality nqq = new ResourceNameQuantityQuality(name, QualityEnum.any, quantity);
                inputResources.rqqList.Add(nqq);
                // Error check
                if (values[inputType[i]].Length > 0)
                {
                    Debug.LogWarning("Job Definition file should not have both Name and Type of a Job Input Resource");
                }
            }
            // check for TQQ
            else if (values[inputType[i]].Length > 0)
            {
                string type = values[inputType[i]];
                int    quantity, minTier;
                if (!Int32.TryParse(values[inputQuant[i]], out quantity))
                {
                    Debug.Log("Cannot Parse Input Quantity: " + values[inputQuant[i]]);
                }
                if (!Int32.TryParse(values[inputTier[i]], out minTier))
                {
                    Debug.Log("Cannot Parse Input Tier: " + values[inputTier[i]]);
                }
                ResourceTypeQuantityQuality tqq = new ResourceTypeQuantityQuality(type, QualityEnum.any, quantity, minTier);
                inputResources.rqqList.Add(tqq);
            }
        }

        // Output Resources
        List <int> outputNameC     = column["Output Name"];
        List <int> outputQuantityC = column["Output Quantity"];

        for (int i = 0; i < outputNameC.Count; i++)
        {
            // Output Name
            if (values[outputNameC[i]].Length > 0)             // There is an output in this column
            {
                outputName.Add(values[column["Output Name"][0]]);
                int q = 0;
                if (!Int32.TryParse(values[outputQuantityC[i]], out q))
                {
                    Debug.Log("Cannot Parse Output Quantity");
                }
                defaultOutputQuantity.Add(q);
            }
        }
    }
    // Constructor
    public BuildingDef(List <string> csvLines, Dictionary <string, int> column)
    {
        resourcesToBuild = new ResourceQuantityQualityList();
        industry         = new List <string>();
        skill            = new List <string>();
        jobsEnabled      = new List <string>();
        jobMaxTier       = new Dictionary <string, int>();

        foreach (string line in csvLines)
        {
            string[] values = line.Split(',');

            // Current keys into column
            //Debug.Log(line);

            // Name
            if (values[column["Name"]].Length > 0)
            {
                name = values[column["Name"]];
            }

            // Category
            if (values[column["Category"]].Length > 0)
            {
                category = values[column["Category"]];
            }

            // Parent Name
            if (values[column["Parent Name"]].Length > 0)
            {
                parentName = values[column["Parent Name"]];
            }

            // Tier
            if (values[column["Tier"]].Length > 0)
            {
                if (!Int32.TryParse(values[column["Tier"]], out tier))
                {
                    Debug.Log("Cannot Parse Building Tier");
                }
            }

            // Description
            if (values[column["Description"]].Length > 0)
            {
                description = values[column["Description"]];
            }

            // Resource Type to Build
            if (values[column["Resource Type to Build"]].Length > 0)
            {
                int c, t;
                if (!Int32.TryParse(values[column["Resource Count"]], out c))
                {
                    Debug.Log("Cannot Parse Resource Count \"" + values[column["Resource Count"]] + "\"");
                }
                if (!Int32.TryParse(values[column["Min Resource Tier"]], out t))
                {
                    Debug.Log("Cannot Parse Min Resource Tier \"" + values[column["Min Resource Tier"]] + "\"");
                }

                ResourceTypeQuantityQuality tqq = new ResourceTypeQuantityQuality(
                    values[column["Resource Type to Build"]], QualityEnum.any, c, t);

                resourcesToBuild.rqqList.Add(tqq);
            }

            // Max Workers
            if (values[column["Max Workers"]].Length > 0)
            {
                if (!Int32.TryParse(values[column["Max Workers"]], out maxWorkers))
                {
                    Debug.Log("Cannot Parse Max Workers");
                }
            }

            // Max HP
            if (values[column["Max HP"]].Length > 0)
            {
                if (!Int32.TryParse(values[column["Max HP"]], out maxHp))
                {
                    Debug.Log("Cannot Parse Max HP");
                }
            }

            // Housing
            if (values[column["Housing"]].Length > 0)
            {
                if (!Int32.TryParse(values[column["Housing"]], out housing))
                {
                    Debug.Log("Cannot Parse Housing");
                }
            }

            // Housing
            if (values[column["Maintenance Cost"]].Length > 0)
            {
                if (!Int32.TryParse(values[column["Maintenance Cost"]], out maintenanceCost))
                {
                    Debug.Log("Cannot Parse Maintenance Cost");
                }
            }

            // Housing
            if (values[column["Default Max Dist"]].Length > 0)
            {
                if (!Int32.TryParse(values[column["Default Max Dist"]], out defaultMaxDistToWorkTiles))
                {
                    Debug.Log("Cannot Parse Default Max Dist");
                }
            }

            //Industries,Skills
            if (values[column["Industries"]].Length > 0)
            {
                industry.Add(values[column["Industries"]]);
            }
            if (values[column["Skills"]].Length > 0)
            {
                skill.Add(values[column["Skills"]]);
            }

            // PMUs to Build
            if (values[column["PMUs to Build"]].Length > 0)
            {
                if (!Single.TryParse(values[column["PMUs to Build"]], out defaultPMUs))
                {
                    Debug.Log("Cannot Parse PMUs to Build");
                }
            }

            if (sprite == null)
            {
                Texture2D tex;
                if (values[column["Image"]].Length == 0)
                {
                    tex = (Resources.Load("Textures/NeedIcon") as Texture2D);
                }
                else
                {
                    tex = (Resources.Load(values[column["Image"]]) as Texture2D);
                }
                sprite = Sprite.Create(tex,
                                       new Rect(0, 0, tex.width, tex.height),
                                       new Vector2(0.5f, 0.5f), tex.width);
            }

            // Job Name, Job Max Tier
            if (values[column["Job Name"]].Length > 0)
            {
                jobsEnabled.Add(values[column["Job Name"]]);
                jobMaxTier[values[column["Job Name"]]] = Int32.Parse(values[column["Job Max Tier"]]);
            }
        }
    }