Exemplo n.º 1
0
        public static JObject Serialize(AmbientObject obj)
        {
            var retObject = new JObject();

            SerializationUtils.SerializeType(type, ref retObject);
            Serialize(obj, ref retObject);

            return(retObject);
        }
Exemplo n.º 2
0
        public static AmbientObject Deserialize(JObject jObject)
        {
            AmbientObject ambientObject = ReflectionUtils.CallPrivateConstructor <AmbientObject>();

            Deserialize(ref jObject, ambientObject);

            ambientObject.Init();

            return(ambientObject);
        }
Exemplo n.º 3
0
        public void RemoveAmbientObject(AmbientObject ambientObject)
        {
            if (AmbientObjects != null)
            {
                AmbientObjects.Remove(ambientObject);

                if (AmbientObjects.Count == 0)
                {
                    AmbientObjects = null;
                }
            }
        }
Exemplo n.º 4
0
        public void AddAmbientObject(AmbientObject ambientObject)
        {
            if (AmbientObjects == null)
            {
                AmbientObjects = new List <AmbientObject>();
            }

            if (AmbientObjects.Contains(ambientObject) == false)
            {
                AmbientObjects.Add(ambientObject);
            }
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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);
                }
            }
        }
Exemplo n.º 8
0
        protected static void Serialize(AmbientObject ambientObject, ref JObject jObject)
        {
            GameObjectSerializer.Serialize(ambientObject, ref jObject);

            SerializationUtils.AddToObject(jObject, ambientObject, type, serializeableProperties);
        }
Exemplo n.º 9
0
        protected static void Deserialize(ref JObject jObject, AmbientObject ambientObject)
        {
            GameObjectSerializer.Deserialize(ref jObject, ambientObject);

            SerializationUtils.SetFromObject(jObject, ambientObject, type, serializeableProperties);
        }
Exemplo n.º 10
0
        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;
        }