Esempio n. 1
0
 public void CreateWarphole(float xpos, float ypos, byte warpIndex)
 {
     _spaceManager.CreateWarphole(xpos, ypos, warpIndex);
 }
Esempio n. 2
0
        /// <summary>
        /// Reads the incoming system from message.
        /// Todo: Kill me please.
        /// </summary>
        /// <param name="msg">The lidgren networking message.</param>
        public SystemEntryData ReadIncomingSystem(SystemEntryData data)
        {
            if (data == null)
            {
                ClientLogger.LogError("Trying to read incoming system but received null data.");
                return(null);
            }

            SystemName = data.AreaName;
            _clientShipManager.CurrentAreaId = data.Id;
            _spaceManager.InitializeSun(data.StarData.Radius, data.StarData.Density, data.StarData.InnerGravityStrength, data.StarData.OuterGravityStrength, data.StarData.Type);
            _spaceManager.CreateBorderAndSunGravity(data.AreaSize);

            _targetingService.DisableTargetSetting();

            #region Planet Data

            foreach (PlanetData_SystemView p in data.Planets)
            {
                _spaceManager.CreatePlanet(p.Distance, p.MaxTrip, p.PlanetType, p.CurrentTrip, p.Scale, p.Id, data.Id, false);
                _physicsManager.World.ProcessChanges();
            }


            #endregion

            #region Moon Data

            foreach (MoonData_SystemView p in data.Moons)
            {
                _spaceManager.CreatePlanet(p.Distance, p.MaxTrip, p.PlanetType, p.CurrentTrip, p.Scale, p.Id, p.IDToOrbit, true);
                _physicsManager.World.ProcessChanges();
            }
            #endregion

            #region Warphole Data

            foreach (WarpholeData w in data.Warpholes)
            {
                _spaceManager.CreateWarphole(w.XPos, w.YPos, w.WarpIndex, w.DestinationAreaID);
            }

            #endregion

            #region Structure Data

            foreach (StructureData s in data.Structures)
            {
                var structure = InstantiateStructure(s);
            }

            #endregion

            #region Port Data
            foreach (PortData_SystemView p in data.Ports)
            {
                _spaceManager.CreatePort(p.Distance, p.MaxTrip, PlanetTypes.Port, p.CurrentTrip, 1, p.Id, data.Id, p.IsMoon);
            }

            #endregion

            _floatyAreaObjectManager.InstantiateFloatyAreaObjects(data.FloatyAreaObjects);
            if (_clientShipManager.PlayerShip != null)
            {
                _clientShipManager.RecreatePlayerShip(_physicsManager.World);
                _clientShipManager.PlayerShip.Position = new Vector2(data.NewPlayerXPos, data.NewPlayerYPos);
            }
            _clientShipManager.areaSecurityLevel = data.SecurityLevel;

            foreach (var s in data.Ships)
            {
                MessageReader.InstantiateShip(s, _physicsManager.World, _clientShipManager, false);
            }

            _targetingService.EnableTargetSetting();

            _areaDataReceived = true;

            return(data);
        }