public override void Render(TgcFrustum tgcFrustum) { ClearScreen(); ShaderRepository.ShipAmbientShader.SetValue("cameraPosition", new float[4] { Camera.Position.X, Camera.Position.Y, Camera.Position.Z, 1 }); GameState.character.Render(); ship.Render(); var lookedThings = selectableThings.Where(t => t.Looked).ToList(); Thing newLookedThing = null; if (lookedThings.Count() == 0) { lookedThing = null; } else { newLookedThing = lookedThings[0]; if (newLookedThing != lookedThing) { dialogBox.Open(); lookedThing = newLookedThing; } dialogBox.Clear(); if (cursor != null) { newLookedThing.BoundingBox.Render(); dialogBox.AddLineSmall(newLookedThing.name); dialogBox.AddLineSmall("------------"); dialogBox.AddLineSmall(newLookedThing.actionDescription); dialogBox.Render(); cursor = hand; } } foreach (var thing in selectableThings) { thing.Render(); } lifeBelt.Position = new TGCVector3(285, 1000, 250); lifeBelt.Render(); lifeBelt.Position = new TGCVector3(330, 1000, 100); lifeBelt.Render(); lifeBelt.Position = new TGCVector3(375, 1000, -50); lifeBelt.Render(); seat.Render(); if (cursor != null) { drawer2D.BeginDrawSprite(); drawer2D.DrawSprite(cursor); drawer2D.EndDrawSprite(); cursor = aim; } inventoryScene.Render(); craftingScene.Render(); //this.drawText.drawText("Pause: P\nInventory: TAB\nExit ship: click the hatch in the floor\nCraft: click the crafter, press ESC to exit crafting", // 300, 300, Color.NavajoWhite); //this.drawText.drawText("Camera:", 800, 100, Color.Red); //this.drawText.drawText("X: " + Camera.Position.X, 800, 130, Color.White); //this.drawText.drawText("Y: " + Camera.Position.Y, 800, 160, Color.White); //this.drawText.drawText("Z: " + Camera.Position.Z, 800, 190, Color.White); //crafter.Render(); //s.Render(); statsIndicators.Render(this.GameState.character); }
//private readonly NumberIndicator loadIndicator = new NumberIndicator(100, (Screen.Width-100)/2, (Screen.Height-100)/2); public override void Render(TgcFrustum frustum) { ClearScreen(); ShaderRepository.WorldWaterFog.SetValue("cameraPosition", new Vector4(Camera.Position.X, Camera.Position.Y, Camera.Position.Z, 1)); GameState.character.Render(); if (GameState.character.Weapon != null && GameState.character.Weapon.Mesh != null) { GameState.character.Weapon.Mesh.Effect = ShaderRepository.WorldWaterFog; GameState.character.Weapon.Mesh.Technique = "WorldWaterFog"; } if (!this.loaded) { var oldColor = this.backgroundColor; this.backgroundColor = Color.Black; ClearScreen(); //TODO loading screen /* indicator * var max = this.World.generating; * var progress = this.World.chunks.Count * 100 / (max != 0 ? max : 1); * * loadIndicator.Render(progress , 100); * loadIndicator.RenderText(progress); */ var color = Color.DeepSkyBlue; this.DrawText.drawText("Loading...", 600, 300, color); this.DrawText.drawText("Chunnks: " + this.World.chunks.Count + "/" + this.World.generating, 600, 330, color); this.DrawText.drawText("Floors: " + FloorRepository.Floors.Count + "/" + FloorRepository.generating, 600, 360, color); this.backgroundColor = Color.Green; return; } //if (Camera.Position.Y < 0) //{ // foreach (var mesh in skyBoxUnderwater.Faces) // { // mesh.Effect = ShaderRepository.WorldWaterFog; // mesh.Technique = "WorldWaterFog"; // } // skyBoxUnderwater.Render(); //} //else //{ // foreach (var mesh in skyBoxOutside.Faces) // { // mesh.Effect = ShaderRepository.WorldWaterFog; // mesh.Technique = "WorldWaterFog"; // } // skyBoxOutside.Render(); //} if (Camera.Position.Y < 0) { theSkybox.Render(new Vector4(Camera.Position.X, Camera.Position.Y, Camera.Position.Z, 1)); } else { theSkybox.Render(); } var camPos = new Vector4(Camera.Position.X, Camera.Position.Y, Camera.Position.Z, 1); waterSurface.Render(camPos); ShaderRepository.WorldWaterFog.SetValue("cameraPosition", camPos); World.Render(Camera, frustum); if (BoundingBox) { World.RenderBoundingBox(Camera); } orientationArrow.Render(); drawer.BeginDrawSprite(); //drawer.DrawSprite(waterVision); drawer.DrawSprite(cursor); drawer.EndDrawSprite(); inventoryScene.Render(); if (dialogName != "") { dialogBox.Clear(); dialogBox.AddLineBig(dialogName, Color.FromArgb(255, 204, 234, 255)); dialogBox.AddLineSmall(dialogDescription, Color.FromArgb(255, 204, 234, 255)); dialogBox.Render(); } drawer.BeginDrawSprite(); drawer.DrawSprite(mask); drawer.EndDrawSprite(); statsIndicators.Render(GameState.character); /* * this.DrawText.drawText("Camera:", 800, 100, Color.Red); * this.DrawText.drawText("X: " + Camera.Position.X, 800, 130, Color.White); * this.DrawText.drawText("Y: " + Camera.Position.Y, 800, 160, Color.White); * this.DrawText.drawText("Z: " + Camera.Position.Z, 800, 190, Color.White); */ }