Implemented entity.GetType() in lua

This will only work for userdata decented from the Entity base class.
Using something else results in undefined behavior.
This commit is contained in:
Kayne Ruse
2015-03-09 09:04:12 +11:00
parent 501b1e9814
commit decc77e21c
8 changed files with 46 additions and 12 deletions
+4
View File
@@ -21,6 +21,10 @@
*/
#include "character_data.hpp"
CharacterData::CharacterData(): Entity("character") {
//EMPTY
}
int CharacterData::GetOwner() {
return owner;
}
+2 -2
View File
@@ -32,7 +32,7 @@
class CharacterData: public Entity {
public:
CharacterData() = default;
CharacterData();
~CharacterData() = default;
//database stuff
@@ -43,7 +43,7 @@ public:
private:
friend class CharacterManager;
int owner;
int owner = -1;
std::string handle;
std::string avatar;
};
+8
View File
@@ -21,6 +21,10 @@
*/
#include "entity.hpp"
Entity::Entity(const char* _type): type(_type) {
//EMPTY
}
void Entity::Update() {
origin += motion;
}
@@ -55,4 +59,8 @@ Vector2 Entity::GetMotion() const {
BoundingBox Entity::GetBounds() const {
return bounds;
}
const char* Entity::GetType() const {
return type;
}
+9 -4
View File
@@ -25,6 +25,8 @@
#include "bounding_box.hpp"
#include "vector2.hpp"
#include <string>
//The base class for all objects in the world
class Entity {
public:
@@ -41,14 +43,17 @@ public:
Vector2 GetMotion() const;
BoundingBox GetBounds() const;
const char* GetType() const;
protected:
Entity() = default;
Entity(const char*);
virtual ~Entity() = default;
int roomIndex = -1;
Vector2 origin;
Vector2 motion;
BoundingBox bounds;
Vector2 origin = {0, 0};
Vector2 motion = {0, 0};
BoundingBox bounds = {0, 0, 0, 0};
const char* type;
};
#endif
+7
View File
@@ -82,6 +82,12 @@ static int getBounds(lua_State* L) {
return 4;
}
static int getType(lua_State* L) {
Entity* entity = static_cast<Entity*>(lua_touserdata(L, 1));
lua_pushstring(L, entity->GetType());
return 1;
}
static const luaL_Reg entityLib[] = {
{"SetRoomIndex", setRoomIndex},
{"SetOrigin", setOrigin},
@@ -91,6 +97,7 @@ static const luaL_Reg entityLib[] = {
{"GetOrigin", getOrigin},
{"GetMotion", getMotion},
{"GetBounds", getBounds},
{"GetType", getType},
{nullptr, nullptr}
};
+4
View File
@@ -21,6 +21,10 @@
*/
#include "monster_data.hpp"
MonsterData::MonsterData(): Entity("monster") {
//EMPTY
}
std::string MonsterData::SetAvatar(std::string s) {
return avatar = s;
}
+4 -2
View File
@@ -24,11 +24,13 @@
#include "entity.hpp"
#include "lua.hpp"
#include <string>
class MonsterData: public Entity {
public:
MonsterData() = default;
MonsterData();
~MonsterData() = default;
std::string SetAvatar(std::string);
@@ -41,7 +43,7 @@ private:
friend class MonsterManager;
std::string avatar;
int scriptRef;
int scriptRef = LUA_NOREF;
};
#endif