private static void ProcessSystemConstructionModules(SolarSystem system) { bool SendUpdate = GalaxyServer.Millis - system.LastStateUpdate >= SolarSystem.UPDATE_RATE; for (int i = system.ConstructionModules.Count - 1; i >= 0; i--) { ConstructionModule c = system.ConstructionModules[i]; if (c.UpdateStateAndCheckIfDone(GalaxyServer.Millis)) { //If we are done, remove it and replace with a station module system.ConstructionModules.RemoveAt(i); system.StationModules.Add(c.ResultingStationModule); ConstructionMessage cm = new ConstructionMessage(); cm.TimeRemaining = 0; cm.Guid = c.Guid; cm.Start = false; foreach (Client client in system.Clients) { GalaxyServer.AddToSendQueue(client, cm); } } else if (SendUpdate) { ConstructionMessage cm = new ConstructionMessage(); cm.TimeRemaining = c.BuildTimeRemaining; cm.Guid = c.Guid; cm.Start = false; foreach (Client client in system.Clients) { } } } }
/** * load module prefabs */ void LoadModules() { combatModulePrefabs = new Dictionary <ModuleType, CombatModule>(); constructionModulePrefabs = new Dictionary <ModuleType, ConstructionModule>(); var mods = Resources.LoadAll("Modules", typeof(GameObject)); foreach (GameObject obj in mods) { CombatModule mod = obj.GetComponent <CombatModule>(); if (mod != null) { ModuleType type = (ModuleType)mod.GetType().GetField("type").GetRawConstantValue(); combatModulePrefabs.Add(type, mod); continue; } ConstructionModule constructionMod = obj.GetComponent <ConstructionModule>(); if (constructionMod != null) { ModuleType type = (ModuleType)constructionMod.GetType().GetField("type").GetRawConstantValue(); constructionModulePrefabs.Add(type, constructionMod); continue; } } }
public void RemoveModule(ConstructionModule module) { if (module.inventorySlot == null) { return; } InventorySlot slot = module.inventorySlot; if (slot.number > 1) { var prefab = game.GetConstructionModulePrefab(module.GetModuleType()); var newModuleInstance = Instantiate(prefab) as ConstructionModule; newModuleInstance.transform.parent = slot.transform; newModuleInstance.transform.localPosition = Vector2.zero; newModuleInstance.inventorySlot = slot; newModuleInstance.manifest = new ModuleManifest(module); newModuleInstance.manifest.name = module.manifest.name; slot.module = newModuleInstance; module.inventorySlot = null; } else { slot.module = null; module.inventorySlot = null; modules.Remove(module); slot.Activate(); } if (slot.number > 0) { slot.number--; } }
public void RemoveModule(ConstructionModule module, InventorySlot slot) { if (module.inventorySlot != slot) { return; } RemoveModule(module); }
public void Unequip(ConstructionModule module) { if (module is InternalConstructionModule) { Unequip((InternalConstructionModule)module); } else if (module is ExternalConstructionModule) { Unequip((ExternalConstructionModule)module); } }
public void AddModules(ConstructionModule module, int num) { foreach (InventorySlot slot in slots) { if (slot.available || (module.manifest.name == slot.module.manifest.name)) { AddModule(module, slot); slot.number += num - 1; return; } } }
private void CreateWorldEvents(BaseWorld world, Player player, TestUnitFactory unitFactory) { var socialUpdatePeriod = 4; var hireCitizen = new HireCitizenEvent(world, _worldData, player, unitFactory, socialUpdatePeriod); var foodEvent = new CityFoodConsumptionEvent(world, _worldData, socialUpdatePeriod); var constructionModule = new ConstructionModule(world, unitFactory); var constructionOnGui = new ConstructionOnGui(unitFactory, constructionModule); _onGui.Add(constructionOnGui); world.Events.Add(constructionModule); world.Events.Add(foodEvent); world.Events.Add(hireCitizen); }
public void HandleMessage(ConstructionMessage msg, object extra = null) { Client client = (Client)extra; Player player = client.Player; Assembly a = typeof(StationModule).Assembly; StationModule sm = (StationModule)Activator.CreateInstance(a.GetType("GalaxyShared." + msg.ClassName)); sm.SetDataFromJSON(); if (sm.CanBuild(player)) { Vector3 pos = player.Pos + Vector3.Transform(Vector3.Forward * 3, player.Rotation); ConstructionModule cm = new ConstructionModule(GalaxyServer.Millis, pos, player.Rotation, new Dock()); player.SolarSystem.ConstructionModules.Add(cm); msg.TimeRemaining = cm.BuildTimeRemaining; msg.Guid = cm.Guid; msg.ResourcesNeeded = sm.BuildRequirements; GalaxyServer.AddToSendQueue(client, msg); } }
public void AddModule(ConstructionModule module) { foreach (InventorySlot slot in slots) { Debug.Log(module.manifest.name); if (slot.available || (module.manifest.name == slot.module.manifest.name)) { if (slot.module != null) { Debug.Log("inside slot: " + slot.module.manifest.name); } else { Debug.Log(slot.available); } AddModule(module, slot); return; } } }
/** * construct invetory based on manifest */ public void Construct(InventoryManifest manifest) { modules = new List <ConstructionModule>(); foreach (var slotManifest in manifest.slots) { var moduleManifest = slotManifest.module; ConstructionModule module = Instantiate( game.GetConstructionModulePrefab(moduleManifest.type), moduleManifest.position, moduleManifest.rotation ) as ConstructionModule; module.manifest = moduleManifest; var slot = slots[moduleManifest.inventorySlotIndex]; slot.number += slotManifest.count - 1; AddModule(module, slot); Debug.Log("Created " + slotManifest.count + " " + module.GetModuleType() + " modules with name: " + moduleManifest.name); } }
public void AddModule(ConstructionModule module, InventorySlot slot) { if (!slot.available && module.manifest.name != slot.module.manifest.name) { Debug.Log("Addmodule shouldn't happen"); return; } if (module.inventorySlot == slot) { module.transform.localPosition = Vector2.zero; return; } if (!slot.available) { if (module.manifest.name == slot.module.manifest.name) { Destroy(module.gameObject); slot.number++; } return; } if (module.inventorySlot != null) { if (module.inventorySlot == slot) { return; } RemoveModule(module); } module.transform.parent = slot.transform; module.transform.localPosition = Vector2.zero; module.inventorySlot = slot; slot.module = module; modules.Add(module); slot.Deactivate(); slot.number++; }
public ConstructionOnGui(TestUnitFactory unitFactory, ConstructionModule constructionModule) { _unitFactory = unitFactory; _constructionModule = constructionModule; }