Example #1
0
        public static GameWorld CreatePlanet(GameSession session, int planetId)
        {
            var w = new GameWorld(session);

            // Planet info
            var _info = new PlanetInfo();

            _info.Randomize(planetId);
            w.Planet = _info;

            w.AddComponent(new BackgroundComponent());
            w.AddComponent(new WeatherComponent());
            w.AddComponent(new DaylightComponent());

            w.AddComponent(new TerrainComponent()
            {
                Seed = _info.TerrainSeed
            });
            var terrain = w.GetComponent <TerrainComponent>();

            w._camera.Position.Y = terrain.HeightMap(0);

            // Make the world less empty
            {
                var player = w.CreateEntity("player");
                player.GetComponent <BodyComponent>().LegPosition = new Vector2(0, terrain.HeightMap(0));
                player.GetComponent <InventoryComponent>().AddItem(Item.Create("test_axe"));
                player.GetComponent <InventoryComponent>().AddItem(Item.Create("test_bow"));
                var slime = w.CreateEntity("slime");
                slime.GetComponent <BodyComponent>().LegPosition = new Vector2(600, terrain.HeightMap(600));
            }
            //CameraControls = true;

            return(w);
        }
Example #2
0
        public override void DrawWeatherEffects(GameWorld world, SpriteBatch spriteBatch)
        {
            int x = (int)world.Camera.BoundingBox.Left;

            x -= Helper.NegModulo(x, X_DELTA);
            for (int dx = 0; x + dx < world.Camera.BoundingBox.Right; dx += X_DELTA)
            {
                var   terrain = world.GetComponent <TerrainComponent>();
                float height  = terrain != null?terrain.HeightMap(x + dx) : 0;

                float offset = Y_DELTA * (1 - ((Time + (float)Math.Sin(Helper.Hash(x + dx))) % 1f));

                for (int i = 0; i < Math.Max(height - world.Camera.BoundingBox.Top, 0) / Y_DELTA; ++i)
                {
                    spriteBatch.Draw(ContentLoader.Pixel, new Vector2(x + dx, height - offset - i * Y_DELTA),
                                     null, Color.Blue, 0, new Vector2(0.5f, 1f), new Vector2(1, 8f), SpriteEffects.None, 0f);
                }
            }
        }