1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#ifndef WEAPONDEFHANDLER_H
#define WEAPONDEFHANDLER_H
#include <string>
#include <map>
#include "Sim/Misc/CommonDefHandler.h"
#include "Sim/Misc/GuiSoundSet.h"
#include "WeaponDef.h"
#include "float3.h"
class LuaTable;
class CExplosionGenerator;
class CExplosionGeneratorHandler;
class CWeaponDefHandler : CommonDefHandler
{
public:
CWeaponDefHandler();
~CWeaponDefHandler();
const WeaponDef* GetWeapon(const std::string weaponname);
const WeaponDef* GetWeaponById(int weaponDefId);
void LoadSound(const LuaTable&, GuiSoundSet&, const std::string& name);
DamageArray DynamicDamages(DamageArray damages, float3 startPos,
float3 curPos, float range, float exp,
float damageMin, bool inverted);
public:
WeaponDef *weaponDefs;
std::map<std::string, int> weaponID;
int numWeaponDefs;
private:
void ParseWeapon(const LuaTable& wdTable, WeaponDef& wd);
float3 hs2rgb(float h, float s);
};
//not very sweet, but still better than replacing "const WeaponDef" _everywhere_
inline S3DModel* LoadModel(const WeaponDef* wdef)
{
return const_cast<WeaponDef*>(wdef)->LoadModel();
}
extern CWeaponDefHandler* weaponDefHandler;
#endif /* WEAPONDEFHANDLER_H */
|