/*
* OpenTyrian: A modern cross-platform port of Tyrian
* Copyright (C) 2007-2009 The OpenTyrian Development Team
*
* 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.
*/
#include "player.h"
Player player[2];
void calc_purple_balls_needed( Player *this_player )
{
static const uint purple_balls_required[12] = { 1, 1, 2, 4, 8, 12, 16, 20, 25, 30, 40, 50 };
this_player->purple_balls_needed = purple_balls_required[*this_player->lives];
}
bool power_up_weapon( Player *this_player, uint port )
{
const bool can_power_up = this_player->items.weapon[port].id != 0 && // not None
this_player->items.weapon[port].power < 11; // not at max power
if (can_power_up)
{
++this_player->items.weapon[port].power;
shotMultiPos[port] = 0; // TODO: should be part of Player structure
calc_purple_balls_needed(this_player);
}
else // cash consolation prize
{
this_player->cash += 1000;
}
return can_power_up;
}
void handle_got_purple_ball( Player *this_player )
{
if (this_player->purple_balls_needed > 1)
--this_player->purple_balls_needed;
else
power_up_weapon(this_player, this_player->is_dragonwing ? REAR_WEAPON : FRONT_WEAPON);
}