NSIO: Add SaveEntity/ReadEntity methods to help Save/Restore operations

This commit is contained in:
Marco Cawthorne 2022-08-05 21:36:47 -07:00
parent 6d8273331a
commit dd86e5a583
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
9 changed files with 76 additions and 59 deletions

View File

@ -56,7 +56,7 @@ class func_healthcharger:NSRenderableEntity
void
func_healthcharger::Save(float handle)
{
SaveFloat(handle, "user", num_for_edict(m_eUser));
SaveEntity(handle, "user", m_eUser);
SaveFloat(handle, "delay", m_flDelay);
SaveFloat(handle, "check", m_flCheck);
SaveString(handle, "snd_first", m_strSndFirst);
@ -70,7 +70,7 @@ func_healthcharger::Restore(string strKey, string strValue)
{
switch (strKey) {
case "user":
m_eUser = edict_num(ReadFloat(strValue));
m_eUser = ReadEntity(strValue);
break;
case "delay":
m_flDelay = ReadFloat(strValue);

View File

@ -49,8 +49,8 @@ class func_pushable:func_breakable
void
func_pushable::Save(float handle)
{
SaveFloat(handle, "puller", num_for_edict(m_pPuller));
SaveFloat(handle, "collbox", num_for_edict(m_eCollBox));
SaveEntity(handle, "puller", m_pPuller);
SaveEntity(handle, "collbox", m_eCollBox);
super::Save(handle);
}
@ -59,10 +59,10 @@ func_pushable::Restore(string strKey, string strValue)
{
switch (strKey) {
case "puller":
m_pPuller = edict_num(ReadFloat(strValue));
m_pPuller = ReadEntity(strValue);
break;
case "collbox":
m_eCollBox = edict_num(ReadFloat(strValue));
m_eCollBox = ReadEntity(strValue);
break;
default:
super::Restore(strKey, strValue);

View File

@ -56,7 +56,7 @@ class func_recharge:NSRenderableEntity
void
func_recharge::Save(float handle)
{
SaveFloat(handle, "user", num_for_edict(m_eUser));
SaveEntity(handle, "user", m_eUser);
SaveFloat(handle, "delay", m_flDelay);
SaveFloat(handle, "check", m_flCheck);
SaveString(handle, "snd_first", m_strSndFirst);
@ -70,7 +70,7 @@ func_recharge::Restore(string strKey, string strValue)
{
switch (strKey) {
case "user":
m_eUser = edict_num(ReadFloat(strValue));
m_eUser = ReadEntity(strValue);
break;
case "delay":
m_flDelay = ReadFloat(strValue);

View File

@ -53,7 +53,7 @@ class infodecal:NSPointTrigger
void
infodecal::Save(float handle)
{
SaveFloat(handle, "child", num_for_edict(m_decChild));
SaveEntity(handle, "child", m_decChild);
SaveString(handle, "texture", m_strTexture);
super::Save(handle);
}
@ -63,7 +63,7 @@ infodecal::Restore(string strKey, string strValue)
{
switch (strKey) {
case "child":
m_decChild = (decal)edict_num(ReadFloat(strValue));
m_decChild = (decal)ReadEntity(strValue);
break;
case "texture":
m_strTexture = ReadString(strValue);

View File

@ -73,7 +73,7 @@ NSMomentary::SetMoveState(int status)
void
NSMomentary::Save(float handle)
{
SaveFloat(handle, "user", num_for_edict(m_eUser));
SaveEntity(handle, "user", m_eUser);
SaveVector(handle, "move_dir", m_vecMoveDir);
SaveVector(handle, "pos1", m_vecPos1);
SaveVector(handle, "pos2", m_vecPos2);
@ -90,7 +90,7 @@ NSMomentary::Restore(string strKey, string strValue)
{
switch (strKey) {
case "user":
m_eUser = edict_num(ReadFloat(strValue));
m_eUser = ReadEntity(strValue);
break;
case "move_dir":
m_vecMoveDir = ReadVector(strValue);

View File

@ -49,7 +49,7 @@ void
multi_manager_sub::Save(float handle)
{
SaveInt(handle, "m_iValue", m_iValue);
SaveFloat(handle, "m_eActivator", num_for_edict(m_eActivator));
SaveEntity(handle, "m_eActivator", m_eActivator);
SaveFloat(handle, "m_flUntilTriggered", m_flUntilTriggered);
super::Save(handle);
}
@ -62,10 +62,7 @@ multi_manager_sub::Restore(string strKey, string strValue)
m_iValue = ReadInt(strValue);
break;
case "m_eActivator":
float num = ReadFloat(strValue);
if (num)
m_eActivator = edict_num(num);
m_eActivator = ReadEntity(strValue);
break;
case "m_flUntilTriggered":
m_flUntilTriggered = ReadFloat(strValue);
@ -105,22 +102,22 @@ multi_manager::Save(float handle)
SaveString(handle, "m_strBuffer", m_strBuffer);
SaveInt(handle, "m_iBusy", m_iBusy);
SaveInt(handle, "m_iValue", m_iValue);
SaveFloat(handle, "m_eTriggers_0", num_for_edict(m_eTriggers[0]));
SaveFloat(handle, "m_eTriggers_1", num_for_edict(m_eTriggers[1]));
SaveFloat(handle, "m_eTriggers_2", num_for_edict(m_eTriggers[2]));
SaveFloat(handle, "m_eTriggers_3", num_for_edict(m_eTriggers[3]));
SaveFloat(handle, "m_eTriggers_4", num_for_edict(m_eTriggers[4]));
SaveFloat(handle, "m_eTriggers_5", num_for_edict(m_eTriggers[5]));
SaveFloat(handle, "m_eTriggers_6", num_for_edict(m_eTriggers[6]));
SaveFloat(handle, "m_eTriggers_7", num_for_edict(m_eTriggers[7]));
SaveFloat(handle, "m_eTriggers_8", num_for_edict(m_eTriggers[8]));
SaveFloat(handle, "m_eTriggers_9", num_for_edict(m_eTriggers[9]));
SaveFloat(handle, "m_eTriggers_10", num_for_edict(m_eTriggers[10]));
SaveFloat(handle, "m_eTriggers_11", num_for_edict(m_eTriggers[11]));
SaveFloat(handle, "m_eTriggers_12", num_for_edict(m_eTriggers[12]));
SaveFloat(handle, "m_eTriggers_13", num_for_edict(m_eTriggers[13]));
SaveFloat(handle, "m_eTriggers_14", num_for_edict(m_eTriggers[14]));
SaveFloat(handle, "m_eTriggers_15", num_for_edict(m_eTriggers[15]));
SaveEntity(handle, "m_eTriggers_0", m_eTriggers[0]);
SaveEntity(handle, "m_eTriggers_1", m_eTriggers[1]);
SaveEntity(handle, "m_eTriggers_2", m_eTriggers[2]);
SaveEntity(handle, "m_eTriggers_3", m_eTriggers[3]);
SaveEntity(handle, "m_eTriggers_4", m_eTriggers[4]);
SaveEntity(handle, "m_eTriggers_5", m_eTriggers[5]);
SaveEntity(handle, "m_eTriggers_6", m_eTriggers[6]);
SaveEntity(handle, "m_eTriggers_7", m_eTriggers[7]);
SaveEntity(handle, "m_eTriggers_8", m_eTriggers[8]);
SaveEntity(handle, "m_eTriggers_9", m_eTriggers[9]);
SaveEntity(handle, "m_eTriggers_10", m_eTriggers[10]);
SaveEntity(handle, "m_eTriggers_11", m_eTriggers[11]);
SaveEntity(handle, "m_eTriggers_12", m_eTriggers[12]);
SaveEntity(handle, "m_eTriggers_13", m_eTriggers[13]);
SaveEntity(handle, "m_eTriggers_14", m_eTriggers[14]);
SaveEntity(handle, "m_eTriggers_15", m_eTriggers[15]);
super::Save(handle);
}
@ -129,61 +126,61 @@ multi_manager::Restore(string strKey, string strValue)
{
switch (strKey) {
case "m_strBuffer":
m_strBuffer = strValue;
m_strBuffer = ReadString(strValue);
break;
case "m_iBusy":
m_iBusy = stoi(strValue);
m_iBusy = ReadInt(strValue);
break;
case "m_iValue":
m_iValue = stoi(strValue);
m_iValue = ReadInt(strValue);
break;
case "m_eTriggers_0":
m_eTriggers[0] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[0] = ReadEntity(strValue);
break;
case "m_eTriggers_1":
m_eTriggers[1] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[1] = ReadEntity(strValue);
break;
case "m_eTriggers_2":
m_eTriggers[2] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[2] = ReadEntity(strValue);
break;
case "m_eTriggers_3":
m_eTriggers[3] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[3] = ReadEntity(strValue);
break;
case "m_eTriggers_4":
m_eTriggers[4] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[4] = ReadEntity(strValue);
break;
case "m_eTriggers_5":
m_eTriggers[5] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[5] = ReadEntity(strValue);
break;
case "m_eTriggers_6":
m_eTriggers[6] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[6] = ReadEntity(strValue);
break;
case "m_eTriggers_7":
m_eTriggers[7] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[7] = ReadEntity(strValue);
break;
case "m_eTriggers_8":
m_eTriggers[8] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[8] = ReadEntity(strValue);
break;
case "m_eTriggers_9":
m_eTriggers[9] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[9] = ReadEntity(strValue);
break;
case "m_eTriggers_10":
m_eTriggers[10] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[10] = ReadEntity(strValue);
break;
case "m_eTriggers_11":
m_eTriggers[11] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[11] = ReadEntity(strValue);
break;
case "m_eTriggers_12":
m_eTriggers[12] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[12] = ReadEntity(strValue);
break;
case "m_eTriggers_13":
m_eTriggers[13] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[13] = ReadEntity(strValue);
break;
case "m_eTriggers_14":
m_eTriggers[14] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[14] = ReadEntity(strValue);
break;
case "m_eTriggers_15":
m_eTriggers[15] = (multi_manager_sub)edict_num(stof(strValue));
m_eTriggers[15] = ReadEntity(strValue);
break;
default:
super::Restore(strKey, strValue);

View File

@ -102,7 +102,7 @@ trigger_changelevel::Save(float handle)
SaveString(handle, "map", m_strMap);
SaveString(handle, "landmark", m_strLandmark);
SaveString(handle, "OnLevelChange", m_strOnLevelChange);
SaveFloat(handle, "activator", num_for_edict(m_activator));
SaveEntity(handle, "activator", m_activator);
super::Save(handle);
}
@ -126,7 +126,7 @@ trigger_changelevel::Restore(string strKey, string strValue)
m_strOnLevelChange = ReadString(strValue);
break;
case "activator":
m_activator = edict_num(ReadFloat(strValue));
m_activator = ReadEntity(strValue);
break;
default:
super::Restore(strKey, strValue);

View File

@ -56,6 +56,7 @@ class NSIO
nonvirtual void(float, string, string) SaveString;
nonvirtual void(float, string, vector) SaveVector;
nonvirtual void(float, string, bool) SaveBool;
nonvirtual void(float, string, entity) SaveEntity;
/* load game */
nonvirtual float(string) ReadFloat;
@ -63,6 +64,7 @@ class NSIO
nonvirtual string(string) ReadString;
nonvirtual vector(string) ReadVector;
nonvirtual bool(string) ReadBool;
nonvirtual entity(string) ReadEntity;
/* Handle incoming entities input messaging */
virtual void(entity, string, string) Input;

View File

@ -165,31 +165,39 @@ void
NSIO::SaveBool(float handle, string key, bool value)
{
if (value)
fputs(handle, sprintf("%S \"%f\"\n", key, value));
fputs(handle, sprintf("%S \"%f\"\n", key, value));
}
void
NSIO::SaveFloat(float handle, string key, float value)
{
if (value)
fputs(handle, sprintf("%S \"%f\"\n", key, value));
fputs(handle, sprintf("%S \"%f\"\n", key, value));
}
void
NSIO::SaveInt(float handle, string key, int value)
{
if (value)
fputs(handle, sprintf("%S \"%i\"\n", key, value));
fputs(handle, sprintf("%S \"%i\"\n", key, value));
}
void
NSIO::SaveString(float handle, string key, string value)
{
if (value && value != "")
fputs(handle, sprintf("%S %S\n", key, value));
fputs(handle, sprintf("%S %S\n", key, value));
}
void
NSIO::SaveVector(float handle, string key, vector value)
{
if (value)
fputs(handle, sprintf("%S \"%v\"\n", key, value));
fputs(handle, sprintf("%S \"%v\"\n", key, value));
}
void
NSIO::SaveEntity(float handle, string key, entity targ)
{
float value = num_for_edict(targ);
if (value)
fputs(handle, sprintf("%S \"%f\"\n", key, value));
}
float
@ -227,7 +235,17 @@ NSIO::ReadVector(string strValue)
return stov(strValue);
return __NULL__;
}
entity
NSIO::ReadEntity(string strValue)
{
if (strValue && strValue != "") {
float num = stof(strValue);
if (num)
return edict_num(num);
}
return __NULL__;
}
void
NSIO::Save(float handle)