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,14 +489,36 @@ SCHEDULENODE& SCHEDULENODE::operator=(const _OLD_SCHEDULENODE& src)
|
|||||||
return(*this);
|
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)
|
BOOLEAN SCHEDULENODE::Load(INT8** hBuffer, FLOAT dMajorMapVersion)
|
||||||
{
|
{
|
||||||
if(dMajorMapVersion < 7.0)
|
if (dMajorMapVersion < 7.0)
|
||||||
{
|
{
|
||||||
_OLD_SCHEDULENODE OldScheduleNode;
|
_OLD_SCHEDULENODE OldScheduleNode;
|
||||||
LOADDATA(&OldScheduleNode, *hBuffer, sizeof(_OLD_SCHEDULENODE));
|
LOADDATA(&OldScheduleNode, *hBuffer, sizeof(_OLD_SCHEDULENODE));
|
||||||
*this = OldScheduleNode;
|
*this = OldScheduleNode;
|
||||||
}
|
}
|
||||||
|
else if (dMajorMapVersion < 8.0)
|
||||||
|
{
|
||||||
|
_OLD_SCHEDULENODE_PRE_ITS OldScheduleNode;
|
||||||
|
LOADDATA(&OldScheduleNode, *hBuffer, sizeof(_OLD_SCHEDULENODE_PRE_ITS));
|
||||||
|
*this = OldScheduleNode;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
LOADDATA(this, *hBuffer, sizeof(SCHEDULENODE));
|
LOADDATA(this, *hBuffer, sizeof(SCHEDULENODE));
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
|
|||||||
@@ -54,6 +54,18 @@ typedef struct _OLD_SCHEDULENODE
|
|||||||
UINT16 usFlags;
|
UINT16 usFlags;
|
||||||
}_OLD_SCHEDULENODE;
|
}_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
|
class SCHEDULENODE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -67,6 +79,7 @@ public:
|
|||||||
UINT16 usFlags;
|
UINT16 usFlags;
|
||||||
public:
|
public:
|
||||||
SCHEDULENODE& operator=(const _OLD_SCHEDULENODE& src);
|
SCHEDULENODE& operator=(const _OLD_SCHEDULENODE& src);
|
||||||
|
SCHEDULENODE& operator=(const _OLD_SCHEDULENODE_PRE_ITS& src);
|
||||||
BOOLEAN Load(INT8** hBuffer, FLOAT dMajorMapVersion);
|
BOOLEAN Load(INT8** hBuffer, FLOAT dMajorMapVersion);
|
||||||
BOOLEAN Save(HWFILE hFile, FLOAT dMajorMapVersion, UINT8 ubMinorMapVersion);
|
BOOLEAN Save(HWFILE hFile, FLOAT dMajorMapVersion, UINT8 ubMinorMapVersion);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user