Description:
Factor out some of the tile drawing code.
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
@@ -429,6 +429,10 | |||||
|
429 |
|
429 | ||
|
430 | } |
|
430 | } |
|
431 |
|
431 | ||
|
|
432 | protected float calculateDepth() { | ||
|
|
433 | return ((this.squaresAcross + 1) + ((this.squaresDown + 1) * Tile.TileWidth)) * 10; | ||
|
|
434 | } | ||
|
|
435 | |||
|
432 | protected Boolean cull(int gridX, int gridY) |
|
436 | protected Boolean cull(int gridX, int gridY) |
|
433 | { |
|
437 | { |
|
434 | int screenX = (gridX - gridY) * Tile.TileSpriteWidth / 2; |
|
438 | int screenX = (gridX - gridY) * Tile.TileSpriteWidth / 2; |
@@ -441,83 +445,17 | |||||
|
441 | && MathUtils.Between(original.Y, -Tile.TileSpriteHeight, FNAGame.height))); |
|
445 | && MathUtils.Between(original.Y, -Tile.TileSpriteHeight, FNAGame.height))); |
|
442 | } |
|
446 | } |
|
443 |
|
447 | ||
|
444 |
|
448 | //Convenience method I'm not super sure about anymore. | |
|
445 |
|
|
449 | protected void drawTileAt(int x, int y, int tileIndex, int height) |
|
446 | { |
|
450 | { |
|
447 | float maxdepth = ((this.squaresAcross + 1) + ((this.squaresDown + 1) * Tile.TileWidth)) * 10; |
|
451 | float maxdepth = ((this.squaresAcross + 1) + ((this.squaresDown + 1) * Tile.TileWidth)) * 10; |
|
448 |
|
452 | ||
|
449 | float depthOffset = 0.7f - ((0 + (0 * Tile.TileWidth)) / maxdepth); |
|
453 | float depthOffset = 0.7f - ((0 + (0 * Tile.TileWidth)) / maxdepth); |
|
450 |
|
454 | ||
|
451 | drawTileAt(x, y, tileIndex, height, depthOffset); |
|
455 | Tile.drawTileAt(this.batch, x, y, tileIndex, height, depthOffset); |
|
452 | } |
|
456 | } |
|
453 |
|
457 | ||
|
454 |
|
|||
|
455 |
|
|||
|
456 | protected void drawTileAt(int x, int y, int tileIndex, int height, float depth) |
|
||
|
457 | { |
|
||
|
458 | /* |
|
||
|
459 | Vector2 firstSquare = Vector2.Zero; |
|
||
|
460 | Vector2 squareOffset = Vector2.Zero; |
|
||
|
461 |
|
|||
|
462 | int offsetX = (int)squareOffset.X; |
|
||
|
463 | int offsetY = (int)squareOffset.Y; |
|
||
|
464 | int firstX = (int)firstSquare.X; |
|
||
|
465 | int firstY = (int)firstSquare.Y; |
|
||
|
466 | int rowOffset = 0; |
|
||
|
467 | float maxdepth = ((this.squaresAcross + 1) + ((this.squaresDown + 1) * Tile.TileWidth)) * 10; |
|
||
|
468 |
|
|||
|
469 |
|
458 | ||
|
470 | int mapx = (firstX + x); |
|
||
|
471 | int mapy = (firstY + y); |
|
||
|
472 | float depthOffset = 0.7f - ((mapx + (mapy * Tile.TileWidth)) / maxdepth); |
|
||
|
473 |
|
|||
|
474 | if ((firstY + y) % 2 == 1) |
|
||
|
475 | rowOffset = Tile.OddRowXOffset; |
|
||
|
476 |
|
|||
|
477 | batch.Draw( |
|
||
|
478 | Tile.TileSetTexture, |
|
||
|
479 | new Rectangle( |
|
||
|
480 | (x * Tile.TileStepX) - offsetX + rowOffset + baseOffsetX, |
|
||
|
481 | (y * Tile.TileStepY) - offsetY + baseOffsetY-(Tile.TileHeight*(height-1)), |
|
||
|
482 | Tile.TileWidth, Tile.TileHeight*height), |
|
||
|
483 | Tile.GetExtendedSourceRectangle(tileIndex, height), |
|
||
|
484 | Color.White, |
|
||
|
485 | 0.0f, |
|
||
|
486 | Vector2.Zero, |
|
||
|
487 | SpriteEffects.None, |
|
||
|
488 | depthOffset); |
|
||
|
489 | */ |
|
||
|
490 |
|
|||
|
491 | int height_adjust = 0; |
|
||
|
492 |
|
|||
|
493 | if (height > 1) //not sure why this is necessary :/ |
|
||
|
494 | { |
|
||
|
495 | height_adjust = height; |
|
||
|
496 | } |
|
||
|
497 |
|
|||
|
498 | int adjustedx = x - height_adjust; |
|
||
|
499 | int adjustedy = y - height_adjust; |
|
||
|
500 |
|
|||
|
501 | int screenx = (adjustedx - adjustedy) * Tile.TileSpriteWidth / 2; |
|
||
|
502 | int screeny = (adjustedx + adjustedy) * Tile.TileSpriteHeight / 2; |
|
||
|
503 |
|
|||
|
504 | if (this.cull(x, y)) |
|
||
|
505 | { |
|
||
|
506 | batch.Draw( |
|
||
|
507 | Tile.TileSetTexture, |
|
||
|
508 | new Rectangle( |
|
||
|
509 | screenx, |
|
||
|
510 | screeny, |
|
||
|
511 | Tile.TileWidth, Tile.TileHeight * height), |
|
||
|
512 | Tile.GetExtendedSourceRectangle(tileIndex, height), |
|
||
|
513 | Color.White, |
|
||
|
514 | 0.0f, |
|
||
|
515 | Vector2.Zero, |
|
||
|
516 | SpriteEffects.None, |
|
||
|
517 | depth); |
|
||
|
518 | } |
|
||
|
519 |
|
|||
|
520 | } |
|
||
|
521 |
|
459 | ||
|
522 | protected override void Draw(GameTime gameTime) |
|
460 | protected override void Draw(GameTime gameTime) |
|
523 | { |
|
461 | { |
@@ -607,10 +545,7 | |||||
|
607 |
|
545 | ||
|
608 | this.tilesDrawn++; |
|
546 | this.tilesDrawn++; |
|
609 | } |
|
547 | } |
|
610 |
|
|||
|
611 |
|
|||
|
612 | } |
|
548 | } |
|
613 |
|
|||
|
614 | } |
|
549 | } |
|
615 | #endregion draw_tiles |
|
550 | #endregion draw_tiles |
|
616 |
|
551 | ||
@@ -687,16 +622,18 | |||||
|
687 | } |
|
622 | } |
|
688 | */ |
|
623 | */ |
|
689 |
|
624 | ||
|
|
625 | #if DEBUG | ||
|
690 | drawTileAt(4, 4, 140, 3); |
|
626 | drawTileAt(4, 4, 140, 3); |
|
691 | drawTileAt(6, 4, 141, 3); |
|
627 | drawTileAt(6, 4, 141, 3); |
|
692 | drawTileAt(8, 4, 142, 2); |
|
628 | drawTileAt(8, 4, 142, 2); |
|
693 | drawTileAt(10, 4, 142, 3); |
|
629 | drawTileAt(10, 4, 142, 3); |
|
|
630 | #endif | ||
|
694 |
|
631 | ||
|
695 | #region draw_cursor |
|
632 | #region draw_cursor |
|
696 | //drawTileAt((int)this.mouseGrid.X, (int)this.mouseGrid.Y, 2, 1, 0.85f); //between tiles and gridlines |
|
633 | //drawTileAt((int)this.mouseGrid.X, (int)this.mouseGrid.Y, 2, 1, 0.85f); //between tiles and gridlines |
|
697 |
|
634 | ||
|
698 |
|
|
635 | //TODO figure out why it has to be -1 |
|
699 |
|
|
636 | if (MathUtils.Between(this.mouseGrid.X, -1, this.simulation.map.MapWidth) |
|
700 | && MathUtils.Between(this.mouseGrid.Y, -1, this.simulation.map.MapHeight)) |
|
637 | && MathUtils.Between(this.mouseGrid.Y, -1, this.simulation.map.MapHeight)) |
|
701 | { |
|
638 | { |
|
702 | Tile.OutlineSquare(batch, this.mouseGrid.X, this.mouseGrid.Y, Color.Yellow, 1); |
|
639 | Tile.OutlineSquare(batch, this.mouseGrid.X, this.mouseGrid.Y, Color.Yellow, 1); |
@@ -81,5 +81,85 | |||||
|
81 | color, 0.79f); |
|
81 | color, 0.79f); |
|
82 | } |
|
82 | } |
|
83 |
|
83 | ||
|
|
84 | |||
|
|
85 | |||
|
|
86 | // protected void drawTileAt(int x, int y, int tileIndex, int height) | ||
|
|
87 | // { | ||
|
|
88 | // float maxdepth = ((this.squaresAcross + 1) + ((this.squaresDown + 1) * Tile.TileWidth)) * 10; | ||
|
|
89 | |||
|
|
90 | // float depthOffset = 0.7f - ((0 + (0 * Tile.TileWidth)) / maxdepth); | ||
|
|
91 | |||
|
|
92 | // Tile.drawTileAt(x, y, tileIndex, height, depthOffset); | ||
|
|
93 | // } | ||
|
|
94 | |||
|
|
95 | |||
|
|
96 | |||
|
|
97 | public static void drawTileAt(SpriteBatch batch, int x, int y, int tileIndex, int height, float depth) | ||
|
|
98 | { | ||
|
|
99 | /* | ||
|
|
100 | Vector2 firstSquare = Vector2.Zero; | ||
|
|
101 | Vector2 squareOffset = Vector2.Zero; | ||
|
|
102 | |||
|
|
103 | int offsetX = (int)squareOffset.X; | ||
|
|
104 | int offsetY = (int)squareOffset.Y; | ||
|
|
105 | int firstX = (int)firstSquare.X; | ||
|
|
106 | int firstY = (int)firstSquare.Y; | ||
|
|
107 | int rowOffset = 0; | ||
|
|
108 | float maxdepth = ((this.squaresAcross + 1) + ((this.squaresDown + 1) * Tile.TileWidth)) * 10; | ||
|
|
109 | |||
|
|
110 | |||
|
|
111 | int mapx = (firstX + x); | ||
|
|
112 | int mapy = (firstY + y); | ||
|
|
113 | float depthOffset = 0.7f - ((mapx + (mapy * Tile.TileWidth)) / maxdepth); | ||
|
|
114 | |||
|
|
115 | if ((firstY + y) % 2 == 1) | ||
|
|
116 | rowOffset = Tile.OddRowXOffset; | ||
|
|
117 | |||
|
|
118 | batch.Draw( | ||
|
|
119 | Tile.TileSetTexture, | ||
|
|
120 | new Rectangle( | ||
|
|
121 | (x * Tile.TileStepX) - offsetX + rowOffset + baseOffsetX, | ||
|
|
122 | (y * Tile.TileStepY) - offsetY + baseOffsetY-(Tile.TileHeight*(height-1)), | ||
|
|
123 | Tile.TileWidth, Tile.TileHeight*height), | ||
|
|
124 | Tile.GetExtendedSourceRectangle(tileIndex, height), | ||
|
|
125 | Color.White, | ||
|
|
126 | 0.0f, | ||
|
|
127 | Vector2.Zero, | ||
|
|
128 | SpriteEffects.None, | ||
|
|
129 | depthOffset); | ||
|
|
130 | */ | ||
|
|
131 | |||
|
|
132 | int height_adjust = 0; | ||
|
|
133 | |||
|
|
134 | if (height > 1) //not sure why this is necessary :/ | ||
|
|
135 | { | ||
|
|
136 | height_adjust = height; | ||
|
|
137 | } | ||
|
|
138 | |||
|
|
139 | int adjustedx = x - height_adjust; | ||
|
|
140 | int adjustedy = y - height_adjust; | ||
|
|
141 | |||
|
|
142 | int screenx = (adjustedx - adjustedy) * Tile.TileSpriteWidth / 2; | ||
|
|
143 | int screeny = (adjustedx + adjustedy) * Tile.TileSpriteHeight / 2; | ||
|
|
144 | |||
|
|
145 | // if (this.cull(x, y)) | ||
|
|
146 | // { | ||
|
|
147 | batch.Draw( | ||
|
|
148 | Tile.TileSetTexture, | ||
|
|
149 | new Rectangle( | ||
|
|
150 | screenx, | ||
|
|
151 | screeny, | ||
|
|
152 | Tile.TileWidth, Tile.TileHeight * height), | ||
|
|
153 | Tile.GetExtendedSourceRectangle(tileIndex, height), | ||
|
|
154 | Color.White, | ||
|
|
155 | 0.0f, | ||
|
|
156 | Vector2.Zero, | ||
|
|
157 | SpriteEffects.None, | ||
|
|
158 | depth); | ||
|
|
159 | // } | ||
|
|
160 | |||
|
|
161 | } | ||
|
|
162 | |||
|
|
163 | |||
|
84 | } |
|
164 | } |
|
85 | } |
|
165 | } |
You need to be logged in to leave comments.
Login now