Moved all files one dir upwards (should've done that long ago)
This commit is contained in:
136
project/jni/application/alienblaster/item.cpp
Normal file
136
project/jni/application/alienblaster/item.cpp
Normal file
@@ -0,0 +1,136 @@
|
||||
/***************************************************************************
|
||||
alienBlaster
|
||||
Copyright (C) 2004
|
||||
Paul Grathwohl, Arne Hormann, Daniel Kuehn, Soenke Schwardt
|
||||
|
||||
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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
***************************************************************************/
|
||||
#include <iostream>
|
||||
#include "item.h"
|
||||
#include "boundingBox.h"
|
||||
#include "surfaceDB.h"
|
||||
#include "global.h"
|
||||
|
||||
Item::Item(const Vector2D &position, const Vector2D &velocity, ItemTypes itemType) {
|
||||
|
||||
this->itemType = itemType;
|
||||
|
||||
pos = position;
|
||||
vel = velocity;
|
||||
timeLived = 0;
|
||||
|
||||
switch (itemType) {
|
||||
case ITEM_PRIMARY_UPGRADE:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_PRIMARY_UPGRADE );
|
||||
break;
|
||||
}
|
||||
case ITEM_DUMBFIRE_DOUBLE:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_DUMBFIRE_DOUBLE );
|
||||
break;
|
||||
}
|
||||
case ITEM_KICK_ASS_ROCKET:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_KICK_ASS_ROCKET );
|
||||
break;
|
||||
}
|
||||
case ITEM_HELLFIRE:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_HELLFIRE );
|
||||
break;
|
||||
}
|
||||
case ITEM_MACHINE_GUN:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_MACHINE_GUN );
|
||||
break;
|
||||
}
|
||||
case ITEM_HEALTH:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_HEALTH );
|
||||
break;
|
||||
}
|
||||
case ITEM_HEATSEEKER:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_HEATSEEKER );
|
||||
break;
|
||||
}
|
||||
case ITEM_NUKE:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_NUKE );
|
||||
break;
|
||||
}
|
||||
case ITEM_DEFLECTOR:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_DEFLECTOR );
|
||||
break;
|
||||
}
|
||||
case ITEM_LASER:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_LASER );
|
||||
break;
|
||||
}
|
||||
case ITEM_ENERGY_BEAM:
|
||||
{
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_ENERGY_BEAM );
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
cout << "Item(): unexpected itemType: " << itemType << endl;
|
||||
sprite = surfaceDB.loadSurface( FN_ITEM_PRIMARY_UPGRADE );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
boundingBox = new BoundingBox( lroundf(pos.getX() - sprite->w / 2.0),
|
||||
lroundf(pos.getY() - sprite->h / 2.0),
|
||||
sprite->w, sprite->h );
|
||||
}
|
||||
|
||||
Item::~Item() {
|
||||
delete boundingBox;
|
||||
}
|
||||
|
||||
|
||||
void Item::update( int dT ) {
|
||||
pos += vel * dT / 1000.0;
|
||||
updateBoundingBox();
|
||||
timeLived += dT;
|
||||
}
|
||||
|
||||
void Item::deleteItem() {
|
||||
timeLived = ITEM_LIFETIME;
|
||||
}
|
||||
|
||||
void Item::updateBoundingBox() {
|
||||
boundingBox->moveUpperBound( lroundf(pos.getY() - sprite->h * 0.5) );
|
||||
boundingBox->moveLeftBound( lroundf(pos.getX() - sprite->w * 0.5) );
|
||||
}
|
||||
|
||||
void Item::draw(SdlCompat_AcceleratedSurface *screen) {
|
||||
SDL_Rect r;
|
||||
r.x = lroundf(pos.getX()) - sprite->w / 2;
|
||||
r.y = lroundf(pos.getY()) - sprite->h / 2;
|
||||
r.w = sprite->w;
|
||||
r.h = sprite->h;
|
||||
SDL_BlitSurface( sprite, 0, screen, &r );
|
||||
}
|
||||
|
||||
BoundingBox *Item::getBoundingBox() {
|
||||
return boundingBox;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user