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 "CScriptMailbox.hpp"
|
||||||
|
#include "CStateManager.hpp"
|
||||||
|
|
||||||
namespace urde
|
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__
|
#ifndef __PSHAG_CSCRIPTMAILBOX_HPP__
|
||||||
#define __PSHAG_CSCRIPTMAILBOX_HPP__
|
#define __PSHAG_CSCRIPTMAILBOX_HPP__
|
||||||
|
|
||||||
|
#include "IOStreams.hpp"
|
||||||
|
#include "ScriptObjectSupport.hpp"
|
||||||
|
#include "RetroTypes.hpp"
|
||||||
|
|
||||||
namespace urde
|
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
|
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
|
enum class EScriptObjectState
|
||||||
{
|
{
|
||||||
|
Any = -1,
|
||||||
Active,
|
Active,
|
||||||
Arrived,
|
Arrived,
|
||||||
Closed,
|
Closed,
|
||||||
|
|
Loading…
Reference in New Issue