• Main Page
  • Classes
  • Files
  • File List
  • File Members

code/source/powerups/PowerupShrinkRay.cpp

Go to the documentation of this file.
00001 /*
00002  * TetriCycle
00003  * Copyright (C) 2009, 2010 Cale Scholl
00004  *
00005  * This file is part of TetriCycle.
00006  *
00007  * TetriCycle is free software: you can redistribute it and/or modify
00008  * it under the terms of the GNU Lesser General Public License as published
00009  * by the Free Software Foundation, either version 3 of the License, or
00010  * (at your option) any later version.
00011  *
00012  * TetriCycle is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public License
00018  * along with TetriCycle.  If not, see <http://www.gnu.org/licenses/>.
00019  */
00020 
00021 /** @file PowerupShrinkRay.cpp
00022  * @author Cale Scholl / calvinss4
00023  */
00024 
00025 #include "PowerupShrinkRay.h"
00026 
00027 #include "Player.h"        // for Player
00028 #include "libwiigui/gui.h" // for GuiImageData
00029 
00030 extern Player *g_players; ///< the player instances
00031 
00032 #define SHRINK_RAY_SCALE 2.8
00033 
00034 PowerupId PowerupShrinkRay::powerupId;
00035 Powerup *PowerupShrinkRay::instance = new PowerupShrinkRay();
00036 
00037 GuiImageData *PowerupShrinkRay::imageData = 
00038   new GuiImageData(powerup_shrinkray_png);
00039 
00040 GuiSound *PowerupShrinkRay::sound = 
00041   new GuiSound(powerup_shrinkray_pcm, powerup_shrinkray_pcm_size, SOUND_PCM);
00042 
00043 string PowerupShrinkRay::helpText[2] = 
00044   {"Shrink Ray", "Shrinks the target player's playfield. "
00045                  "Use this on people who have poor vision."};
00046 
00047 void PowerupShrinkRay::StartEffect(u8 player)
00048 {
00049   g_players[player].gameData.powerupData.playfieldScale = SHRINK_RAY_SCALE;
00050 }
00051 
00052 /// Allow more than one PowerupShrinkRay to be in effect at the same time.
00053 /**
00054  * This function assumes this powerup has already been removed from the powerup 
00055  * effect queue. If another PowerupShrinkRay is in the queue then allow that one 
00056  * to stop the effect.
00057  */
00058 void PowerupShrinkRay::StopEffect(u8 player)
00059 {
00060   for (int i = 0; i < MAX_POWERUP_EFFECTS; ++i)
00061   {
00062     Powerup *powerup = g_players[player].gameData.powerupEffects[i];
00063     if (powerup && powerup->GetPowerupId() == powerupId)
00064     {
00065       return;
00066     }
00067   }
00068   
00069   g_players[player].gameData.powerupData.playfieldScale = 0;
00070 }

Generated on Wed Oct 20 2010 17:06:58 for TetriCycle by  doxygen 1.7.1