private Dictionary <string, int> CalcPrimary()
        {
            Dictionary <string, int> primary = new Dictionary <string, int>();

            primary.Add("Thatch", 0);
            primary.Add("Fiber", 0);
            primary.Add("Wood", 0);
            primary.Add("Stone", 0);
            primary.Add("Metal", 0);
            primary.Add("Paste", 0);
            primary.Add("Polymer", 0);
            primary.Add("Crystal", 0);
            primary.Add("Element", 0);

            Dictionary <string, int> Foundation  = new Dictionary <string, int>();
            Dictionary <string, int> Walls       = new Dictionary <string, int>();
            Dictionary <string, int> Ceiling     = new Dictionary <string, int>();
            Dictionary <string, int> Doorframe   = new Dictionary <string, int>();
            Dictionary <string, int> Door        = new Dictionary <string, int>();
            Dictionary <string, int> Windowframe = new Dictionary <string, int>();
            Dictionary <string, int> Window      = new Dictionary <string, int>();

            switch (primaryMaterial)
            {
            case "Thatch":
            {
                Thatch materialCost = new Thatch();
                Foundation = materialCost.Foundation;
                Walls      = materialCost.Wall;
                Ceiling    = materialCost.Ceiling;
                Doorframe  = materialCost.Doorframe;
                Door       = materialCost.Door;
                break;
            }

            case "Wood":
            {
                Wood materialCost = new Wood();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }

            case "Stone":
            {
                Stone materialCost = new Stone();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }

            case "Metal":
            {
                Metal materialCost = new Metal();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }

            case "Tek":
            {
                Tek materialCost = new Tek();
                Foundation  = materialCost.Foundation;
                Walls       = materialCost.Wall;
                Ceiling     = materialCost.Ceiling;
                Doorframe   = materialCost.Doorframe;
                Door        = materialCost.Door;
                Windowframe = materialCost.Windowframe;
                Window      = materialCost.Window;
                break;
            }
            }

            foreach (KeyValuePair <string, int> kv in Foundation)
            {
                primary[kv.Key] += kv.Value * foundation;
            }

            foreach (KeyValuePair <string, int> kv in Walls)
            {
                primary[kv.Key] += kv.Value * walls;
            }

            foreach (KeyValuePair <string, int> kv in Ceiling)
            {
                primary[kv.Key] += kv.Value * roof;
            }

            foreach (KeyValuePair <string, int> kv in Doorframe)
            {
                primary[kv.Key] += kv.Value * doors;
            }

            foreach (KeyValuePair <string, int> kv in Door)
            {
                primary[kv.Key] += kv.Value * doors;
            }

            if (primaryMaterial != "Thatch")
            {
                foreach (KeyValuePair <string, int> kv in Windowframe)
                {
                    primary[kv.Key] += kv.Value * windows;
                }

                foreach (KeyValuePair <string, int> kv in Window)
                {
                    primary[kv.Key] += kv.Value * windows;
                }
            }

            return(primary);
        }
        private Dictionary <string, int> CalcSecondary()
        {
            Dictionary <string, int> secondary = new Dictionary <string, int>();

            secondary.Add("Thatch", 0);
            secondary.Add("Fiber", 0);
            secondary.Add("Wood", 0);
            secondary.Add("Stone", 0);
            secondary.Add("Metal", 0);
            secondary.Add("Paste", 0);
            secondary.Add("Polymer", 0);
            secondary.Add("Crystal", 0);
            secondary.Add("Element", 0);

            Dictionary <string, int> Ceiling = new Dictionary <string, int>();

            switch (secondaryMaterial)
            {
            case "Thatch":
            {
                Thatch materialCost = new Thatch();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Wood":
            {
                Wood materialCost = new Wood();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Stone":
            {
                Stone materialCost = new Stone();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Metal":
            {
                Metal materialCost = new Metal();
                Ceiling = materialCost.Ceiling;
                break;
            }

            case "Tek":
            {
                Tek materialCost = new Tek();
                Ceiling = materialCost.Ceiling;
                break;
            }
            }

            foreach (KeyValuePair <string, int> kv in Ceiling)
            {
                secondary[kv.Key] += kv.Value * foundation * (floors - 1);
            }

            return(secondary);
        }