|Defintions of functions and data that deal directly with the tank sprites. |
|Flip horizontally. |
|Flip vertically. |
|void||DrawTank (SDL_Surface *dest, RenderItem *item)|
|Draws a player's tank. |
|Generates all 16 tank sprites from 3 prototype sprites. |
|Bool||IsCollidingShell (Player *tank, Player *shell)|
|Tank to shell collision detection. |
|Bool||IsCollidingTank (Player *p1, Player *p2)|
|Tank to tank collision detection. |
|static const Uint8||imgFlags |
|The set of flags used to control rendering a tank in all 16 rotations from three sprites. |
|const Uint8||shellInitLoc |
|An array of deltas for the shells inital location that is organized by the tank's rotation. |
|static const Uint8||spriteProtos |
|The sprite as a bit pattern, on for tank pixel. |
|Sprite data for all sixteen sprites. |
Copyright (C) 2007 Jeff Jackowski
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Or visit their website at: http://www.gnu.org/
|#define FHoriz 1|
|#define FVert 2|
|#define Trans 4|
|void DrawTank||(||SDL_Surface *||dest,|
Draws a player's tank.
Does not check for visibility.
|dest||The surface that is the target of the rendering operation.|
|item||The RenderItem, and Player, that the function will render.|
Generates all 16 tank sprites from 3 prototype sprites.
The algorithm used closely resembles the original tank rendering routine. Generating the sprites helps my lazyness because I don't have to come up with the sprites myself or make a tool to generate the sprites. Having each sprite simplifies and speeds up the rendering and collision detection algorithms.
Referenced by main().
Tank to shell collision detection.
The algorithm first computes where on the tank's sprite the shell is located while also checking a bounding box to see if the shell is anywhere on tank's sprite. If the shell is on the tank's sprite, pixel collision will be computed.
|tank||The player who's tank that might be hit by the shell.|
|shell||The player who's shell might hit the tank.|
Tank to tank collision detection.
The algorithm first finds an overlap region for the players and at the same time checks for an overlap. If there is an overlap, collision detection is done on the pixels of the sprites used for the players.
|p1||A player that might be colliding.|
|p2||The player that the first might be colliding with.|
Referenced by SpawnTank().
|const Uint8 imgFlags
|const Uint8 shellInitLoc|
|const Uint8 spriteProtos
Sprite data for all sixteen sprites.
The data is generated by GenTankSprites() at runtime. The first dimention indicates the rotation of the tank sprite. The second dimention indicates the horizontal line of the sprite. A set bit indictaes the pixel is part of the tank.