Changeset 519
- Timestamp:
- 04/14/08 13:15:48 (9 months ago)
- Files:
-
- trunk/src/defend/game/Game.d (modified) (7 diffs)
- trunk/src/defend/game/hud/Hud.d (modified) (7 diffs)
- trunk/src/defend/game/hud/MiniMap.d (moved) (moved from trunk/src/defend/MiniMap.d) (7 diffs)
- trunk/src/defend/game/hud/Mouse.d (modified) (12 diffs)
- trunk/src/defend/game/net/Server.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/defend/game/Game.d
r516 r519 38 38 import defend.Map; 39 39 import defend.MapGenerator; 40 import defend.MiniMap;41 40 import defend.Loop; 42 41 import defend.com.Gateway; … … 88 87 MainCamera mainCamera; 89 88 90 // Mini map91 MiniMap miniMap;92 93 89 // Demo recorder 94 90 DemoRecorder demoRecorder; … … 220 216 renderer.identity(); 221 217 hud.render(); 222 miniMap.render(vec2i(renderer.width - 150, renderer.height - HUD_HEIGHT + 10));223 218 renderer.setRenderState(RenderState.DepthTest, true); 224 219 }); … … 247 242 config = gameConfig; 248 243 logger = Log.getLogger("game"); 249 250 final aspect = renderer.config.aspect;251 252 253 final fov = Config("fov", 90);254 244 255 245 GC.collect(); … … 262 252 263 253 // Initialize scene graph 254 final aspect = renderer.config.aspect; 255 final fov = Config("fov", 90); 256 264 257 mainCamera = new MainCamera; 265 258 mainCamera.projection = mat4.projection(aspect, fov, 1, 100); … … 291 284 GC.collect(); 292 285 GC.disable(); 293 294 // Mini map 295 miniMap = new MiniMap; 296 286 297 287 // Initialize input 298 288 bool exit = false; … … 350 340 delete server; 351 341 delete hud; 352 delete miniMap;353 342 354 343 keyboard.remove(); trunk/src/defend/game/hud/Hud.d
r505 r519 29 29 import defend.objects.Core; 30 30 import defend.game.hud.Mouse; 31 import defend.game.hud.MiniMap; 31 32 import defend.game.hud.Console; 32 33 … … 36 37 GuiController guiController; 37 38 GuiRenderer guiRenderer; 38 39 39 Window buttonsRoot; 40 40 … … 42 42 43 43 Mouse mouse; 44 44 MiniMap miniMap; 45 45 KeyboardReader keyboard; 46 46 … … 270 270 guiRenderer = new GuiRenderer(); 271 271 272 mouse = new Mouse(gameObjects, guiController); 272 miniMap = new MiniMap; 273 mouse = new Mouse(gameObjects, guiController, miniMap); 273 274 274 275 bigFont = new FTFont("data/fonts/test.ttf", 15); … … 287 288 } 288 289 290 // Create buttons for game objects 289 291 gameObjects.iterateCivs((Civ civ) 290 292 { … … 394 396 delete smallFont; 395 397 delete mouse; 398 delete miniMap; 396 399 delete profilingDisplay; 397 400 } … … 434 437 435 438 renderSelection(); 439 440 miniMap.render(); 436 441 mouse.render(); 437 442 } trunk/src/defend/game/hud/MiniMap.d
r518 r519 1 module defend. MiniMap;1 module defend.game.hud.MiniMap; 2 2 3 3 import tango.io.Stdout; … … 13 13 import gen.util.Wrapper; 14 14 15 import defend.Config; 15 16 import defend.terrain.Terrain; 16 17 … … 18 19 { 19 20 private: 20 const interval = 1000;21 21 const width = 128; 22 22 const height = 128; … … 25 25 Texture texture; 26 26 Sprite sprite; 27 28 vec2i position; 27 29 28 30 void renderTerrain() … … 40 42 glLoadIdentity(); 41 43 42 glOrtho( viewport[2], 0, viewport[3], 0, 0, 1337);44 glOrtho(terrain.dimension.x - 1, 0, terrain.dimension.y - 1, 0, 0, 1337); 43 45 44 46 renderer.identity(MatrixType.Modelview); 45 47 46 auto center = vec2( (terrain. heightmap.size.x - 1),47 -(terrain. heightmap.size.y - 1));48 auto center = vec2( (terrain.dimension.x - 1), 49 -(terrain.dimension.y - 1)); 48 50 49 51 gluLookAt(center.x, 500.0f, center.y, center.x, 0.0f, … … 70 72 71 73 sprite = new Sprite(texture, Rect(0, 0, width - 1, height - 1), true); 74 position = vec2i(renderer.width - 150, renderer.height - HUD_HEIGHT + 10); 72 75 } 73 76 … … 78 81 } 79 82 80 void render( vec2i pos)83 void render() 81 84 { 82 85 assert(texture !is null); 83 86 assert(sprite !is null); 84 87 85 sprite.render(pos); 88 sprite.render(position); 89 } 90 91 bool pointInside(vec2i pos) 92 { 93 return pos.x >= position.x && pos.x <= position.x + width && 94 pos.y >= position.y && pos.y <= position.y + height; 95 } 96 97 vec2 translatePoint(vec2i pos, vec2i scale) 98 in 99 { 100 assert(pointInside(pos)); 101 } 102 body 103 { 104 auto offset = pos - position; 105 106 return vec2(scale.x / cast(float)width * offset.x, 107 scale.y - scale.y / cast(float)height * offset.y); 86 108 } 87 109 } trunk/src/defend/game/hud/Mouse.d
r516 r519 28 28 import defend.Map; 29 29 import defend.Config; 30 import defend.Camera; 30 31 import defend.com.Types; 31 32 import defend.terrain.Terrain; 32 33 import defend.terrain.Patch; 33 34 import defend.objects.Core; 35 import defend.game.hud.MiniMap; 34 36 35 37 class Mouse 36 38 { 37 39 private: 38 Camera camera;40 MainCamera camera; 39 41 Sprite sprite; 40 42 Ray!(float) _ray; … … 42 44 GameObjectManager gameObjects; 43 45 GuiController guiController; 46 MiniMap miniMap; 44 47 45 48 MapPos _mapPos; … … 52 55 { 53 56 Nothing, 57 MipMapMove, 54 58 AreaSelection, 55 59 ObjectPlacement … … 272 276 { 273 277 case Status.Nothing: 278 // Check if the click was on the mini map 279 if(miniMap.pointInside(input.position)) 280 { 281 status = Status.MipMapMove; 282 break; 283 } 284 274 285 selectObjects(input); 275 286 break; 276 287 277 288 case Status.AreaSelection: 278 289 assert(false); 279 290 break; 280 291 … … 294 305 295 306 default: 296 return;307 break; 297 308 } 298 309 } … … 312 323 break; 313 324 325 case Status.MipMapMove: 326 status = Status.Nothing; 327 328 break; 329 314 330 default: 315 return;331 break; 316 332 } 317 333 } … … 325 341 { 326 342 case Status.Nothing: 327 if(overTerrain && 328 selectionBuffer.length && 329 selectionBuffer[0].mayBeOrdered) 343 // Check if the click was on the mini map 344 if(miniMap.pointInside(input.position)) 345 { 346 auto translated = miniMap.translatePoint(mouse.mousePos, 347 vec2i(terrain.dimension.x, 348 terrain.dimension.y)); 349 350 gameObjects.order(gameObjects.gateway, selection, 351 OrderMapRightClick(cast(ushort)translated.x, 352 cast(ushort)translated.y)); 353 354 break; 355 } 356 357 if(overTerrain && selectionBuffer.length && selectionBuffer[0].mayBeOrdered) 330 358 { 331 359 GameObject target; … … 334 362 foreach(obj; gameObjects) 335 363 { 336 if(obj.visible && 337 !obj.selected && 338 obj.intersectRay(ray)) 364 if(obj.visible && !obj.selected && obj.intersectRay(ray)) 339 365 { 340 366 target = obj; … … 363 389 364 390 default: 365 return;391 break; 366 392 } 367 393 } … … 537 563 Signal!() SelectionChange; 538 564 539 this(GameObjectManager gameObjects, GuiController guiController )565 this(GameObjectManager gameObjects, GuiController guiController, MiniMap miniMap) 540 566 { 541 567 with(this.gameObjects = gameObjects) … … 546 572 547 573 this.guiController = guiController; 548 549 camera = sceneGraph.getCamera("main").core; 574 this.miniMap = miniMap; 575 576 camera = cast(MainCamera)sceneGraph.getCamera("main").core; 550 577 551 578 { … … 642 669 switch(status) 643 670 { 671 case Status.MipMapMove: 672 if(miniMap.pointInside(mouse.mousePos)) 673 { 674 auto translated = miniMap.translatePoint(mouse.mousePos, 675 vec2i(terrain.dimension.x, 676 terrain.dimension.y)); 677 678 camera.position = vec3(translated.x, camera.position.y, 679 -translated.y + 10); 680 } 681 682 break; 683 644 684 case Status.AreaSelection: 645 685 auto mousePos = mouse.mousePos; trunk/src/defend/game/net/Server.d
r514 r519 523 523 MessageTerrainInformation message; 524 524 message.info = gameConfig.terrainInfo; 525 526 //message.dimension = 128; 527 //message.seed = random!(uint)(150, 2000); 528 525 529 526 cm.broadcast(message); 530 527 }
