Source code for weapons.engines.csgo.csgo
# ../weapons/engines/csgo/csgo.py
"""Provides CS:GO game specific weapon functionality."""
# =============================================================================
# >> IMPORTS
# =============================================================================
# Source.Python
from . import Weapon as _Weapon
from weapons.manager import weapon_manager
# =============================================================================
# >> GLOBAL VARIABLES
# =============================================================================
_item_definition_indexes = {
values.get('item_definition_index'): weapon_manager[weapon].name
for weapon, values in weapon_manager.ini['weapons'].items()
if values.get('item_definition_index')
}
# =============================================================================
# >> CLASSES
# =============================================================================
[docs]class Weapon(_Weapon):
"""Allows easy usage of the weapon's attributes."""
# Instances of this class will be cached by default
caching = True
[docs] def get_ammo(self):
"""Return the amount of ammo the player has for the weapon.
:rtype: int
"""
# Is the weapon not a grenade?
if 'grenade' not in weapon_manager[self.classname].tags:
return self.primary_ammo_count
player = self._validate_ammo()
return player.get_property_ushort(
'{base}{prop:03d}'.format(
base=weapon_manager.ammoprop,
prop=self.ammoprop,
)
)
[docs] def set_ammo(self, value):
"""Set the player's ammo property for the weapon."""
# Is the weapon not a grenade?
if 'grenade' not in weapon_manager[self.classname].tags:
self.primary_ammo_count = value
return
player = self._validate_ammo()
player.set_property_ushort(
'{base}{prop:03d}'.format(
base=weapon_manager.ammoprop,
prop=self.ammoprop,
),
value,
)
# Set the "ammo" property methods
ammo = property(
get_ammo, set_ammo,
doc="""Property to get/set the weapon's ammo.""")
@property
def weapon_name(self):
"""Return the full class name of the weapon.
:rtype: str
"""
return _item_definition_indexes.get(
self.item_definition_index,
self.classname,
)