public void changeStructure(shared.Vector2Int location, Structure.StructureType newType) { if (ownedOutposts.ContainsKey(location)) { Structure str = NewStructure(location, newType); ownedOutposts[location] = str; GameServer.Instance.Structures.SetStructure(str); } }
public void SendCommand(shared.Vector2Int location, string command, string args) { if (ownedOutposts.ContainsKey(location)) { ownedOutposts[location].CallCommand(command, args); } else { Logger.LogError("No structure at " + location); } }
public bool CanCreateStructure(shared.Vector2Int location, out shared.MessageTypes reason) { if (!GameServer.Instance.Structures.CanCreateStructure(location)) { reason = shared.MessageTypes.Invalid_Structure_Location; return(false); } // has resources? reason = shared.MessageTypes.None; return(true); }
public Structure[] GetOps(shared.Vector2Int topLeft, shared.Vector2Int bottomRight, Dictionary <shared.Vector2Int, Structure> dict) { List <Structure> result = new List <Structure>(); foreach (shared.Vector2Int position in dict.Keys) { if (position.x >= topLeft.x && position.x <= bottomRight.x && position.y <= topLeft.y && position.y >= bottomRight.y) { result.Add(dict[position]); } } return(result.ToArray()); }
public Structure CreateStructure(shared.Vector2Int location, Structure.StructureType type, bool updateImmediately) { Structure str = NewStructure(location, type); if (str != null) { if (!ownedOutposts.ContainsKey(str.Location)) { ownedOutposts.Add(str.Location, str); } GameServer.Instance.Structures.AddStructure(str, updateImmediately); } return(str); }
public Structure[] GetOwnedOps(shared.Vector2Int topLeft, shared.Vector2Int bottomRight, bool onlyChanged) { Structure[] owned = GetOps(topLeft, bottomRight, ownedOutposts); List <Structure> ownedChanged = new List <Structure>(); if (onlyChanged) { for (int i = 0; i < owned.Length; i++) { if (GameServer.Instance.Structures.ChangedThisTick(owned[i].Location)) { ownedChanged.Add(owned[i]); } } } else { ownedChanged.AddRange(owned); } return(ownedChanged.ToArray()); }
public Structure[] GetVisibleOps(shared.Vector2Int topLeft, shared.Vector2Int bottomRight, bool onlychanged) { SetVisibleOps(); Structure[] visible = GetOps(topLeft, bottomRight, visibleOutposts); List <Structure> visibleChanged = new List <Structure>(); if (onlychanged) { for (int i = 0; i < visible.Length; i++) { if (GameServer.Instance.Structures.ChangedLastTick(visible[i].Location)) { visibleChanged.Add(visible[i]); } } } else { visibleChanged.AddRange(visible); } return(visibleChanged.ToArray()); }
public Structure NewStructure(shared.Vector2Int location, Structure.StructureType type) { Structure str = null; switch (type) { case Structure.StructureType.None: str = new None(location, this); break; case Structure.StructureType.City: str = new City(location, this); break; case Structure.StructureType.Outpost: str = new Outpost(location, this); break; case Structure.StructureType.Radar: str = new Radar(location, this, AppSettings.BaseRadarRadius); break; } return(str); }
public bool CanUpgradeStructure(shared.Vector2Int location, Structure.StructureType newType, out shared.MessageTypes reason) { if (!ownedOutposts.ContainsKey(location)) { reason = shared.MessageTypes.No_OP; return(false); } Structure structure = ownedOutposts[location]; if (structure.Type != Structure.StructureType.Outpost) { reason = shared.MessageTypes.Op_Not_Upgradable; return(false); } //check resources bool hasResources = true; if (!hasResources) { reason = shared.MessageTypes.Not_Enough_Resources; return(false); } //check age bool validAge = true; if (!validAge) { reason = shared.MessageTypes.Invalid_Op_Age; return(false); } reason = shared.MessageTypes.Success; return(true); }