1 #include "missileWeaponData.h"
2 
3 MissileWeaponData missile_data[MW_Count] =
4 {
5     //                speed, turnrate, lifetime, color, homing_range
6     MissileWeaponData(200.0f, 10.f, 27.0f, sf::Color(255, 200, 0), 1200.0, "sfx/rlaunch.wav"),/*MW_Homing*/
7     MissileWeaponData(200.0f, 10.f, 27.0f, sf::Color(255, 100, 32), 500.0, "sfx/rlaunch.wav"),/*MW_Nuke*/
8     MissileWeaponData(100.0f,  0.f, 10.0f, sf::Color(255, 255, 255), 0.0, "missile_launch.wav"),/*MW_Mine, lifetime is used at time which the mine is ejecting from the ship*/
9     MissileWeaponData(200.0f, 10.f, 27.0f, sf::Color(100, 32, 255), 500.0, "sfx/rlaunch.wav"),/*MW_EMP*/
10     MissileWeaponData(500.0f,  0.f, 13.5f, sf::Color(200, 200, 200), 0.0, "sfx/hvli_fire.wav"),/*MW_HVLI*/
11 };
12 
MissileWeaponData(float speed,float turnrate,float lifetime,sf::Color color,float homing_range,string fire_sound)13 MissileWeaponData::MissileWeaponData(float speed, float turnrate, float lifetime, sf::Color color, float homing_range, string fire_sound)
14 : speed(speed), turnrate(turnrate), lifetime(lifetime), color(color), homing_range(homing_range), fire_sound(fire_sound)
15 {
16 }
17 
getDataFor(EMissileWeapons type)18 const MissileWeaponData& MissileWeaponData::getDataFor(EMissileWeapons type)
19 {
20     if (type == MW_None)
21         return missile_data[0];
22     return missile_data[type];
23 }
24 
getMissileSizeString(EMissileSizes size)25 string getMissileSizeString(EMissileSizes size)
26 {
27     switch (size)
28     {
29         case MS_Small:
30             return "small";
31         case MS_Medium:
32             return "medium";
33         case MS_Large:
34             return "large";
35         default:
36             return "unknown size:" + size;
37     }
38 }
39 
convertSizeToCategoryModifier(EMissileSizes size)40 const float MissileWeaponData::convertSizeToCategoryModifier(EMissileSizes size)
41 {
42     switch(size)
43     {
44         case MS_Small:
45             return 0.5;
46         case MS_Medium:
47             return 1.0;
48         case MS_Large:
49             return 2.0;
50         default:
51             return 1.0;
52     }
53 }
54 
convertCategoryModifierToSize(float size)55 const EMissileSizes MissileWeaponData::convertCategoryModifierToSize(float size)
56 {
57     if (std::abs(size - 0.5) < 0.1)
58         return MS_Small;
59     if (std::abs(size - 1.0) < 0.1)
60         return MS_Medium;
61     if (std::abs(size - 2.0) < 0.1)
62         return MS_Large;
63     return MS_Medium;
64 }
65 
66 #include "missileWeaponData.hpp"
67