Пример #1
0
 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));
     }
 }
Пример #2
0
    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());
    }
Пример #3
0
    public void JoinSystem(StarSystemData starSystemData)
    {
        Application.LoadLevel("GameInstance");
        NewGameRequest request = new NewGameRequest(OnGameCreated, starSystemData);

        GameClient.Instance.SendRequest(request);
    }
Пример #4
0
    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();
    }
Пример #5
0
    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);
    }
Пример #6
0
 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);
 }
Пример #7
0
    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);
    }
Пример #8
0
    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);
    }
Пример #9
0
    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);
    }
Пример #10
0
    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);
    }
Пример #11
0
    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);
    }
Пример #12
0
    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);
    }
Пример #13
0
    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);
    }
Пример #14
0
    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);
    }
Пример #15
0
 public NewGameRequest(GameClient.MessageHandler handler, StarSystemData data) : base(handler)
 {
     this.systemId = data.id;
 }
Пример #16
0
    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;
        }
    }
Пример #18
0
 public void DrawStarSystem(StarSystemData data)
 {
     player.GetComponent <StarSystemViewHUD>().GenerateStarSystemHUD(data.GetPlanets());
 }
Пример #19
0
 public void GenerateStarSystem()
 {
     starSystem = WorldGenerator.GenerateStarSystem();
     IOManager.Save(starSystem);
 }
Пример #20
0
    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);
    }
Пример #21
0
    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;
    }
Пример #22
0
 public NewGameRequest(GameClient.MessageHandler handler, StarSystemData data) : base(handler)
 {
     this.systemId = data.id;
 }