1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-22 02:12:45 +01:00

Modernize ScanType enum

This commit is contained in:
Daniel Evans 2019-01-05 02:02:28 +00:00
parent f894718183
commit bdacc1137a
3 changed files with 20 additions and 16 deletions

View File

@ -568,7 +568,7 @@ void GameWorld::destroyEffect(VisualFX& effect) {
} }
void GameWorld::doWeaponScan(const WeaponScan& scan) { void GameWorld::doWeaponScan(const WeaponScan& scan) {
if (scan.type == WeaponScan::RADIUS) { if (scan.type == ScanType::Radius) {
HitTest test {*dynamicsWorld}; HitTest test {*dynamicsWorld};
const auto result = test.sphereTest(scan.center, scan.radius); const auto result = test.sphereTest(scan.center, scan.radius);
@ -584,7 +584,7 @@ void GameWorld::doWeaponScan(const WeaponScan& scan) {
target.object->takeDamage(di); target.object->takeDamage(di);
} }
} else if (scan.type == WeaponScan::HITSCAN) { } else if (scan.type == ScanType::HitScan) {
btVector3 from(scan.center.x, scan.center.y, scan.center.z), btVector3 from(scan.center.x, scan.center.y, scan.center.z),
to(scan.end.x, scan.end.y, scan.end.z); to(scan.end.x, scan.end.y, scan.end.z);
glm::vec3 hitEnd = scan.end; glm::vec3 hitEnd = scan.end;

View File

@ -1,22 +1,22 @@
#ifndef _RWENGINE_WEAPON_HPP_ #ifndef _RWENGINE_WEAPON_HPP_
#define _RWENGINE_WEAPON_HPP_ #define _RWENGINE_WEAPON_HPP_
#include <glm/glm.hpp> #include <glm/vec3.hpp>
class CharacterObject; class CharacterObject;
class GameObject; class GameObject;
struct WeaponData; struct WeaponData;
enum class ScanType {
/** Instant-hit ray weapons */
HitScan,
/** Area of effect attack */
Radius,
};
/** /**
* @brief simple object for performing weapon checks against the world * @brief simple object for performing weapon checks against the world
*/ */
struct WeaponScan { struct WeaponScan {
enum ScanType {
/** Instant-hit ray weapons */
HITSCAN,
/** Area of effect attack */
RADIUS,
};
const ScanType type; const ScanType type;
float damage; float damage;
@ -29,10 +29,10 @@ struct WeaponScan {
WeaponData* weapon; WeaponData* weapon;
GameObject* source; GameObject* source;
// Constructor for a RADIUS hitscan // Constructor for Radius
WeaponScan(float damage, const glm::vec3& center, float radius, WeaponScan(float damage, const glm::vec3& center, float radius,
WeaponData* weapon = nullptr, GameObject* source = nullptr) WeaponData* weapon = nullptr, GameObject* source = nullptr)
: type(RADIUS) : type(ScanType::Radius)
, damage(damage) , damage(damage)
, center(center) , center(center)
, radius(radius) , radius(radius)
@ -40,10 +40,10 @@ struct WeaponScan {
, source(source) { , source(source) {
} }
// Constructor for a ray hitscan // Constructor for HitScan
WeaponScan(float damage, const glm::vec3& start, const glm::vec3& end, WeaponScan(float damage, const glm::vec3& start, const glm::vec3& end,
WeaponData* weapon = nullptr, GameObject* source = nullptr) WeaponData* weapon = nullptr, GameObject* source = nullptr)
: type(HITSCAN) : type(ScanType::HitScan)
, damage(damage) , damage(damage)
, center(start) , center(start)
, end(end) , end(end)

View File

@ -5,16 +5,20 @@
#include <objects/ProjectileObject.hpp> #include <objects/ProjectileObject.hpp>
#include "test_Globals.hpp" #include "test_Globals.hpp"
auto& operator<<(std::ostream& s, const ScanType& type) {
return s << static_cast<int>(type);
}
BOOST_AUTO_TEST_SUITE(WeaponTests) BOOST_AUTO_TEST_SUITE(WeaponTests)
BOOST_AUTO_TEST_CASE(radius_ctor_creates_radius_scan) { BOOST_AUTO_TEST_CASE(radius_ctor_creates_radius_scan) {
WeaponScan scan{10.f, {1.f, 1.f, 1.f}, 5.f}; WeaponScan scan{10.f, {1.f, 1.f, 1.f}, 5.f};
BOOST_CHECK_EQUAL(scan.type, WeaponScan::RADIUS); BOOST_CHECK_EQUAL(scan.type, ScanType::Radius);
} }
BOOST_AUTO_TEST_CASE(hitscan_ctor_creates_radius_scan) { BOOST_AUTO_TEST_CASE(hitscan_ctor_creates_radius_scan) {
WeaponScan scan{10.f, {1.f, 1.f, 1.f}, {0.f, 0.f, 0.f}}; WeaponScan scan{10.f, {1.f, 1.f, 1.f}, {0.f, 0.f, 0.f}};
BOOST_CHECK_EQUAL(scan.type, WeaponScan::HITSCAN); BOOST_CHECK_EQUAL(scan.type, ScanType::HitScan);
} }
struct WeaponScanFixture { struct WeaponScanFixture {