mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-30 06:37:57 +03:00
Hard reset
This commit is contained in:
commit
09bed43f97
1594 changed files with 892326 additions and 0 deletions
183
code/game/ammo.cpp
Normal file
183
code/game/ammo.cpp
Normal file
|
@ -0,0 +1,183 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
OpenMoHAA source code 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.
|
||||
|
||||
OpenMoHAA source code 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 OpenMoHAA source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
// ammo.cpp: Base class for all ammunition for entities derived from the Weapon class.
|
||||
//
|
||||
// AmmoEntity is the Class which represents ammo that the player "sees" and "
|
||||
// picks up" in the game
|
||||
//
|
||||
// Ammo is the Class which is used to keep track of how much ammo a player has
|
||||
// in his inventory
|
||||
|
||||
#include "ammo.h"
|
||||
#include "player.h"
|
||||
|
||||
CLASS_DECLARATION( Item, AmmoEntity, NULL )
|
||||
{
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
AmmoEntity::AmmoEntity
|
||||
(
|
||||
)
|
||||
|
||||
{
|
||||
if ( LoadingSavegame )
|
||||
{
|
||||
// all data will be setup by the archive function
|
||||
return;
|
||||
}
|
||||
setName( "UnknownAmmo" );
|
||||
amount = 0;
|
||||
}
|
||||
|
||||
Item *AmmoEntity::ItemPickup
|
||||
(
|
||||
Entity *other,
|
||||
qboolean add_to_inventory
|
||||
)
|
||||
|
||||
{
|
||||
Sentient *player;
|
||||
str realname;
|
||||
AliasListNode_t *ret;
|
||||
|
||||
if ( !other->isSubclassOf( Player ) )
|
||||
return NULL;
|
||||
|
||||
player = ( Sentient * )other;
|
||||
|
||||
// Play pickup sound
|
||||
realname = GetRandomAlias( "snd_pickup", &ret );
|
||||
if ( realname.length() > 1 )
|
||||
player->Sound( realname, CHAN_ITEM );
|
||||
|
||||
// Cancel some events
|
||||
CancelEventsOfType( EV_Item_DropToFloor );
|
||||
CancelEventsOfType( EV_Item_Respawn );
|
||||
CancelEventsOfType( EV_FadeOut );
|
||||
|
||||
// Hide the model
|
||||
setSolidType( SOLID_NOT );
|
||||
hideModel();
|
||||
|
||||
// Respawn?
|
||||
if ( !Respawnable() )
|
||||
PostEvent( EV_Remove, FRAMETIME );
|
||||
else
|
||||
PostEvent( EV_Item_Respawn, RespawnTime() );
|
||||
|
||||
// Give the ammo to the player
|
||||
player->GiveAmmo( item_name, amount );
|
||||
return NULL; // This doesn't create any items
|
||||
}
|
||||
|
||||
|
||||
// This is the Class that is used to keep track of ammo in the player's inventory.
|
||||
// It is not an entit, just a name and an amount.
|
||||
|
||||
CLASS_DECLARATION( Class, Ammo, NULL )
|
||||
{
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
Ammo::Ammo
|
||||
(
|
||||
)
|
||||
|
||||
{
|
||||
if ( LoadingSavegame )
|
||||
{
|
||||
// all data will be setup by the archive function
|
||||
return;
|
||||
}
|
||||
setName( "UnknownAmmo" );
|
||||
setAmount( 0 );
|
||||
setMaxAmount( 100 );
|
||||
}
|
||||
|
||||
void Ammo::setAmount
|
||||
(
|
||||
int a
|
||||
)
|
||||
|
||||
{
|
||||
amount = a;
|
||||
|
||||
if ( ( maxamount > 0 ) && ( amount > maxamount ) )
|
||||
amount = maxamount;
|
||||
}
|
||||
|
||||
int Ammo::getAmount
|
||||
(
|
||||
void
|
||||
)
|
||||
|
||||
{
|
||||
return amount;
|
||||
}
|
||||
|
||||
void Ammo::setMaxAmount
|
||||
(
|
||||
int a
|
||||
)
|
||||
|
||||
{
|
||||
maxamount = a;
|
||||
}
|
||||
|
||||
int Ammo::getMaxAmount
|
||||
(
|
||||
void
|
||||
)
|
||||
|
||||
{
|
||||
return maxamount;
|
||||
}
|
||||
|
||||
void Ammo::setName
|
||||
(
|
||||
str n
|
||||
)
|
||||
|
||||
{
|
||||
name = n;
|
||||
name_index = gi.itemindex( name ) + CS_WEAPONS;
|
||||
}
|
||||
|
||||
str Ammo::getName
|
||||
(
|
||||
void
|
||||
)
|
||||
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
int Ammo::getIndex
|
||||
(
|
||||
void
|
||||
)
|
||||
|
||||
{
|
||||
return name_index;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue