// ____ _ __ // / __ )____ _____ | | / /___ ___________ // / __ / __ \/ ___/ | | /| / / __ `/ ___/ ___/ // / /_/ / /_/ (__ ) | |/ |/ / /_/ / / (__ ) // /_____/\____/____/ |__/|__/\__,_/_/ /____/ // // A futuristic real-time strategy game. // This file is part of Bos Wars. // /**@name button_checks.cpp - The button checks. */ // // (c) Copyright 1999-2006 by Lutz Sammer, Vladi Belperchinov-Shabanski // // 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; only version 2 of the License. // // 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. // // $Id: button_checks.cpp 8768 2007-04-17 02:45:07Z jim4 $ //@{ /*---------------------------------------------------------------------------- -- Includes ----------------------------------------------------------------------------*/ #include #include #include #include "stratagus.h" #include "unittype.h" #include "upgrade.h" #include "interface.h" #include "network.h" #include "player.h" /*---------------------------------------------------------------------------- -- Functions ----------------------------------------------------------------------------*/ /** ** ButtonCheck for button enabled, always true. ** This needed to overwrite the internal tests. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. */ bool ButtonCheckTrue(const CUnit *unit, const ButtonAction *button) { return true; } /** ** Check for button enabled, always false. ** This needed to overwrite the internal tests. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. */ bool ButtonCheckFalse(const CUnit *unit, const ButtonAction *button) { return false; } /** ** Check for button enabled, if any unit is available. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. */ bool ButtonCheckUnitsOr(const CUnit *unit, const ButtonAction *button) { char *buf; CPlayer *player; player = unit->Player; buf = new_strdup(button->AllowStr.c_str()); for (const char *s = strtok(buf, ","); s; s = strtok(NULL, ",")) { if (player->HaveUnitTypeByIdent(s)) { delete[] buf; return true; } } delete[] buf; return false; } /** ** Check for button enabled, if all units are available. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. */ bool ButtonCheckUnitsAnd(const CUnit *unit, const ButtonAction *button) { char *buf; CPlayer *player; player = unit->Player; buf = new_strdup(button->AllowStr.c_str()); for (const char *s = strtok(buf, ","); s; s = strtok(NULL, ",")) { if (!player->HaveUnitTypeByIdent(s)) { delete[] buf; return false; } } delete[] buf; return true; } /** ** Check if network play is enabled. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. ** ** @note: this check could also be moved into intialisation. */ bool ButtonCheckNetwork(const CUnit *unit, const ButtonAction *button) { return IsNetworkGame(); } /** ** Check if network play is disabled. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if disabled. ** ** @note: this check could also be moved into intialisation. */ bool ButtonCheckNoNetwork(const CUnit *unit, const ButtonAction *button) { return !IsNetworkGame(); } /** ** Check for button enabled, if the unit isn't working. ** Working is training. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. */ bool ButtonCheckNoWork(const CUnit *unit, const ButtonAction *button) { return unit->Orders[0]->Action != UnitActionTrain; } /** ** Check if all requirements for an attack are met. ** ** @param unit Pointer to unit for button. ** @param button Pointer to button to check/enable. ** ** @return True if enabled. */ bool ButtonCheckAttack(const CUnit *unit, const ButtonAction *button) { return unit->Type->CanAttack; } //@}