public List <NavNode> FindNextNavNode(NavNode start, NavNode dest) { //is dest system same as current system? if not, need to find the next system towards the destination system, //then find the jumpgate to the next system, //finally find the next node towards the jumpgate if (start.SystemID == dest.SystemID) { return(PathFind(start, dest)); } else { StarSystemData nextSystem = (StarSystemData)(PathFind(GameManager.Inst.WorldManager.AllSystems[start.SystemID], GameManager.Inst.WorldManager.AllSystems[dest.SystemID])[0]); StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[start.SystemID]; NavNode destJumpGate = null; foreach (JumpGateData jg in currentSystem.JumpGates) { if (jg.TargetSystem == nextSystem.ID) { destJumpGate = (NavNode)jg; } } Debug.Log("find next nav node"); return(PathFind(start, destJumpGate)); } }
public void Construct(StarSystemController targetStarSystem, SignalDispatcher signalDispatcher, LocalPlayerManager localPlayerManager) { _targetStarSystem = targetStarSystem; _signalDispatcher = signalDispatcher; _localPlayerManager = localPlayerManager; GetComponentsInChildren <Text>()[0].text = _targetStarSystem.StarName; StarSystemData sysData = _targetStarSystem.GetComponent <StarSystemData>(); GetComponentsInChildren <Text>()[1].text = sysData.OrigX + ", " + sysData.OrigY; GetComponentsInChildren <Text>()[2].text = "Harvard Class " + sysData.StarClass.Split('h')[1].ToUpper(); if (sysData.IsDataKnown) { GetComponentsInChildren <Text>()[3].text = "Planets: " + (sysData.PlanetsUnknown ? "More than " : "") + sysData.PlanetsKnown.ToString(); GetComponentsInChildren <Text>()[4].text = "Gravity: " + sysData.Gravity; GetComponentsInChildren <Text>()[5].text = "Atmosphere: " + sysData.Atmosphere; GetComponentsInChildren <Text>()[6].text = "Water: " + sysData.Water + "%"; GetComponentsInChildren <Text>()[7].text = "Climate: " + sysData.Climate; GetComponentsInChildren <Text>()[8].text = "Terrain: " + sysData.Terrain; GetComponentsInChildren <Text>()[9].text = "Development: " + sysData.Development; GetComponentsInChildren <Text>()[10].text = "Flag: " + sysData.HasFlag; } else { for (int x = 3; x <= 10; x++) { GetComponentsInChildren <Text>()[x].text = ""; } } GetComponentInChildren <Button>().onClick.AddListener(() => CaptureSystem()); }
public void JoinSystem(StarSystemData starSystemData) { Application.LoadLevel("GameInstance"); NewGameRequest request = new NewGameRequest(OnGameCreated, starSystemData); GameClient.Instance.SendRequest(request); }
public static void Save(StarSystemData data) { IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("world.bin", FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, data); stream.Close(); }
public void GenerateTraderParty(string factionID) { MacroAIParty party = new MacroAIParty(); party.FactionID = factionID; party.SpawnedShips = new List <ShipBase>(); Faction faction = GameManager.Inst.NPCManager.AllFactions[party.FactionID]; List <string> keyList = new List <string>(GameManager.Inst.WorldManager.AllSystems.Keys); //StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; //StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; StationData currentStation = GameManager.Inst.WorldManager.GetRandomFriendlyDockableStation(party.FactionID, null); StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[currentStation.SystemID]; party.CurrentSystemID = currentSystem.ID; //StationData currentStation = currentSystem.GetStationByID("planet_colombia_landing"); //StationData currentStation = currentSystem.Stations[UnityEngine.Random.Range(0, currentSystem.Stations.Count)]; party.DockedStationID = currentStation.ID; Transform origin = GameObject.Find("Origin").transform; party.Location = new RelLoc(origin.position, currentStation.Location.RealPos, origin); party.PartyNumber = GameManager.Inst.NPCManager.LastUsedPartyNumber + 1; GameManager.Inst.NPCManager.LastUsedPartyNumber = party.PartyNumber; //pick 1 freighter loadout for the leader if (faction.FreightersPool.Count > 0) { party.LeaderLoadout = new Loadout(faction.FreightersPool[UnityEngine.Random.Range(0, faction.FreightersPool.Count)]); } else { party.LeaderLoadout = new Loadout(faction.FightersPool[UnityEngine.Random.Range(0, faction.FightersPool.Count)]); } //pick 1-4 fighter loadouts for followers party.FollowerLoadouts = new List <Loadout>(); int numberOfFollowers = UnityEngine.Random.Range(1, 5); for (int i = 0; i < numberOfFollowers; i++) { party.FollowerLoadouts.Add(new Loadout(faction.FightersPool[UnityEngine.Random.Range(0, faction.FightersPool.Count)])); } MacroAITask task = GameManager.Inst.NPCManager.MacroAI.AssignMacroAITask(MacroAITaskType.None, party); party.IsInTradelane = false; //party.DestinationCoord = GameManager.Inst.WorldManager.AllNavNodes["cambridge_station"].Location; party.MoveSpeed = 10f; party.NextTwoNodes = new List <NavNode>(); party.PrevNode = null; //CreateTempNode(party.Location, "tempstart", GameManager.Inst.WorldManager.AllSystems[party.CurrentSystemID]); GameManager.Inst.NPCManager.MacroAI.LoadPartyTreeset(party); GameManager.Inst.NPCManager.AllParties.Add(party); }
public void OnGuestCreated(JObject jsonObject) { Debug.Log("Guest created: " + jsonObject); StarSystemData data = new StarSystemData(); string starSystemId = GameManager.Instance.starSystemEnvironment.name; data.id = starSystemId; ClientRequest request = new NewGameRequest(OnGameCreated, data); GameClient.Instance.SendRequest(request); }
public static StarSystemData Load() { IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("world.bin", FileMode.Open, FileAccess.Read, FileShare.Read); StarSystemData data = (StarSystemData)formatter.Deserialize(stream); stream.Close(); return(data); }
public MacroAIParty GeneratePlayerParty() { MacroAIParty party = new MacroAIParty(); party.FactionID = "player"; party.SpawnedShips = new List <ShipBase>(); party.SpawnedShips.Add(GameManager.Inst.PlayerControl.PlayerShip); party.IsPlayerParty = true; StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[GameManager.Inst.WorldManager.CurrentSystem.ID]; party.CurrentSystemID = currentSystem.ID; StationData currentStation = null; party.DockedStationID = ""; Transform origin = GameObject.Find("Origin").transform; party.Location = new RelLoc(origin.position, GameManager.Inst.PlayerControl.PlayerShip.transform.position, origin); party.PartyNumber = 0; party.SpawnedShipsLeader = GameManager.Inst.PlayerControl.PlayerShip; party.ShouldEnableAI = true; //generate loadout party.LeaderLoadout = GameManager.Inst.PlayerProgress.ActiveLoadout; party.FollowerLoadouts = new List <Loadout>(); /* * for(int i=0; i<4; i++) * { * Loadout loadout = new Loadout("LightFighter", ShipType.Fighter); * party.FollowerLoadouts.Add(loadout); * loadout.WeaponJoints = new Dictionary<string, string>() * { * { "GimballLeft", "Gun1" }, * { "GimballRight", "Gun1" }, * }; * }*/ MacroAITask task = null; party.IsInTradelane = false; //party.DestinationCoord = GameManager.Inst.WorldManager.AllNavNodes["cambridge_station"].Location; party.MoveSpeed = 10f; party.NextTwoNodes = new List <NavNode>(); party.PrevNode = null; //CreateTempNode(party.Location, "tempstart", GameManager.Inst.WorldManager.AllSystems[party.CurrentSystemID]); LoadPartyTreeset(party); GenerateFormationForParty(party); GameManager.Inst.NPCManager.AllParties.Add(party); return(party); }
public NavNode GetClosestNodeToLocation(Vector3 location, StarSystemData systemData) { //find the nearest navnode float lowDist = Mathf.Infinity; NavNode nearestNode = null; foreach (NavNode childNode in systemData.ChildNodes) { float dist = Vector3.Distance(childNode.Location.RealPos, location); if (dist < lowDist) { lowDist = dist; nearestNode = childNode; } } return(nearestNode); }
public Dictionary <string, StarSystemData> LoadAllSystemsFromXML() { Dictionary <string, StarSystemData> allSystems = new Dictionary <string, StarSystemData>(); DirectoryInfo dirInfo = new DirectoryInfo(Application.dataPath + "/GameData/StarSystem/"); FileInfo [] files = dirInfo.GetFiles("*.xml"); foreach (FileInfo fileInfo in files) { string path = Application.dataPath + "/GameData/StarSystem/" + fileInfo.Name; string [] tokens = fileInfo.Name.Split('.'); if (GameManager.Inst.WorldManager.CurrentSystem != null && tokens[0] == GameManager.Inst.WorldManager.CurrentSystem.ID) { StarSystemData systemData = LoadStarSystemData(path, true); allSystems.Add(systemData.ID, systemData); } else { StarSystemData systemData = LoadStarSystemData(path, false); allSystems.Add(systemData.ID, systemData); } } return(allSystems); }
public StarSystem GenerateSystemScene(string id) { string path = Application.dataPath + "/GameData/StarSystem/" + id + ".xml"; StarSystemData system = LoadStarSystemData(path, true); StarSystem starSystem = new StarSystem(system.ID, system.DisplayName); RenderSettings.skybox = Resources.Load <Material>(system.SkyboxName); RenderSettings.ambientLight = system.AmbientColor; starSystem.AmbientColor = system.AmbientColor; foreach (SunData sunData in system.Suns) { GameObject sunObject = GameObject.Instantiate(Resources.Load(sunData.ID)) as GameObject; sunObject.name = sunData.ID; Sun sun = sunObject.GetComponent <Sun>(); sun.transform.position = sunData.Location.RealPos; sun.transform.localScale = sunData.Scale; sun.Sunlight.color = sunData.Color; sun.Sunlight.intensity = sunData.Intensity; starSystem.Suns.Add(sun); } foreach (PlanetData planetData in system.Planets) { GameObject planetObject = GameObject.Instantiate(Resources.Load(planetData.ID)) as GameObject; planetObject.name = planetData.ID; Planet planet = planetObject.GetComponent <Planet>(); planet.transform.position = planetData.Location.RealPos; planet.transform.localScale = planetData.OriginalScale; planet.OriginalScale = planetData.OriginalScale; starSystem.Planets.Add(planet); } foreach (StationData stationData in system.Stations) { GameObject stationObject = GameObject.Instantiate(Resources.Load(stationData.ID)) as GameObject; stationObject.name = stationData.ID; StationBase station = stationObject.GetComponent <StationBase>(); station.transform.position = stationData.Location.RealPos; station.transform.eulerAngles = stationData.EulerAngles; starSystem.Stations.Add(station); } foreach (JumpGateData jumpGateData in system.JumpGates) { GameObject stationObject = GameObject.Instantiate(Resources.Load("JumpGate")) as GameObject; stationObject.name = jumpGateData.ID; JumpGate gate = stationObject.GetComponent <JumpGate>(); gate.ID = jumpGateData.ID; gate.transform.position = jumpGateData.Location.RealPos; gate.transform.eulerAngles = jumpGateData.EulerAngles; gate.TargetSystem = jumpGateData.TargetSystem; gate.ExitGateID = jumpGateData.ExitGateID; starSystem.Stations.Add(gate); } foreach (TradelaneData tradelaneData in system.Tradelanes) { GameObject tlObject = GameObject.Instantiate(Resources.Load("Tradelane")) as GameObject; tlObject.name = tradelaneData.ID; Tradelane tl = tlObject.transform.Find("TradelaneBody").GetComponent <Tradelane>(); tlObject.transform.position = tradelaneData.Location.RealPos; tlObject.transform.eulerAngles = tradelaneData.EulerAngles; tl.ID = tradelaneData.ID; tl.DisplayName = tradelaneData.DisplayName; tl.IsTerminalAorB = tradelaneData.IsTerminalAorB; tl.NeighborAID = tradelaneData.NeighborAID; tl.NeighborBID = tradelaneData.NeighborBID; tl.NeighborToA = null; tl.NeighborToB = null; starSystem.Tradelanes.Add(tl); } //now assign neighbors to tradelanes List <Tradelane> tradelanes = starSystem.Tradelanes; foreach (Tradelane tl in tradelanes) { foreach (Tradelane neighbor in tradelanes) { if (tl.NeighborAID == neighbor.ID) { tl.NeighborToA = neighbor; } if (tl.NeighborBID == neighbor.ID) { tl.NeighborToB = neighbor; } } } return(starSystem); }
public void GenerateTestParty(string factionID) { MacroAIParty party = new MacroAIParty(); party.FactionID = factionID; party.SpawnedShips = new List <ShipBase>(); List <string> keyList = new List <string>(GameManager.Inst.WorldManager.AllSystems.Keys); //StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; party.CurrentSystemID = currentSystem.ID; //StationData currentStation = currentSystem.GetStationByID("planet_colombia_landing"); StationData currentStation = currentSystem.Stations[UnityEngine.Random.Range(0, currentSystem.Stations.Count)]; party.DockedStationID = "planet_colombia_landing"; Transform origin = GameObject.Find("Origin").transform; party.Location = new RelLoc(origin.position, currentStation.Location.RealPos, origin); party.PartyNumber = GameManager.Inst.NPCManager.LastUsedPartyNumber + 1; GameManager.Inst.NPCManager.LastUsedPartyNumber = party.PartyNumber; Item item1 = new Item(GameManager.Inst.ItemManager.GetItemStats("wc_VikoWeaponCapacitorMK1")); InvItemData itemData1 = new InvItemData(); itemData1.Item = item1; itemData1.Quantity = 1; Item item2 = new Item(GameManager.Inst.ItemManager.GetItemStats("scn_RadianTekShortRangeScanner")); InvItemData itemData2 = new InvItemData(); itemData2.Item = item2; itemData2.Quantity = 1; Item item3 = new Item(GameManager.Inst.ItemManager.GetItemStats("thr_StrelskyThrusterMK1")); InvItemData itemData3 = new InvItemData(); itemData3.Item = item3; itemData3.Quantity = 1; Item item4 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_NCPTransporterShieldMK1")); InvItemData itemData4 = new InvItemData(); itemData4.Item = item4; itemData4.Quantity = 1; Item item5 = new Item(GameManager.Inst.ItemManager.GetItemStats("dfs_CMDispenser")); InvItemData itemData5 = new InvItemData(); itemData5.Item = item5; itemData5.Quantity = 1; itemData5.RelatedItemID = "ammo_LongDurationCM"; Item item10 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_SDCStomperAutocannon")); InvItemData itemData10 = new InvItemData(); itemData10.Item = item10; itemData10.Quantity = 1; itemData10.RelatedItemID = "ammo_20mmTitaniumSlugs"; Item item11 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_StrelskyScreamerMissileLauncher")); InvItemData itemData11 = new InvItemData(); itemData11.Item = item11; itemData11.Quantity = 1; itemData11.RelatedItemID = "ammo_StrelskySeekerMissile"; Item item12 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadIonFluxTurretMK1")); InvItemData itemData12 = new InvItemData(); itemData12.Item = item12; itemData12.Quantity = 1; Item item13 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_CGGAnnihilatorTurretMK2")); InvItemData itemData13 = new InvItemData(); itemData13.Item = item13; itemData13.Quantity = 1; Item item14 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_KeslerFighterShieldMK1")); InvItemData itemData14 = new InvItemData(); itemData14.Item = item14; itemData14.Quantity = 1; Item item15 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadStingerPulseCannon")); InvItemData itemData15 = new InvItemData(); itemData15.Item = item15; itemData15.Quantity = 1; Item item20 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_LongDurationCM")); InvItemData itemData20 = new InvItemData(); itemData20.Item = item20; itemData20.Quantity = UnityEngine.Random.Range(1, 3); Item item21 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_20mmTitaniumSlugs")); InvItemData itemData21 = new InvItemData(); itemData21.Item = item21; itemData21.Quantity = 500; Item item101 = new Item(GameManager.Inst.ItemManager.GetItemStats("wc_VikoWeaponCapacitorMK1")); InvItemData itemData101 = new InvItemData(); itemData101.Item = item101; itemData101.Quantity = 1; Item item102 = new Item(GameManager.Inst.ItemManager.GetItemStats("scn_RadianTekShortRangeScanner")); InvItemData itemData102 = new InvItemData(); itemData102.Item = item102; itemData102.Quantity = 1; Item item103 = new Item(GameManager.Inst.ItemManager.GetItemStats("thr_StrelskyThrusterMK1")); InvItemData itemData103 = new InvItemData(); itemData103.Item = item103; itemData103.Quantity = 1; Item item104 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_NCPTransporterShieldMK1")); InvItemData itemData104 = new InvItemData(); itemData104.Item = item104; itemData104.Quantity = 1; Item item105 = new Item(GameManager.Inst.ItemManager.GetItemStats("dfs_CMDispenser")); InvItemData itemData105 = new InvItemData(); itemData105.Item = item105; itemData105.Quantity = 1; itemData105.RelatedItemID = "ammo_LongDurationCM"; Item item110 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_SDCStomperAutocannon")); InvItemData itemData110 = new InvItemData(); itemData110.Item = item110; itemData110.Quantity = 1; itemData110.RelatedItemID = "ammo_20mmTitaniumSlugs"; Item item111 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_StrelskyScreamerMissileLauncher")); InvItemData itemData111 = new InvItemData(); itemData111.Item = item111; itemData111.Quantity = 1; itemData111.RelatedItemID = "ammo_StrelskySeekerMissile"; Item item112 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadIonFluxTurretMK1")); InvItemData itemData112 = new InvItemData(); itemData112.Item = item112; itemData112.Quantity = 1; Item item113 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_CGGAnnihilatorTurretMK2")); InvItemData itemData113 = new InvItemData(); itemData113.Item = item113; itemData113.Quantity = 1; Item item114 = new Item(GameManager.Inst.ItemManager.GetItemStats("shd_KeslerFighterShieldMK1")); InvItemData itemData114 = new InvItemData(); itemData114.Item = item114; itemData114.Quantity = 1; Item item115 = new Item(GameManager.Inst.ItemManager.GetItemStats("wpn_AlFasadStingerPulseCannon")); InvItemData itemData115 = new InvItemData(); itemData115.Item = item115; itemData115.Quantity = 1; Item item120 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_LongDurationCM")); InvItemData itemData120 = new InvItemData(); itemData120.Item = item120; itemData120.Quantity = UnityEngine.Random.Range(1, 3); Item item121 = new Item(GameManager.Inst.ItemManager.GetItemStats("ammo_20mmTitaniumSlugs")); InvItemData itemData121 = new InvItemData(); itemData121.Item = item121; itemData121.Quantity = 500; //generate loadout party.LeaderLoadout = new Loadout("Trimaran", ShipType.Transport); party.LeaderLoadout.HullAmount = GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).Hull; party.LeaderLoadout.FuelAmount = GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).MaxFuel; party.LeaderLoadout.LifeSupportAmount = GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).LifeSupport; party.LeaderLoadout.Defensives = new List <InvItemData>(); party.LeaderLoadout.ShipMods = new InvItemData[GameManager.Inst.ItemManager.GetShipStats(party.LeaderLoadout.ShipID).ModSlots]; party.LeaderLoadout.WeaponCapacitor = itemData1; party.LeaderLoadout.Shield = itemData4; party.LeaderLoadout.Defensives.Add(itemData5); party.LeaderLoadout.Thruster = itemData3; party.LeaderLoadout.Scanner = itemData2; party.LeaderLoadout.AmmoBayItems.Add(itemData20); party.LeaderLoadout.AmmoBayItems.Add(itemData21); party.LeaderLoadout.WeaponJoints = new Dictionary <string, InvItemData>() { { "GimballLeft", itemData10 }, { "GimballRight", itemData10 }, { "TurretLeft", itemData12 }, { "TurretRight", itemData12 }, { "TurretTop", itemData13 }, }; party.FollowerLoadouts = new List <Loadout>(); for (int i = 0; i < UnityEngine.Random.Range(1, 5); i++) { Loadout loadout = new Loadout("Spitfire", ShipType.Fighter); party.FollowerLoadouts.Add(loadout); loadout.WeaponJoints = new Dictionary <string, InvItemData>() { { "GimballLeft", itemData115 }, { "GimballRight", itemData115 }, { "GimballFront", itemData111 }, }; loadout.HullAmount = GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).Hull; loadout.FuelAmount = GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).MaxFuel; loadout.LifeSupportAmount = GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).LifeSupport; loadout.Defensives = new List <InvItemData>(); loadout.WeaponCapacitor = itemData1; if (UnityEngine.Random.value > 0.6f) { loadout.Defensives.Add(itemData5); } loadout.Shield = itemData114; loadout.Thruster = itemData103; loadout.Scanner = itemData102; loadout.AmmoBayItems.Add(itemData120); loadout.AmmoBayItems.Add(itemData121); loadout.ShipMods = new InvItemData[GameManager.Inst.ItemManager.GetShipStats(loadout.ShipID).ModSlots]; } MacroAITask task = AssignMacroAITask(MacroAITaskType.None, party); party.IsInTradelane = false; //party.DestinationCoord = GameManager.Inst.WorldManager.AllNavNodes["cambridge_station"].Location; party.MoveSpeed = 10f; party.NextTwoNodes = new List <NavNode>(); party.PrevNode = null; //CreateTempNode(party.Location, "tempstart", GameManager.Inst.WorldManager.AllSystems[party.CurrentSystemID]); LoadPartyTreeset(party); GameManager.Inst.NPCManager.AllParties.Add(party); }
public MacroAITask AssignMacroAITask(MacroAITaskType prevTaskType, MacroAIParty party) { MacroAITask task = new MacroAITask(); if (prevTaskType == MacroAITaskType.None) { if (UnityEngine.Random.value > 0.0f) { prevTaskType = MacroAITaskType.Stay; } else { prevTaskType = MacroAITaskType.Travel; } } party.PrevNode = null; if (party.NextTwoNodes != null) { party.NextTwoNodes.Clear(); } if (prevTaskType == MacroAITaskType.Travel) { if (!string.IsNullOrEmpty(party.DockedStationID) && UnityEngine.Random.value < 0.75f) { task.TaskType = MacroAITaskType.Trade; task.StayDuration = UnityEngine.Random.Range(10f, 30f); party.WaitTimer = 0; party.RunningNodeHist.UniquePush("Trading for " + task.StayDuration); Debug.LogError("Party " + party.PartyNumber + " Task has been assigned to party: Trade, current station" + party.DockedStationID); TradeCommodity(party, GameManager.Inst.WorldManager.DockableStationDatas[party.DockedStationID]); } else { task.TaskType = MacroAITaskType.Stay; task.StayDuration = UnityEngine.Random.Range(15f, 35f); party.WaitTimer = 0; party.RunningNodeHist.UniquePush("Stay for " + task.StayDuration); Debug.LogError("Party " + party.PartyNumber + " Task has been assigned to party: " + task.TaskType + " for " + task.StayDuration); } } else if (prevTaskType == MacroAITaskType.Stay || prevTaskType == MacroAITaskType.Trade) { task.TaskType = MacroAITaskType.Travel; List <string> keyList = new List <string>(GameManager.Inst.WorldManager.AllSystems.Keys); if (Time.time < 0) { Debug.LogError("new task for initial test"); StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; //StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; //StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems["new_england_system"]; task.TravelDestSystemID = destSystem.ID; task.TravelDestNodeID = destSystem.Stations[UnityEngine.Random.Range(0, destSystem.Stations.Count)].ID; //task.TravelDestNodeID = "annandale_station";//"planet_colombia_landing";//"bethesda_station"; task.IsDestAStation = true; //task.TravelDestCoord = new RelLoc(destSystem.OriginPosition, new Vector3(-28.3f, 5f, 418.8f), null); } else { Debug.LogError("new task to random station in random system"); StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems[keyList[UnityEngine.Random.Range(0, keyList.Count)]]; //StarSystemData destSystem = GameManager.Inst.WorldManager.AllSystems["washington_system"]; task.TravelDestSystemID = destSystem.ID; task.TravelDestNodeID = destSystem.Stations[UnityEngine.Random.Range(0, destSystem.Stations.Count)].ID; //task.TravelDestNodeID = "planet_colombia_landing"; task.IsDestAStation = true; } party.WaitTimer = 0; Debug.LogError("Party " + party.PartyNumber + " Task has been assigned to party: " + task.TaskType + " to " + (task.IsDestAStation ? task.TravelDestNodeID : task.TravelDestCoord.ToString())); } party.CurrentTask = task; party.HasReachedDestNode = false; if (party.CurrentTask.TaskType == MacroAITaskType.Travel) { if (party.CurrentTask.IsDestAStation) { party.DestNode = GameManager.Inst.WorldManager.AllNavNodes[party.CurrentTask.TravelDestNodeID]; } else { //party.DestNode = CreateTempNode(party.CurrentTask.TravelDestCoord, "tempdest", GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); party.DestNode = GetClosestNodeToLocation(party.CurrentTask.TravelDestCoord.RealPos, GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); } } return(task); }
public NewGameRequest(GameClient.MessageHandler handler, StarSystemData data) : base(handler) { this.systemId = data.id; }
public List <NavNode> GetAllNavNodesInSystem(string systemID) { StarSystemData system = _allSystems[systemID]; return(system.ChildNodes); }
private void createRegion(List <Vector2> regionPoints, StarSystem target, bool buildOnServer) { GameObject createdSystem = Container.InstantiatePrefab(_settings.StarSystemPrefab); createdSystem.transform.position = new Vector3(target.X, 0, target.Y); createdSystem.name = "Star_" + target.Name; // Might be building on the client in offline mode if (buildOnServer) { NetworkServer.Spawn(createdSystem.gameObject); } createdSystem.GetComponentsInChildren <Text>()[0].text = target.Name; TerritoryController tc = createdSystem.GetComponent <TerritoryController>(); foreach (Vector2 point in regionPoints) { tc.Points.Add(point); } StarSystemController ssCon = createdSystem.gameObject.GetComponent <StarSystemController>(); ssCon.StarName = target.Name; // Set the starting faction FactionController factCtrl = createdSystem.gameObject.GetComponent <FactionController>(); switch (target.Faction) { case "s": factCtrl.CurrentFaction = Faction.Steiner; break; case "m": factCtrl.CurrentFaction = Faction.Marik; break; case "l": factCtrl.CurrentFaction = Faction.Liao; break; case "d": factCtrl.CurrentFaction = Faction.Davion; break; case "k": factCtrl.CurrentFaction = Faction.Kurita; break; case "c": factCtrl.CurrentFaction = Faction.Comstar; break; default: factCtrl.CurrentFaction = Faction.None; break; } StarSystemData sysData = createdSystem.gameObject.GetComponent <StarSystemData>(); sysData.OrigX = target.OrigX; sysData.OrigY = target.OrigY; sysData.StarClass = target.StarClass; if (target.DataAvailable) { sysData.IsDataKnown = true; sysData.PlanetsKnown = target.PlanetsKnown; sysData.PlanetsUnknown = target.PlanetsUnknown; sysData.Gravity = target.Gravity; sysData.Atmosphere = target.Atmosphere; sysData.Water = target.Water; sysData.Climate = target.Climate; sysData.Terrain = target.Terrain; sysData.Development = target.Development; sysData.HasFlag = target.HasFlag; } }
public void DrawStarSystem(StarSystemData data) { player.GetComponent <StarSystemViewHUD>().GenerateStarSystemHUD(data.GetPlanets()); }
public void GenerateStarSystem() { starSystem = WorldGenerator.GenerateStarSystem(); IOManager.Save(starSystem); }
public StarSystemData LoadStarSystemData(string path, bool isScene) { // XmlDocument doc = new XmlDocument(); string file = File.ReadAllText(path); try { doc.LoadXml(file); } catch (XmlException) { return(null); } XmlNode systemNode = doc.GetElementsByTagName("system")[0]; XmlAttributeCollection systemAttrs = systemNode.Attributes; string systemID = systemAttrs["id"].Value.ToString(); string systemName = systemAttrs["displayname"].Value.ToString(); Transform origin = null; if (isScene) { origin = GameObject.Find("Origin").transform; } StarSystemData systemData = new StarSystemData(systemID, systemName); systemData.SystemID = systemID; XmlNodeList systemContent = systemNode.ChildNodes; foreach (XmlNode node in systemContent) { if (node.Name == "systemlocation") { Vector3 location = location = DBManager.ParseXmlVector3(node.FirstChild); systemData.Location = new RelLoc(Vector3.zero, location, null); } if (node.Name == "ambience") { XmlNodeList content = node.ChildNodes; foreach (XmlNode subnode in content) { if (subnode.Name == "skybox") { string skyboxName = node.InnerText; systemData.SkyboxName = skyboxName; } if (subnode.Name == "ambientcolor") { XmlNode colorNode = subnode.FirstChild; systemData.AmbientColor = DBManager.ParseXmlColorNode(colorNode); } } } if (node.Name == "origin") { Vector3 originLoc = DBManager.ParseXmlVector3(node.FirstChild); systemData.OriginPosition = originLoc; if (isScene) { origin.position = originLoc; } } if (node.Name == "sun") { string sunID = ""; string name = ""; float intensity = 0; Vector3 scale = Vector3.zero; Vector3 location = Vector3.zero; Color color = Color.black; SunData sunData = new SunData(); XmlNodeList content = node.ChildNodes; foreach (XmlNode subnode in content) { if (subnode.Name == "id") { sunID = subnode.InnerText; } if (subnode.Name == "displayname") { name = subnode.InnerText; } if (subnode.Name == "location") { location = systemData.OriginPosition + DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "scale") { scale = DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "sunlight") { XmlAttributeCollection sunlightAttr = subnode.Attributes; intensity = Convert.ToSingle(sunlightAttr["intensity"].Value); XmlNode colorNode = subnode.FirstChild; color = DBManager.ParseXmlColorNode(colorNode); } } sunData.ID = sunID; sunData.DisplayName = name; sunData.Location = new RelLoc(systemData.OriginPosition, location, origin); sunData.Scale = scale; sunData.Color = color; sunData.Intensity = intensity; systemData.Suns.Add(sunData); } if (node.Name == "planet") { string planetID = ""; string name = ""; Vector3 scale = Vector3.zero; Vector3 location = Vector3.zero; PlanetData planetData = new PlanetData(); XmlNodeList content = node.ChildNodes; foreach (XmlNode subnode in content) { if (subnode.Name == "id") { planetID = subnode.InnerText; } if (subnode.Name == "displayname") { name = subnode.InnerText; } if (subnode.Name == "location") { location = systemData.OriginPosition + DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "scale") { scale = DBManager.ParseXmlVector3(subnode.FirstChild); } } planetData.ID = planetID; planetData.DisplayName = name; planetData.Location = new RelLoc(systemData.OriginPosition, location, origin); planetData.OriginalScale = scale; systemData.Planets.Add(planetData); } if (node.Name == "station") { string stationID = ""; string name = ""; string stationType = ""; Vector3 location = Vector3.zero; Vector3 eulerAngles = Vector3.zero; XmlNodeList content = node.ChildNodes; string targetSystem = ""; string exitGateID = ""; List <string> neighborIDs = new List <string>(); Vector3 spawnDisposition = Vector3.zero; foreach (XmlNode subnode in content) { if (subnode.Name == "id") { stationID = subnode.InnerText; } if (subnode.Name == "displayname") { name = subnode.InnerText; } if (subnode.Name == "stationtype") { stationType = subnode.InnerText; } if (subnode.Name == "location") { location = systemData.OriginPosition + DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "eulerangles") { eulerAngles = DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "targetsystem") { targetSystem = subnode.InnerText; } if (subnode.Name == "exitgateid") { exitGateID = subnode.InnerText; } if (subnode.Name == "navneighbor") { neighborIDs.Add(subnode.InnerText); } if (subnode.Name == "spawndisposition") { spawnDisposition = DBManager.ParseXmlVector3(subnode.FirstChild); } } if (stationType == "JumpGate") { JumpGateData jumpGateData = new JumpGateData(); jumpGateData.ID = stationID; jumpGateData.DisplayName = name; jumpGateData.TargetSystem = targetSystem; jumpGateData.ExitGateID = exitGateID; jumpGateData.Location = new RelLoc(systemData.OriginPosition, location, origin); jumpGateData.EulerAngles = eulerAngles; jumpGateData.NeighborIDs = neighborIDs; jumpGateData.NavNodeType = NavNodeType.JumpGate; jumpGateData.SystemID = systemID; jumpGateData.SpawnDisposition = spawnDisposition; systemData.JumpGates.Add(jumpGateData); systemData.ChildNodes.Add(jumpGateData); systemData.NeighborIDs.Add(targetSystem); } else if (stationType == "Station") { StationData stationData = new StationData(); stationData.DisplayName = name; stationData.ID = stationID; stationData.Location = new RelLoc(systemData.OriginPosition, location, origin); stationData.EulerAngles = eulerAngles; stationData.NeighborIDs = neighborIDs; stationData.NavNodeType = NavNodeType.Station; stationData.SystemID = systemID; systemData.Stations.Add(stationData); systemData.ChildNodes.Add(stationData); } } if (node.Name == "tradelane") { string stationID = ""; string displayName = ""; Vector3 location = Vector3.zero; Vector3 eulerAngles = Vector3.zero; XmlNodeList content = node.ChildNodes; string terminal = ""; string neighborA = ""; string neighborB = ""; List <string> neighborIDs = new List <string>(); foreach (XmlNode subnode in content) { if (subnode.Name == "id") { stationID = subnode.InnerText; } if (subnode.Name == "displayname") { displayName = subnode.InnerText; } if (subnode.Name == "location") { location = systemData.OriginPosition + DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "eulerangles") { eulerAngles = DBManager.ParseXmlVector3(subnode.FirstChild); } if (subnode.Name == "terminal") { terminal = subnode.InnerText; } if (subnode.Name == "neighbor_a") { neighborA = subnode.InnerText; if (neighborA != "NULL") { neighborIDs.Add(neighborA); } } if (subnode.Name == "neighbor_b") { neighborB = subnode.InnerText; if (neighborB != "NULL") { neighborIDs.Add(neighborB); } } if (subnode.Name == "navneighbor") { neighborIDs.Add(subnode.InnerText); } } TradelaneData tradelaneData = new TradelaneData(); tradelaneData.ID = stationID; tradelaneData.DisplayName = displayName; tradelaneData.IsTerminalAorB = Convert.ToInt32(terminal); tradelaneData.NeighborAID = neighborA; tradelaneData.NeighborBID = neighborB; tradelaneData.Location = new RelLoc(systemData.OriginPosition, location, origin); tradelaneData.EulerAngles = eulerAngles; tradelaneData.NeighborIDs = neighborIDs; tradelaneData.NavNodeType = NavNodeType.Tradelane; tradelaneData.SystemID = systemID; systemData.Tradelanes.Add(tradelaneData); systemData.ChildNodes.Add(tradelaneData); } } return(systemData); }
public void LoadWorldData() { GameManager.Inst.NPCManager.LastUsedPartyNumber = CurrentSave.LastUsedPartyNumber; //loading all NPC and player parties Debug.Log("Loading AI Parties, there are " + CurrentSave.AllNonPlayerParties.Count); foreach (MacroAIPartySaveData partyData in CurrentSave.AllNonPlayerParties) { Debug.Log("Loading Party " + partyData.PartyNumber); MacroAIParty party = new MacroAIParty(); party.FactionID = partyData.FactionID; party.SpawnedShips = new List <ShipBase>(); //List<string> keyList = new List<string>(GameManager.Inst.WorldManager.AllSystems.Keys); StarSystemData currentSystem = GameManager.Inst.WorldManager.AllSystems[partyData.CurrentSystemID]; party.CurrentSystemID = currentSystem.ID; party.DockedStationID = partyData.DockedStationID; if (GameManager.Inst.WorldManager.CurrentSystem != null && currentSystem.ID == GameManager.Inst.WorldManager.CurrentSystem.ID) { party.Location = new RelLoc(currentSystem.OriginPosition, partyData.Location.ConvertToVector3(), GameObject.Find("Origin").transform, 1); } else { party.Location = new RelLoc(currentSystem.OriginPosition, partyData.Location.ConvertToVector3(), null, 1); } party.PartyNumber = partyData.PartyNumber; //generate loadout party.LeaderLoadout = LoadLoadoutFromSave(partyData.LeaderLoadout); party.FollowerLoadouts = new List <Loadout>(); foreach (LoadoutSaveData loadoutData in partyData.FollowerLoadouts) { Loadout loadout = LoadLoadoutFromSave(loadoutData); party.FollowerLoadouts.Add(loadout); } if (partyData.CurrentTask != null) { MacroAITask task = new MacroAITask(); task.IsDestAStation = partyData.CurrentTask.IsDestAStation; task.StayDuration = partyData.CurrentTask.StayDuration; task.TaskType = partyData.CurrentTask.TaskType; if (partyData.CurrentTask.TravelDestCoord != null) { if (currentSystem.ID == GameManager.Inst.WorldManager.CurrentSystem.ID) { task.TravelDestCoord = new RelLoc(currentSystem.OriginPosition, partyData.CurrentTask.TravelDestCoord.ConvertToVector3(), GameObject.Find("Origin").transform, 1); } else { task.TravelDestCoord = new RelLoc(currentSystem.OriginPosition, partyData.CurrentTask.TravelDestCoord.ConvertToVector3(), null, 1); } } task.TravelDestNodeID = partyData.CurrentTask.TravelDestNodeID; task.TravelDestSystemID = partyData.CurrentTask.TravelDestSystemID; Debug.Log("Loading task type " + task.TaskType.ToString() + " " + task.TravelDestNodeID); party.CurrentTask = task; if (party.CurrentTask.TaskType == MacroAITaskType.Travel) { if (party.CurrentTask.IsDestAStation) { party.DestNode = GameManager.Inst.WorldManager.AllNavNodes[party.CurrentTask.TravelDestNodeID]; } else { //party.DestNode = CreateTempNode(party.CurrentTask.TravelDestCoord, "tempdest", GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); party.DestNode = GameManager.Inst.NPCManager.MacroAI.GetClosestNodeToLocation(party.CurrentTask.TravelDestCoord.RealPos, GameManager.Inst.WorldManager.AllSystems[party.CurrentTask.TravelDestSystemID]); } } } party.IsInTradelane = partyData.IsInTradelane; party.MoveSpeed = partyData.MoveSpeed; party.NextTwoNodes = new List <NavNode>(); foreach (string nodeID in partyData.NextTwoNodesIDs) { Debug.Log("Next node " + nodeID); party.NextTwoNodes.Add(GameManager.Inst.WorldManager.AllNavNodes[nodeID]); } if (partyData.PrevNodeID != "") { party.PrevNode = GameManager.Inst.WorldManager.AllNavNodes[partyData.PrevNodeID]; } party.TreeSet = new Dictionary <string, BehaviorTree>(); foreach (string treeSetName in partyData.TreeSetNames) { party.TreeSet.Add(treeSetName, GameManager.Inst.DBManager.XMLParserBT.LoadBehaviorTree(treeSetName, null, party)); } GameManager.Inst.NPCManager.AllParties.Add(party); } //load station data GameManager.Inst.WorldManager.DockableStationDatas = new Dictionary <string, DockableStationData>(); foreach (DockableStationSaveData saveData in CurrentSave.DockableStationDatas) { DockableStationData stationData = new DockableStationData(); stationData.DemandResources = saveData.DemandResources; stationData.DockedParties = new List <MacroAIParty>(); foreach (int partyNumber in saveData.DockedPartiesNumbers) { stationData.DockedParties.Add(GameManager.Inst.NPCManager.GetPartyByNumber(partyNumber)); } stationData.FuelPrice = saveData.FuelPrice; stationData.LifeSupportPrice = saveData.LifeSupportPrice; stationData.ShipsForSale = saveData.ShipsForSale; stationData.StationID = saveData.StationID; stationData.FactionID = saveData.FactionID; stationData.TraderSaleItems = saveData.TraderSaleItems; stationData.UndesiredItemPriceMultiplier = saveData.UndesiredItemPriceMultiplier; stationData.DemandNormalizeSpeed = saveData.DemandNormalizeSpeed; if (saveData.HomeStationSaveData != null) { stationData.HomeStationData = new HomeStationData(); stationData.HomeStationData.HangarSize = saveData.HomeStationSaveData.HangarSize; stationData.HomeStationData.VaultSize = saveData.HomeStationSaveData.VaultSize; stationData.HomeStationData.ItemsInVault = saveData.HomeStationSaveData.ItemsInVault; stationData.HomeStationData.ShipsInHangar = new List <Loadout>(); foreach (LoadoutSaveData loadoutSaveData in saveData.HomeStationSaveData.ShipsInHangar) { stationData.HomeStationData.ShipsInHangar.Add(LoadLoadoutFromSave(loadoutSaveData)); } } GameManager.Inst.WorldManager.DockableStationDatas.Add(stationData.StationID, stationData); } //load time GameManager.Inst.WorldManager.CurrentTime = CurrentSave.CurrentTime; }