C:/DevKitPro/!MDuel/source/gameManager.h

Go to the documentation of this file.
00001 /*
00002  * Marshmallow Duel DS v2
00003  * Copyright © 2007 Sam Pospischil http://pospi.spadgos.com
00004  * 
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  * 
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00013  * GNU General Public License for more details.
00014  * 
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00018  */
00019 
00020 #ifndef _GAMEMANAGER_H
00021 #define _GAMEMANAGER_H
00022 
00023 #include <PA9.h>
00024 #include <vector>
00025 #include <string>
00026         using std::vector;
00027         using std::string;
00028 #include "macros.h"
00029 
00030 #include "spriteObject.h"
00031 #include "floorTile.h"
00032 #include "rope.h"
00033 #include "pickupSpawner.h"
00034 
00035 //forward declaration
00036 class Player;
00037 class Pickup;
00038 class menuBottom;
00039 
00053 class gameManager : public spriteManager
00054 {
00055         public:
00062                 gameManager(u8 newscreen = 0) : spriteManager(newscreen), 
00063                         p1score(0), p2score(0), pointsToWin(3), p1RoundScore(0), p2RoundScore(0), 
00064                         player1(NULL), player2(NULL), menuTop(NULL), gameBottom(NULL), menuBase(NULL), 
00065                         gameEndTimer(0), roundNumber(0), pauseSpawning(false)
00066                 {
00067                         player1Sprite.palleteID = -1;
00068                         player2Sprite.palleteID = -1;
00069                         tileSprite.palleteID = -1;
00070                         pickupSprite.palleteID = -1;
00071                         FXSprite.palleteID = -1;
00072                         dunceHatSprite.palleteID = -1;
00073                         bootsSprite.palleteID = -1;
00074                 }
00075                 virtual ~gameManager();
00076                 
00081                 virtual void activate()
00082                 {
00083                         resetScores(); 
00084                         gameEndTimer = 0;
00085                         pickupMask.clear();
00086                         spriteManager::activate(); 
00087                 }
00088                 
00092                 virtual void deactivate()
00093                 {
00094                         resetScores();
00095                         spriteManager::deactivate();
00096                 }
00097                 
00098                 virtual void clearOutSprites(bool keepSound = false);
00099                 
00100                 //initial loadings
00101                 void loadPlayer1SpriteSet(const unsigned short *p, const unsigned char *s);
00102                 void loadPlayer2SpriteSet(const unsigned short *p, const unsigned char *s);
00103                 void loadEnvSpriteSet(const unsigned short *p, const unsigned char *s);
00104                 void loadPickupSpriteSet(const unsigned short *p, const unsigned char *s);
00105                 void loadFXSpriteSet(const unsigned short *p, const unsigned char *s);
00106                 void loadDunceSpriteSet(const unsigned short *p, const unsigned char *s);
00107                 void loadBootsSpriteSet(const unsigned short *p, const unsigned char *s);
00108                 
00109                 //reload all pallete IDs for sprite sets
00110                 void refreshPalletes();
00111                 
00112                 void preloadGFX();
00113                 void unloadGFX();
00114                 
00115                 virtual void gameTick();                                        //called every frame while game is in progress
00116                 void resetGame(bool ending = false);            //reset everything to initial state (unless ending, then just delete)
00117                 
00118                 void generateBricks();
00119                 void generateRopes();
00120                 void drawMallow();
00121                 void generateSpawners();
00122                 
00123                 void playerSank(Player *p);             //player calls these when they die, increments scores and resets etc
00124                 void playerDiedSilently(Player *p);
00125                 void playerSkulled(Player *p);
00126                 void playerLightningd(Player *p);
00127                 void playerMined(Player *p);
00128                 void playerDisintegrated(Player *p);    //gun
00129                 void playerWeaseled(Player *p);
00130                 void playerPucked(Player *p);
00131                 
00132                 u8 p1score, p2score, pointsToWin;
00134                 u8 p1RoundScore;
00136                 u8 p2RoundScore;
00137                 
00139                 void resetScores() {p1score = 0; p2score = 0; p1RoundScore = 0; p2RoundScore = 0; roundNumber = 0;}
00140                 
00141                 bool isGamePaused();
00142                 
00143                 #ifdef __WITHSOUND
00144                 //public sound handles that MUST BE SET dammit
00145                 soundData bigSplash, platformExplode, spawnPuff, gotPickup, teleport, skullLoop, skullPickup, lightningHit, lightningLoop, invisOn, invisOff, mineExp, mineDrop, gunFire, bootsJump, smallSplash, chutClose, chutOpen, hookHit, duncePickup, magnetLoop, netThrow, bulletReflect, boomerangLoop, throwSound;
00146                 
00147                 soundData weaselSounds[7];
00148                 #endif
00149                 
00150                 spriteSet player1Sprite, player2Sprite, tileSprite, pickupSprite, FXSprite, dunceHatSprite, bootsSprite;
00151                 u8 player1000VPallete;
00152                 const short unsigned int* player1000VPalleteData;
00153                 
00155                 struct pickupGraphics
00156                 {
00158                         u16 spawnGFX;
00160                         u16 dieGFX;
00162                         u16 blobGFX;
00164                         u16 iconGFX;
00166                         bool bInUse;
00167                 };
00169                 vector<pickupGraphics> pickupGFX;
00170                 
00171                 pickupGraphics* getNextAvailablePickupGFXSet();
00172 
00173                 u16 spawnGFX[4];
00174                 u16 dunceGFX[2];
00175                 u16 bootsGFX[2];
00176                 
00178                 pickupSpawner* pickupSpawners[3];
00180                 Player *player1;
00182                 Player *player2;
00184                 vector <Pickup*> pickups;
00185                 
00186                 //some management functions for the Pickup%s array
00187                 void addPickup(Pickup* p);
00188                 void removePickup(Pickup* p);
00189                 
00195                 bool allowPickupSpawning() {return !pauseSpawning;}
00196                 
00198                 static const u8 MALLOWYPOS = 169;
00200                 spriteManager *menuTop;
00202                 spriteManager *gameBottom;
00204                 menuBottom *menuBase;
00206                 vector<u8> pickupMask;
00208                 u8 statTimerID;
00209         private:
00210                 void playerDied(Player* p, u8 weaponID = 18, bool skipKill = false);            //weaponID used for statistics. Defaults to FIDs suicide
00212                 s8 gameEndTimer;
00214                 u8 roundNumber;
00216                 static const u8 ROUNDENDTIMEOUT = 60;
00218                 bool pauseSpawning;
00219 };
00220 
00221 #endif

Generated on Tue Mar 13 23:27:52 2007 for MDuel DS by  doxygen 1.5.1-p1