mirror of https://github.com/AxioDL/metaforce.git
Initial ScriptMailbox imps
This commit is contained in:
parent
41f482daeb
commit
adda48a1bf
|
@ -1,6 +1,40 @@
|
|||
#include "CScriptMailbox.hpp"
|
||||
#include "CStateManager.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
CScriptMailbox::CScriptMailbox(CBitStreamReader&)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptMailbox::AddMsg(TEditorId id, EScriptObjectMessage msg, bool flag)
|
||||
{
|
||||
/* TODO: Verify this behavior */
|
||||
CMailMessage mail{id, msg, flag};
|
||||
auto it = std::find(x0_messages.begin(), x0_messages.end(), mail);
|
||||
|
||||
if (it != x0_messages.end())
|
||||
*it = mail;
|
||||
else
|
||||
x0_messages.push_back(mail);
|
||||
}
|
||||
|
||||
void CScriptMailbox::RemoveMsg(TEditorId id, EScriptObjectMessage msg, bool flag)
|
||||
{
|
||||
CMailMessage mail{id, msg, flag};
|
||||
auto it = std::find(x0_messages.begin(), x0_messages.end(), mail);
|
||||
if (it != x0_messages.end())
|
||||
x0_messages.erase(it);
|
||||
}
|
||||
|
||||
void CScriptMailbox::SendMsgs(const TAreaId& areaId, CStateManager& stateMgr)
|
||||
{
|
||||
}
|
||||
|
||||
void CScriptMailbox::PutTo(CBitStreamWriter&)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,11 +1,36 @@
|
|||
#ifndef __PSHAG_CSCRIPTMAILBOX_HPP__
|
||||
#define __PSHAG_CSCRIPTMAILBOX_HPP__
|
||||
|
||||
#include "IOStreams.hpp"
|
||||
#include "ScriptObjectSupport.hpp"
|
||||
#include "RetroTypes.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
class CStateManager;
|
||||
struct CMailMessage
|
||||
{
|
||||
TEditorId x0_id;
|
||||
EScriptObjectMessage x4_msg;
|
||||
bool x8_;
|
||||
CMailMessage(TEditorId id, EScriptObjectMessage msg, bool flag) : x0_id(id), x4_msg(msg), x8_(flag) {}
|
||||
CMailMessage(const CMailMessage& other) : x0_id(other.x0_id), x4_msg(other.x4_msg), x8_(other.x8_) {}
|
||||
|
||||
bool operator==(const CMailMessage& other) const
|
||||
{ return (x0_id == other.x0_id && x4_msg == other.x4_msg); }
|
||||
};
|
||||
|
||||
class CScriptMailbox
|
||||
{
|
||||
rstl::reserved_vector<CMailMessage, 1024> x0_messages;
|
||||
public:
|
||||
CScriptMailbox() = default;
|
||||
CScriptMailbox(CBitStreamReader&);
|
||||
|
||||
void AddMsg(TEditorId, EScriptObjectMessage, bool);
|
||||
void RemoveMsg(TEditorId, EScriptObjectMessage, bool);
|
||||
void SendScriptMsgs(const TAreaId&, CStateManager&);
|
||||
void PutTo(CBitStreamWriter&);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ namespace urde
|
|||
|
||||
enum class EScriptObjectState
|
||||
{
|
||||
Any = -1,
|
||||
Active,
|
||||
Arrived,
|
||||
Closed,
|
||||
|
|
Loading…
Reference in New Issue