2024-01-03 13:34:38 +00:00
|
|
|
#ifndef __PROPERTYBEHAVIOR__H__
|
|
|
|
#define __PROPERTYBEHAVIOR__H__
|
|
|
|
|
|
|
|
#include "State.h"
|
|
|
|
|
2024-05-18 09:05:55 +00:00
|
|
|
namespace tinyxml2 {
|
|
|
|
class XMLElement;
|
|
|
|
}
|
|
|
|
|
2024-01-03 13:34:38 +00:00
|
|
|
enum class BehaviorState : uint32_t;
|
|
|
|
|
|
|
|
class AMFArrayValue;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents the Entity of a Property Behavior and holds data associated with the behavior
|
|
|
|
*/
|
|
|
|
class PropertyBehavior {
|
|
|
|
public:
|
|
|
|
PropertyBehavior();
|
2024-02-18 06:38:26 +00:00
|
|
|
|
|
|
|
template <typename Msg>
|
2024-01-03 13:34:38 +00:00
|
|
|
void HandleMsg(Msg& msg);
|
|
|
|
|
|
|
|
// If the last edited state has no strips, this method will set the last edited state to the first state that has strips.
|
|
|
|
void VerifyLastEditedState();
|
|
|
|
void SendBehaviorListToClient(AMFArrayValue& args) const;
|
|
|
|
void SendBehaviorBlocksToClient(AMFArrayValue& args) const;
|
|
|
|
|
2024-02-18 06:38:26 +00:00
|
|
|
[[nodiscard]] int32_t GetBehaviorId() const noexcept { return m_BehaviorId; }
|
|
|
|
void SetBehaviorId(int32_t id) noexcept { m_BehaviorId = id; }
|
|
|
|
|
2024-05-18 09:05:55 +00:00
|
|
|
void Serialize(tinyxml2::XMLElement& behavior) const;
|
2024-01-03 13:34:38 +00:00
|
|
|
private:
|
|
|
|
|
|
|
|
// The states this behavior has.
|
|
|
|
std::map<BehaviorState, State> m_States;
|
|
|
|
|
|
|
|
// The name of this behavior.
|
|
|
|
std::string m_Name = "New Behavior";
|
|
|
|
|
|
|
|
// Whether this behavior is locked and cannot be edited.
|
|
|
|
bool isLocked = false;
|
|
|
|
|
|
|
|
// Whether this behavior is custom or pre-fab.
|
|
|
|
bool isLoot = false;
|
|
|
|
|
|
|
|
// The last state that was edited. This is used so when the client re-opens the behavior editor, it will open to the last edited state.
|
|
|
|
// If the last edited state has no strips, it will open to the first state that has strips.
|
|
|
|
BehaviorState m_LastEditedState;
|
|
|
|
|
|
|
|
// The behavior id for this behavior. This is expected to be fully unique, however an id of -1 means this behavior was just created
|
|
|
|
// and needs to be assigned an id.
|
|
|
|
int32_t m_BehaviorId = -1;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //!__PROPERTYBEHAVIOR__H__
|