private async Task OnCreateResourcesAsync(EngineCreateResourcesEventArgs e) { var grass = GrassSprite.Resolve(Entity); var snow = SnowSprite.Resolve(Entity); var rock = RockSprite.Resolve(Entity); var heightMap = _terrain.HeightMap.Resolve(Entity); if (!heightMap.IsPreScaled || !grass.IsPreScaled || !snow.IsPreScaled || !rock.IsPreScaled) { throw new ArgumentException("The heightmap, grass, snow and rock textures must be prescaled in order to be used for terrain rendering"); } // Calculate average colors (these are used at small zoom levels) _grassColor = GetAverageColor(e.Sender, grass.Image); _snowColor = GetAverageColor(e.Sender, snow.Image); _rockColor = GetAverageColor(e.Sender, rock.Image); _normalHeightMap = await RenderNormalHeightMapAsync(e.Sender, heightMap.Image, _terrain.Height - _terrain.BaseHeight); var wrap = CanvasEdgeBehavior.Wrap; var grassTiled = new BorderEffect { Source = grass.Image, ExtendX = wrap, ExtendY = wrap, CacheOutput = true }; var snowTiled = new BorderEffect { Source = snow.Image, ExtendX = wrap, ExtendY = wrap, CacheOutput = true }; var rockTiled = new BorderEffect { Source = rock.Image, ExtendX = wrap, ExtendY = wrap, CacheOutput = true }; var shaderBytes = await Utilities.ReadBytesFromUriAsync(new Uri("ms-appx:///Shaders/TerrainShader.bin")); _terrainMap = new PixelShaderEffect(shaderBytes) { Source1 = _normalHeightMap, Source2 = grassTiled, Source3 = snowTiled, Source4 = rockTiled, CacheOutput = true }; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); chiF = Content.Load<SpriteFont>("ChillerFont"); dadGod = Content.Load<Texture2D>("gods/DaddyGod"); broGod = Content.Load<Texture2D>("gods/BrotherGod"); sisGod = Content.Load<Texture2D>("gods/SisterGod"); dadFont = Content.Load<SpriteFont>("gods/DaddyFont"); broFont = Content.Load<SpriteFont>("gods/BrotherFont"); sisFont = Content.Load<SpriteFont>("gods/SisterFont"); intro = new Introduction(this, Content.Load<Texture2D>("gods/DaddyGod"), new Vector2(0,0), new Vector2(0,0), dadFont); myGrass = new GrassSprite(Content.Load<Texture2D>("grass"), new Vector2(0, 0), new Vector2(0, 0)); myWater = new WaterSprite(Content.Load<Texture2D>("water"), new Vector2(0, 0), new Vector2(0, 0)); myRoad = new Road(Content.Load<Texture2D>("road"), new Vector2(0, 0), new Vector2(0, 0)); //Kill the game with Escape GameAction closeGame = new GameAction(this, this.GetType().GetMethod("ExitGame"), new object[0]); InputManager.AddToKeyboardMap(Keys.Escape, closeGame); GrowGrass grassPower = new GrowGrass(Content.Load<Texture2D>("UI/sprouts"), this, new Vector2(0, 0), new Vector2(0, 0)); powers.Add(grassPower); Rain rainPower = new Rain(Content.Load<Texture2D>("UI/raindrop"), this, new Vector2(0, 0), new Vector2(0, 0)); powers.Add(rainPower); sproutTree = new SproutTree(Content.Load<Texture2D>("UI/treeicon"), this, new Vector2(0, 0), new Vector2(0, 0)); powers.Add(sproutTree); BuildRoad buildRoad = new BuildRoad(Content.Load<Texture2D>("UI/roadicon"), this, new Vector2(0, 0), new Vector2(0, 0)); powers.Add(buildRoad); Fire fire = new Fire(Content.Load<Texture2D>("UI/fireicon"), this, new Vector2(0, 0), new Vector2(0, 0)); powers.Add(fire); BuildHouse housePower = new BuildHouse(Content.Load<Texture2D>("UI/house_icon"), this, new Vector2(0, 0), new Vector2(0, 0)); powers.Add(housePower); //Protect protect = new Protect(Content.Load<Texture2D>("UI/protect"), this, new Vector2(0, 0), new Vector2(0, 0)); Dictionary<string, Power> myPowers = new Dictionary<string, Power>(); myPowers.Add("grass", grassPower); myPowers.Add("sprout", sproutTree); myPowers.Add("fire", fire); myPowers.Add("house", housePower); List<Power> availablePowers = new List<Power>(); //availablePowers.Add(protect); cursor = new Cursor(Content.Load<Texture2D>("cursor"), new Vector2(0,0), this, powers); player = new Player(Content.Load<Texture2D>("UI/icon"), Content.Load<Texture2D>("UI/iconBG"), chiF, new Vector2(0, 0), new Vector2(GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height), tempMapSize, cursor, powers, availablePowers); map = new Map(Content.Load<Texture2D>("Maps/Mars/marsorbit"), new Vector2(GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height), new Vector2(0, 0), player); worldScale = map.baseScale; // TODO: use this.Content to load your game content here LoadObjects(); FontPos = new Vector2(graphics.GraphicsDevice.Viewport.Width / 2, graphics.GraphicsDevice.Viewport.Height / 2); myApocalypse = new Apocalypse(this, myPowers); //myApocalypse.BuildVillage(); mainMusic = Content.Load<SoundEffect>("Sound/mainMusic"); mainMusicInstance = mainMusic.CreateInstance(); mainMusicInstance.IsLooped = true; mainMusicInstance.Play(); }