public static JObject Serialize(AmbientObject obj) { var retObject = new JObject(); SerializationUtils.SerializeType(type, ref retObject); Serialize(obj, ref retObject); return(retObject); }
public static AmbientObject Deserialize(JObject jObject) { AmbientObject ambientObject = ReflectionUtils.CallPrivateConstructor <AmbientObject>(); Deserialize(ref jObject, ambientObject); ambientObject.Init(); return(ambientObject); }
public void RemoveAmbientObject(AmbientObject ambientObject) { if (AmbientObjects != null) { AmbientObjects.Remove(ambientObject); if (AmbientObjects.Count == 0) { AmbientObjects = null; } } }
public void AddAmbientObject(AmbientObject ambientObject) { if (AmbientObjects == null) { AmbientObjects = new List <AmbientObject>(); } if (AmbientObjects.Contains(ambientObject) == false) { AmbientObjects.Add(ambientObject); } }
public static Animation CreateAnimation(AmbientObject ambientObject) { var ambientObjectType = lookup[ambientObject.AmbientObjectType]; var texture = SimulationGame.ContentManager.Load <Texture2D>(ambientObjectType.SpritePath); var frames = new Frame[ambientObjectType.SpritePositions.Length]; for (var i = 0; i < ambientObjectType.SpritePositions.Length; i++) { frames[i] = new Frame(texture, new Rectangle(ambientObjectType.SpritePositions[i], ambientObjectType.SpriteBounds), ambientObjectType.SpriteOrigin.ToPoint(), ambientObjectType.FrameDuration, SpriteEffects.None); } return(new Animation(frames)); }
public static AmbientObject Create(WorldPosition worldPosition, AmbientObjectType ambientObjectType) { var ambientObject = new AmbientObject(worldPosition) { AmbientObjectType = ambientObjectType.ID, CustomProperties = ambientObjectType.CustomProperties != null ? (JObject)ambientObjectType.CustomProperties.DeepClone() : null, YPositionDepthOffset = ambientObjectType.YPositionDepthOffset, LiveSpan = ambientObjectType.LiveSpan, }; ambientObject.Init(); return(ambientObject); }
public static void Draw(SpriteBatch spriteBatch, GameTime gameTime, AmbientObject ambientObject) { var ambientObjectType = AmbientObjectType.lookup[ambientObject.AmbientObjectType]; if (ambientObjectType != null) { var depth = GeometryUtils.GetLayerDepthFromReservedLayer(ReservedDepthLayers.BlockDecoration); if (ambientObjectType.InForeground == true) { depth = 1.0f; } else if (ambientObjectType.HasDepth == true) { depth = GeometryUtils.GetLayerDepthFromPosition(ambientObject.Position.X, ambientObject.Position.Y + ambientObject.YPositionDepthOffset); } if (ambientObjectType.SpritePositions.Length > 1) { if (ambientObject.ObjectAnimation == null) { ambientObject.ObjectAnimation = AmbientObjectType.CreateAnimation(ambientObject); ambientObject.ObjectAnimation.Start(Repeat.Mode.Loop); } ambientObject.ObjectAnimation.Update(gameTime); spriteBatch.Draw(ambientObject.ObjectAnimation, ambientObject.Position.ToVector(), color: Color.White, layerDepth: depth); } else { spriteBatch.Draw(SimulationGame.ContentManager.Load <Texture2D>(ambientObjectType.SpritePath), ambientObject.Position.ToVector(), new Rectangle(ambientObjectType.SpritePositions[0], ambientObjectType.SpriteBounds), Color.White, 0.0f, ambientObjectType.SpriteOrigin, 1.0f, SpriteEffects.None, depth); } if (ambientObjectType.Lightning != null) { LightningRenderer.AddLightning(ambientObject.Position.ToVector(), ambientObjectType.Lightning); } } }
protected static void Serialize(AmbientObject ambientObject, ref JObject jObject) { GameObjectSerializer.Serialize(ambientObject, ref jObject); SerializationUtils.AddToObject(jObject, ambientObject, type, serializeableProperties); }
protected static void Deserialize(ref JObject jObject, AmbientObject ambientObject) { GameObjectSerializer.Deserialize(ref jObject, ambientObject); SerializationUtils.SetFromObject(jObject, ambientObject, type, serializeableProperties); }
public World(int InitFactionNumber, Game game, bool ambientOn, string mapName) { this.game = game; commonCamera = new Camera(Vector2.Zero, 1.5f); player1Camera = new Camera(Vector2.Zero, 1.5f); player2Camera = new Camera(Vector2.Zero, 1.5f); cameras.Add(commonCamera); cameras.Add(player1Camera); cameras.Add(player2Camera); currentCamera = commonCamera; //by 刘欣 李翔 collector = new InfoCollector(ships, resources); if (InitFactionNumber == 1) { InitShip(2, Color.Blue, "Player", FactionControllerType.Player); } if (mapName == null) { mapName = GameOperators.Random.Next(1, 7).ToString(); } currentMap = mapName; LoadMap(currentMap); //添加资源点 //resources.Add(new ResourceArea(1, 196, new Vector2(-384, -384), null, this)); //islands.Add(new Island(this, "island1", 0.3f, new Vector2(-384, -384), 32f)); //resources.Add(new ResourceArea(2, 196, new Vector2(-384, 384), null, this)); //islands.Add(new Island(this, "island2", 0.3f, new Vector2(-384, 384), 32f)); //resources.Add(new ResourceArea(3, 196, new Vector2(0, 0), null, this)); //islands.Add(new Island(this, "island0", 0.3f, new Vector2(0, 0), 32f)); //resources.Add(new ResourceArea(4, 196, new Vector2(384, -384), null, this)); //islands.Add(new Island(this, "island3", 0.3f, new Vector2(384, -384), 32f)); //resources.Add(new ResourceArea(5, 196, new Vector2(384, 384), null, this)); //islands.Add(new Island(this, "island4", 0.3f, new Vector2(384, 384), 32f)); sea = new Sea(); waterWave = new WaterWave(); for (int i = 0; i < 20; i++)//添加云 { // upperAmbients.Add(AmbientObject.CreateCloud(this,new Vector2(GameOperators.Random.Next(-768,768),GameOperators.Random.Next(-1024,1024)),new Vector2 (10f,2f))); upperAmbients.Add(AmbientObject.CreateCloud(this, new Vector2(GameOperators.Random.Next((int)(-MapSize.X / 2 * 1.4f), (int)(MapSize.X / 2 * 1.4f)), GameOperators.Random.Next((int)(-MapSize.Y / 2 * 1.4f), (int)(MapSize.Y / 2 * 1.4f))), new Vector2(10f, 2f))); } lowerAmbients.Add(new AmbientObject(this, new Vector2(0, 0), "OceanBackground", 2, Color.White, 0)); lowerAmbients.Add(new AmbientObject(this, new Vector2(0, 0), "OceanBackgroundWord", 0.75f, Color.White, 0)); for (int i = 0; i < 20; i++)//添加鱼 { // upperAmbients.Add(AmbientObject.CreateCloud(this,new Vector2(GameOperators.Random.Next(-768,768),GameOperators.Random.Next(-1024,1024)),new Vector2 (10f,2f))); lowerAmbients.Add(new Fish(this)); } map = new SmallMap(ships, resources, currentCamera); corners[0] = new Vector2(-mapSize.X / 2, -mapSize.Y / 2); corners[1] = new Vector2(mapSize.X / 2, -mapSize.Y / 2); corners[2] = new Vector2(mapSize.X / 2, mapSize.Y / 2); corners[3] = new Vector2(-mapSize.X / 2, mapSize.Y / 2); this.ambientOn = ambientOn; }