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; }
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); } } } } } }
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; }
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; }
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(); }
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); }
/// <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; } } } }
/// <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; } } }