mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Fix schedule compatibility between map versions 7 & 8
This commit is contained in:
@@ -489,6 +489,22 @@ SCHEDULENODE& SCHEDULENODE::operator=(const _OLD_SCHEDULENODE& src)
|
||||
return(*this);
|
||||
}
|
||||
|
||||
SCHEDULENODE& SCHEDULENODE::operator=(const _OLD_SCHEDULENODE_PRE_ITS& src)
|
||||
{
|
||||
if ((void*)this != (void*)&src)
|
||||
{
|
||||
next = NULL;
|
||||
TranslateArrayFields(usTime, src.usTime, OLD_MAX_SCHEDULE_ACTIONS, UINT16_UINT16);
|
||||
TranslateArrayFields(usData1, src.usData1, OLD_MAX_SCHEDULE_ACTIONS, UINT32_UINT32);
|
||||
TranslateArrayFields(usData2, src.usData2, OLD_MAX_SCHEDULE_ACTIONS, UINT32_UINT32);
|
||||
TranslateArrayFields(ubAction, src.ubAction, OLD_MAX_SCHEDULE_ACTIONS, UINT8_UINT8);
|
||||
ubScheduleID = src.ubScheduleID;
|
||||
ubSoldierID = static_cast<UINT16>(src.ubSoldierID);
|
||||
usFlags = src.usFlags;
|
||||
}
|
||||
return(*this);
|
||||
}
|
||||
|
||||
BOOLEAN SCHEDULENODE::Load(INT8** hBuffer, FLOAT dMajorMapVersion)
|
||||
{
|
||||
if (dMajorMapVersion < 7.0)
|
||||
@@ -497,6 +513,12 @@ BOOLEAN SCHEDULENODE::Load(INT8** hBuffer, FLOAT dMajorMapVersion)
|
||||
LOADDATA(&OldScheduleNode, *hBuffer, sizeof(_OLD_SCHEDULENODE));
|
||||
*this = OldScheduleNode;
|
||||
}
|
||||
else if (dMajorMapVersion < 8.0)
|
||||
{
|
||||
_OLD_SCHEDULENODE_PRE_ITS OldScheduleNode;
|
||||
LOADDATA(&OldScheduleNode, *hBuffer, sizeof(_OLD_SCHEDULENODE_PRE_ITS));
|
||||
*this = OldScheduleNode;
|
||||
}
|
||||
else
|
||||
LOADDATA(this, *hBuffer, sizeof(SCHEDULENODE));
|
||||
return(TRUE);
|
||||
|
||||
@@ -54,6 +54,18 @@ typedef struct _OLD_SCHEDULENODE
|
||||
UINT16 usFlags;
|
||||
}_OLD_SCHEDULENODE;
|
||||
|
||||
typedef struct _OLD_SCHEDULENODE_PRE_ITS
|
||||
{
|
||||
struct _OLD_SCHEDULENODE_PRE_ITS* next;
|
||||
UINT16 usTime[MAX_SCHEDULE_ACTIONS]; // Converted to minutes 12:30PM would be 12*60 + 30 = 750
|
||||
UINT32 usData1[MAX_SCHEDULE_ACTIONS]; // Typically the gridno, but depends on the action
|
||||
UINT32 usData2[MAX_SCHEDULE_ACTIONS]; // Secondary information, not used by most actions
|
||||
UINT8 ubAction[MAX_SCHEDULE_ACTIONS];
|
||||
UINT8 ubScheduleID;
|
||||
UINT8 ubSoldierID;
|
||||
UINT16 usFlags;
|
||||
}_OLD_SCHEDULENODE_PRE_ITS;
|
||||
|
||||
class SCHEDULENODE
|
||||
{
|
||||
public:
|
||||
@@ -67,6 +79,7 @@ public:
|
||||
UINT16 usFlags;
|
||||
public:
|
||||
SCHEDULENODE& operator=(const _OLD_SCHEDULENODE& src);
|
||||
SCHEDULENODE& operator=(const _OLD_SCHEDULENODE_PRE_ITS& src);
|
||||
BOOLEAN Load(INT8** hBuffer, FLOAT dMajorMapVersion);
|
||||
BOOLEAN Save(HWFILE hFile, FLOAT dMajorMapVersion, UINT8 ubMinorMapVersion);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user