mirror of
https://github.com/whoahq/whoa.git
synced 2026-03-18 05:31:07 +03:00
feat(object): add IncTypeID
This commit is contained in:
parent
2695b584fd
commit
68ab5ccced
63
src/object/client/Utils.cpp
Normal file
63
src/object/client/Utils.cpp
Normal file
@ -0,0 +1,63 @@
|
||||
#include "object/client/Utils.hpp"
|
||||
|
||||
/**
|
||||
* Accounting for the full hierarchy of the given object, return the next inherited type ID after
|
||||
* the given current type ID. If there is no next inherited type, return NUM_CLIENT_OBJECT_TYPES
|
||||
* to indicate the end of the hierarchy.
|
||||
*/
|
||||
OBJECT_TYPE_ID IncTypeID(CGObject_C* object, OBJECT_TYPE_ID curTypeID) {
|
||||
switch (object->m_obj->m_type) {
|
||||
// ID_OBJECT -> ID_ITEM -> ID_CONTAINER
|
||||
case HIER_TYPE_ITEM:
|
||||
case HIER_TYPE_CONTAINER:
|
||||
if (curTypeID == ID_OBJECT) {
|
||||
return ID_ITEM;
|
||||
}
|
||||
|
||||
if (curTypeID == ID_ITEM) {
|
||||
return ID_CONTAINER;
|
||||
}
|
||||
|
||||
return NUM_CLIENT_OBJECT_TYPES;
|
||||
|
||||
// ID_OBJECT -> ID_UNIT -> ID_PLAYER
|
||||
case HIER_TYPE_UNIT:
|
||||
case HIER_TYPE_PLAYER:
|
||||
if (curTypeID == ID_OBJECT) {
|
||||
return ID_UNIT;
|
||||
}
|
||||
|
||||
if (curTypeID == ID_UNIT) {
|
||||
return ID_PLAYER;
|
||||
}
|
||||
|
||||
return NUM_CLIENT_OBJECT_TYPES;
|
||||
|
||||
// ID_OBJECT -> ID_GAMEOBJECT
|
||||
case HIER_TYPE_GAMEOBJECT:
|
||||
if (curTypeID == ID_OBJECT) {
|
||||
return ID_GAMEOBJECT;
|
||||
}
|
||||
|
||||
return NUM_CLIENT_OBJECT_TYPES;
|
||||
|
||||
// ID_OBJECT -> ID_DYNAMICOBJECT
|
||||
case HIER_TYPE_DYNAMICOBJECT:
|
||||
if (curTypeID == ID_OBJECT) {
|
||||
return ID_DYNAMICOBJECT;
|
||||
}
|
||||
|
||||
return NUM_CLIENT_OBJECT_TYPES;
|
||||
|
||||
// ID_OBJECT -> ID_CORPSE
|
||||
case HIER_TYPE_CORPSE:
|
||||
if (curTypeID == ID_OBJECT) {
|
||||
return ID_CORPSE;
|
||||
}
|
||||
|
||||
return NUM_CLIENT_OBJECT_TYPES;
|
||||
|
||||
default:
|
||||
return NUM_CLIENT_OBJECT_TYPES;
|
||||
}
|
||||
}
|
||||
9
src/object/client/Utils.hpp
Normal file
9
src/object/client/Utils.hpp
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef OBJECT_CLIENT_UTILS_HPP
|
||||
#define OBJECT_CLIENT_UTILS_HPP
|
||||
|
||||
#include "object/client/CGObject_C.hpp"
|
||||
#include "object/Types.hpp"
|
||||
|
||||
OBJECT_TYPE_ID IncTypeID(CGObject_C* object, OBJECT_TYPE_ID curTypeID);
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user