Codebase list pipenightdreams / upstream/0.10.0 src / tank.cpp
upstream/0.10.0

Tree @upstream/0.10.0 (Download .tar.gz)

tank.cpp @upstream/0.10.0raw · history · blame

/***************************************************************************
                          tank.cpp  -  description
                             -------------------
    begin                : Fri Dec 29 2000
    copyright            : (C) 2000 by Waldemar Baraldi
    email                : baraldi@lacasilla.com.ar
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/
#include "tank.h"

#define MAX_STATE 20

Tank::Tank(unsigned int full_level):AnimatedCanvas(){
  this->full_level=full_level%(Capacity-1);
  state=0;
  changed=true;
}

Tank::~Tank(){}

void Tank::decFullLevel(unsigned int amount){
  if (full_level>0 && (unsigned int)full_level>amount)
    full_level-=amount;
  else full_level=0;
  changed=true;
}

bool Tank::isEmpty(){
  return full_level<=0;
}

bool Tank::isChanged(){
  return changed;
}

void Tank::paint(VideoManager * vm){
  int f=(int)((float)TankHeight*(float)full_level/(float)Capacity);
  Image * ima;

  // Borra
  vm->fillRect(x,y,TankWidth,TankHeight-f, 0,0,0,OPAQUE);
  //Dibuja el liquido
  vm->fillRect(x,y+TankHeight-f, TankWidth, f, 103,234,16,OPAQUE);
  //Pinta el frente
  ima=(vm->getImageManager())->getImage(new Str("tank.png"));
  vm->blit(ima,x,y);
  changed=false;
}

void Tank::tick(){
  state=(state+1)%MAX_STATE;
}