コード例 #1
0
        public StationModuleMiningStore()
        {
            this.StoreItems     = new Dictionary <string, int>();
            this.StoreMaterials = new Dictionary <string, int>();

            foreach (KeyValuePair <string, StoreItem> it in GameEngine.Instance.ItemTemplates)
            {
                if (it.Value != null)
                {
                    if (it.Value.Type == ItemType.Mineral)
                    {
                        this.StoreMaterials.Add(it.Key, 0);
                    }
                    else
                    {
                        this.StoreItems.Add(it.Key, 0);
                    }
                }
            }

            buttonInfo = new GuiButtonInfo("leftGuiBottom", new Rectangle(60, 200, 60, 40), "Mining Store", "leftGui.MiningStores", true);
            buttonInfo.Params.Add("NextScreen", new GuiButtonParamChangeScreen(GameScreen.StationModule));
            buttonInfo.Params.Add("NextStationModule", new GuiButtonParamChangeStationModule(this.GetType().Name));
            buttonIndex = 0;
        }
コード例 #2
0
        public void SwitchStore()
        {
            if (GameEngine.Instance.GuiMenuModule.ContainsKey("miningStoreItemMenu"))
            {
                GameEngine.Instance.GuiMenuModule["miningStoreItemMenu"].Buttons.Clear();
            }

            mineralList = !mineralList;

            int  prodRank = 1;
            bool orbital  = false;

            // TODO: Get prodRank and orbital

            if (GameEngine.Instance.GuiMenuModule.ContainsKey("miningStoreItemMenu"))
            {
                if (mineralList)
                {
                    GuiButtonInfo btn;
                    int           i = -1;
                    foreach (KeyValuePair <string, StoreItem> sit in GameEngine.Instance.ItemTemplates)
                    {
                        if (sit.Value.Type != ItemType.Mineral)
                        {
                            i++;

                            if (sit.Value.Researched)
                            {
                                btn = new GuiButtonInfo("miningStoreItemMenu", new Rectangle((i / 16) * 42 + 7, (i % 16 * 20) + 7, 42, 20), sit.Value.Title, "gameScreen.Storage.ItemBlink", true, 1, 100);
                                if (sit.Value.OrbitalOnly && !orbital)
                                {
                                    btn.PictureColor = Color.Yellow;
                                }
                                else
                                {
                                    if (sit.Value.BuildRank > prodRank)
                                    {
                                        btn.PictureColor = Color.Red;
                                    }
                                    else
                                    {
                                        btn.PictureColor = Color.Green;
                                    }
                                }

                                GuiButtonParamExecuteModuleMethod par = new GuiButtonParamExecuteModuleMethod("ShowItemPrice", GetType().ToString());
                                par.methodParams.Add(new MethodParamInfo(typeof(string).ToString(), sit.Key));
                                btn.Params.Add("Show" + sit.Key + "Price", par);

                                par = new GuiButtonParamExecuteModuleMethod("ResetAnimation", GetType().ToString());
                                par.methodParams.Add(new MethodParamInfo(typeof(string).ToString(), GameEngine.Instance.GuiMenuModule["miningStoreItemMenu"].Buttons.Count.ToString()));
                                btn.Params.Add("ResetAnimation", par);

                                GameEngine.Instance.GuiMenuModule["miningStoreItemMenu"].Buttons.Add(GetType().Name + ".ShowItemPrice." + sit.Key, btn);
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        public StationModuleFactory()
        {
            BuildQueue = new List <ItemBuildInfo>();

            buttonInfo = new GuiButtonInfo("leftGuiBottom", new Rectangle(0, 0, 60, 40), "Production", "leftGui.Production", true);
            buttonInfo.Params.Add("NextScreen", new GuiButtonParamChangeScreen(GameScreen.StationModule));
            buttonInfo.Params.Add("NextStationModule", new GuiButtonParamChangeStationModule(this.GetType().Name));
            buttonIndex = 0;
        }
コード例 #4
0
        public StationModuleMiningFacility()
        {
            mines = new Dictionary <string, MiningOperationInfo>();

            foreach (KeyValuePair <string, StoreItem> min in GameEngine.Instance.ItemTemplates)
            {
                if (min.Value.Type == ItemType.Mineral)
                {
                    mines.Add(min.Key, new MiningOperationInfo());
                }
            }

            buttonInfo = new GuiButtonInfo("leftGuiBottom", new Rectangle(60, 160, 60, 40), "Mining Facility", "leftGui.Resources", true);
            buttonInfo.Params.Add("NextScreen", new GuiButtonParamChangeScreen(GameScreen.StationModule));
            buttonInfo.Params.Add("NextStationModule", new GuiButtonParamChangeStationModule(this.GetType().Name));
            buttonIndex = 0;
        }
コード例 #5
0
        public override void OnInitMenus()
        {
            GuiMenu mnu = new GuiMenu("miningStoreMenu");

            mnu.Picture     = "gameScreen.Storage";
            mnu.Location    = new Point(120, 40);
            mnu.TextureArea = new Rectangle(0, 0, 680, 420);
            GameEngine.Instance.GuiMenuModule.Add(mnu.Id, mnu);

            GuiButtonInfo btn = new GuiButtonInfo("miningStoreMenu", new Rectangle(80, 378, 61, 40), "Switch store", "", true);

            btn.Params.Add("SwitchStore", new GuiButtonParamExecuteModuleMethod("SwitchStore", GetType().ToString()));
            mnu.Buttons.Add(GetType().Name + ".SwitchStore", btn);

            mnu             = new GuiMenu("miningStoreItemMenu");
            mnu.Picture     = "";
            mnu.Location    = new Point(560 + 120, 0 + 40);
            mnu.TextureArea = new Rectangle(0, 0, 101, 334);
            GameEngine.Instance.GuiMenuModule.Add(mnu.Id, mnu);

            SwitchStore();
            SwitchStore();
        }
コード例 #6
0
        public override void OnInitMenus()
        {
            GuiMenu mnu = new GuiMenu("factoryMenu");

            mnu.Picture     = "gameScreen.Production";
            mnu.Location    = new Point(120, 40);
            mnu.TextureArea = new Rectangle(0, 0, 680, 420);
            GameEngine.Instance.GuiMenuModule.Add(mnu.Id, mnu);

            GuiButtonInfo btn = new GuiButtonInfo("factoryMenu", new Rectangle(298, 368, 60, 40), "Send Team To Bay", "", true);

            btn.Params.Add("EvictTeam", new GuiButtonParamExecuteModuleMethod("EvictTeam", GetType().ToString()));
            mnu.Buttons.Add(GetType().Name + ".EvictTeam", btn);

            mnu             = new GuiMenu("factoryMenuItems");
            mnu.Picture     = "";
            mnu.Location    = new Point(560 + 120, 0 + 40);
            mnu.TextureArea = new Rectangle(0, 0, 101, 334);
            GameEngine.Instance.GuiMenuModule.Add(mnu.Id, mnu);

            Dictionary <string, bool> pomQueue = new Dictionary <string, bool>(BuildQueue.Count);
            int i;

            for (i = 0; i < BuildQueue.Count; i++)
            {
                pomQueue.Add(BuildQueue[i].ItemId, BuildQueue[i].Repeat);
            }

            i = -1;

            foreach (KeyValuePair <string, StoreItem> sit in GameEngine.Instance.ItemTemplates)
            {
                if (sit.Value.Type != ItemType.Mineral)
                {
                    i++;

                    if (sit.Value.Researched)
                    {
                        btn = new GuiButtonInfo("miningStoreItemMenu", new Rectangle((i / 16) * 42 + 7, (i % 16 * 20) + 7, 42, 20), sit.Value.Title, "gameScreen.Storage.ItemBlink", true, 1, 100);
                        if (!pomQueue.ContainsKey(sit.Key))
                        {
                            btn.PictureColor = Color.Red;
                        }
                        else
                        {
                            if (pomQueue[sit.Key])
                            {
                                btn.PictureColor = Color.Green;
                            }
                            else
                            {
                                btn.PictureColor = Color.Yellow;
                            }
                        }

                        GuiButtonParamExecuteModuleMethod par = new GuiButtonParamExecuteModuleMethod("CycleQueueItem", GetType().ToString());
                        par.methodParams.Add(new MethodParamInfo(typeof(string).ToString(), sit.Key));
                        btn.Params.Add("CycleQueueItem", par);

                        mnu.Buttons.Add(GetType().Name + ".CycleQueueItem." + sit.Key, btn);
                    }
                }
            }

            //366,350
//			btn = new GuiButtonInfo("factoryMenu", new Rectangle(366+58-8, 350+31-8, 15, 12), "AOC status", "gameScreen.Storage.ItemBlink", true, 10, 100);
//			mnu.Buttons.Add(btn);
        }
コード例 #7
0
        /// <summary>
        /// Cycles item in the build queue - not building -> building 1 -> building inf.
        /// </summary>
        /// <param name="itemId">Item ID</param>
        public void CycleQueueItem(string itemId)
        {
            int idx = -1;

            for (int i = 0; i < BuildQueue.Count; i++)
            {
                if (BuildQueue[i].ItemId == itemId)
                {
                    idx = i;

                    break;
                }
            }

            GuiMenu       mnu = null;
            GuiButtonInfo btn = null;

            if (GameEngine.Instance.GuiMenuModule.ContainsKey("factoryMenuItems"))
            {
                mnu = GameEngine.Instance.GuiMenuModule["factoryMenuItems"];

                foreach (KeyValuePair <string, GuiButtonInfo> cur in mnu.Buttons)
                {
                    if (((GuiButtonParamExecuteModuleMethod)cur.Value.Params["CycleQueueItem"]).methodParams[0].Value == itemId)
                    {
                        btn = cur.Value;

                        break;
                    }
                }
            }

            if (idx == -1)               // not building -> build 1
            {
                AddQueueItem(itemId, false);

                if (btn != null)
                {
                    btn.PictureColor = Color.Yellow;
                }
            }
            else
            {
                if (BuildQueue[idx].Repeat)
                {
                    if (BuildQueueIndex == idx)
                    {
                        BuildProgress = 0;
                    }
                    if (BuildQueueIndex >= idx)
                    {
                        BuildQueueIndex--;
                    }

                    BuildQueue.RemoveAt(idx);

                    if (btn != null)
                    {
                        btn.PictureColor = Color.Red;
                    }
                }
                else
                {
                    BuildQueue[idx].Repeat = true;

                    if (btn != null)
                    {
                        btn.PictureColor = Color.Green;
                    }
                }
            }
        }
コード例 #8
0
        /// <summary>
        /// Handles factorys work cycle
        /// </summary>
        public override void OnNextTurn()
        {
            if (BuildQueueIndex == -1 && BuildQueue.Count > 0)
            {
                BuildQueueIndex = 0;
                BuildProgress   = 0;
                if (HasAOC)
                {
                    lastProductionMark = GameEngine.Instance.CurrentCycle + GameEngine.Instance.CurrentYear * 1000;

                    BuildProgress = -1;
                }
            }

                        #if DebugStations
            if (BuildQueueIndex != -1)
            {
                Console.WriteLine("Factory module on station '" + parent.Title + "' \r\n\thas a work cycle (Build progress " + BuildProgress.ToString() + " of " + GameEngine.Instance.ItemTemplates[BuildQueue[BuildQueueIndex].ItemId].BuildTime.ToString() + ").");
            }
                        #endif

            if (BuildQueueIndex != -1 && (GameEngine.Instance.CurrentCycle + GameEngine.Instance.CurrentYear * 1000 - lastProductionMark) >= productionPrepareTime)
            {
                if (!resourcesReady && Store != null)
                {
                    StoreItem it = GameEngine.Instance.ItemTemplates[BuildQueue[BuildQueueIndex].ItemId];

                    bool isOk = true;
                    foreach (FactoryResource res in it.Resources)
                    {
                        isOk &= Store.CheckStorage(
                            GameEngine.Instance.ItemTemplates[res.itemId].Type != ItemType.Mineral,
                            res.itemId, res.amount);
                    }

                    if (isOk)
                    {
                        foreach (FactoryResource res in it.Resources)
                        {
                            isOk &= Store.RemoveFromStorage(
                                GameEngine.Instance.ItemTemplates[res.itemId].Type != ItemType.Mineral,
                                res.itemId, res.amount);
                        }

                        resourcesReady = true;
                    }
                }

                if (resourcesReady)
                {
                    if (ProductionTeam != null)
                    {
                        BuildProgress += ProductionTeam.GetProductionValue();
                    }
                    else
                    {
                        if (HasAOC)
                        {
                            BuildProgress += 200;
                        }
                    }

                    if (BuildProgress >= GameEngine.Instance.ItemTemplates[BuildQueue[BuildQueueIndex].ItemId].BuildTime)
                    {
                        Store.AddToStorage(true, BuildQueue[BuildQueueIndex].ItemId, 1);

                                                #if DebugStations
                        if (BuildQueueIndex != -1)
                        {
                            Console.WriteLine("Item " + GameEngine.Instance.ItemTemplates[BuildQueue[BuildQueueIndex].ItemId].Title + " built.");
                        }
                                                #endif


                        if (!BuildQueue[BuildQueueIndex].Repeat)
                        {
                            GuiMenu       mnu = null;
                            GuiButtonInfo btn = null;

                            if (GameEngine.Instance.GuiMenuModule.ContainsKey("factoryMenuItems"))
                            {
                                mnu = GameEngine.Instance.GuiMenuModule["factoryMenuItems"];

                                foreach (KeyValuePair <string, GuiButtonInfo> cur in mnu.Buttons)
                                {
                                    if (((GuiButtonParamExecuteModuleMethod)cur.Value.Params["CycleQueueItem"]).methodParams[0].Value == BuildQueue[BuildQueueIndex].ItemId)
                                    {
                                        btn = cur.Value;

                                        break;
                                    }
                                }

                                btn.PictureColor = Color.Red;
                            }

                            BuildQueue.RemoveAt(BuildQueueIndex);
                        }
                        else
                        {
                            BuildQueueIndex++;
                        }

                        resourcesReady = false;

                        BuildProgress = 0;
                        if (HasAOC)
                        {
                            lastProductionMark = GameEngine.Instance.CurrentCycle + GameEngine.Instance.CurrentYear * 1000;

                            BuildProgress = -1;
                        }
                    }
                }
            }

            if (BuildQueueIndex >= BuildQueue.Count)
            {
                if (BuildQueue.Count > 0)
                {
                    BuildQueueIndex = 0;
                }
                else
                {
                    BuildQueueIndex = -1;
                }
            }
        }