126 lines
3.9 KiB
XML
Executable File
126 lines
3.9 KiB
XML
Executable File
// shrink_globals.sch
|
|
//Location of each piece of data within its byte
|
|
CONST_INT CONST_ShrinkBrokePos 5
|
|
CONST_INT CONST_ShrinkSexPos 11
|
|
|
|
//Based on number of bits used for each piece of data
|
|
CONST_INT CONST_ShrinkBrokeMask 3
|
|
CONST_INT CONST_ShrinkNarrativeMask 31
|
|
CONST_INT CONST_ShrinkOpenWorldMask 2047
|
|
CONST_INT CONST_ShrinkSexMask 4095
|
|
|
|
|
|
// ***MAP OF SAVED DATA***
|
|
//
|
|
// BYTE0
|
|
// Bits 0-4: Last played narrative conversation
|
|
// Bits 5-6: Last played "out of cash" conversation
|
|
//
|
|
// BYTE1
|
|
// Bits 0-10: Used open world conversations
|
|
// Bits 11-22: Used sex conversations
|
|
//
|
|
// Design changes have reduced the need for save data.
|
|
// Could be optimized to save a byte, but we're pretty close to ship so leaving as-is. -DJ 24 May 2013
|
|
|
|
|
|
// RL Game
|
|
//aproximate in game time 2sec = 1 minute
|
|
// 2min = 1 hour
|
|
// 48min = 1 day
|
|
// 96min = 2 day
|
|
|
|
CONST_INT SHRINK_SEX_MEMORY_TIME 96*60*1000 //Time to check to discard old time stamps.
|
|
CONST_INT SHRINK_VIOLENCE_MEMORY_TIME 96*60*1000 //Time to check to discard old time stamps.
|
|
CONST_INT SHRINK_VIOLENCE_VEH_KILLS_MEMORY_TIME 300000 //Time to check to discard old vehicle kills time stamps.
|
|
|
|
|
|
// The enumerated list of unique sessions.
|
|
ENUM SHRINK_SESSION
|
|
//SHRINKSESSION_INVALID,
|
|
SHRINKSESSION_OFFICE_CHAOS,
|
|
SHRINKSESSION_OFFICE_EVIL,
|
|
SHRINKSESSION_PHONE_NEGATIVITY,
|
|
SHRINKSESSION_PHONE_FUCKED_UP,
|
|
SHRINKSESSION_OFFICE_ABANDONMENT,
|
|
//SHRINKSESSION_OFFICE_COUPLES,
|
|
SHRINKSESSIONS
|
|
ENDENUM
|
|
|
|
|
|
STRUCT ShrinkDataSaved
|
|
INT iByte0
|
|
INT iByte1
|
|
ENDSTRUCT
|
|
|
|
|
|
FUNC INT SHRINK_GET_LAST_NARRATIVE(ShrinkDataSaved &thisShrinkData)
|
|
RETURN thisShrinkData.iByte0 & CONST_ShrinkNarrativeMask
|
|
ENDFUNC
|
|
|
|
PROC SHRINK_SET_LAST_NARRATIVE(ShrinkDataSaved &thisShrinkData, INT iNarrative)
|
|
IF iNarrative < 0 OR iNarrative > 12
|
|
EXIT
|
|
ENDIF
|
|
thisShrinkData.iByte0 -= thisShrinkData.iByte0 & CONST_ShrinkNarrativeMask
|
|
thisShrinkData.iByte0 = thisShrinkData.iByte0 | iNarrative
|
|
ENDPROC
|
|
|
|
FUNC INT SHRINK_GET_LAST_BROKE_CONV(ShrinkDataSaved &thisShrinkData)
|
|
RETURN SHIFT_RIGHT(thisShrinkData.iByte0, CONST_ShrinkBrokePos) & CONST_ShrinkBrokeMask
|
|
ENDFUNC
|
|
|
|
PROC SHRINK_SET_LAST_BROKE_CONV(ShrinkDataSaved &thisShrinkData, INT iBroke)
|
|
IF iBroke < 0 OR iBroke > 3
|
|
EXIT
|
|
ENDIF
|
|
thisShrinkData.iByte0 -= thisShrinkData.iByte0 & SHIFT_LEFT(CONST_ShrinkBrokeMask, CONST_ShrinkBrokePos)
|
|
thisShrinkData.iByte0 = thisShrinkData.iByte0 | SHIFT_LEFT(iBroke, CONST_ShrinkBrokePos)
|
|
ENDPROC
|
|
|
|
FUNC BOOL SHRINK_IS_OPEN_WORLD_RESPONSE_USED(ShrinkDataSaved &thisShrinkData, INT iResponse)
|
|
IF iResponse < 0 OR iResponse > 11
|
|
RETURN FALSE
|
|
ENDIF
|
|
RETURN IS_BIT_SET(thisShrinkData.iByte1, iResponse)
|
|
ENDFUNC
|
|
|
|
PROC SHRINK_SET_OPEN_WORLD_RESPONSE_USED(ShrinkDataSaved &thisShrinkData, INT iResponse, BOOL bUsed)
|
|
IF iResponse < 0 OR iResponse > 11
|
|
EXIT
|
|
ENDIF
|
|
IF bUsed
|
|
SET_BIT(thisShrinkData.iByte1, iResponse)
|
|
ELSE
|
|
CLEAR_BIT(thisShrinkData.iByte1, iResponse)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SHRINK_CLEAR_OPEN_WORLD_RESPONSES(ShrinkDataSaved &thisShrinkData)
|
|
thisShrinkData.iByte1 -= thisShrinkData.iByte1 & CONST_ShrinkOpenWorldMask
|
|
ENDPROC
|
|
|
|
FUNC BOOL SHRINK_IS_SEX_RESPONSE_USED(ShrinkDataSaved &thisShrinkData, INT iResponse)
|
|
IF iResponse < 0 OR iResponse > 12
|
|
RETURN FALSE
|
|
ENDIF
|
|
iResponse += CONST_ShrinkSexPos
|
|
RETURN IS_BIT_SET(thisShrinkData.iByte1, iResponse)
|
|
ENDFUNC
|
|
|
|
PROC SHRINK_SET_SEX_RESPONSE_USED(ShrinkDataSaved &thisShrinkData, INT iResponse, BOOL bUsed)
|
|
IF iResponse < 0 OR iResponse > 12
|
|
EXIT
|
|
ENDIF
|
|
iResponse += CONST_ShrinkSexPos
|
|
IF bUsed
|
|
SET_BIT(thisShrinkData.iByte1, iResponse)
|
|
ELSE
|
|
CLEAR_BIT(thisShrinkData.iByte1, iResponse)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SHRINK_CLEAR_SEX_RESPONSES(ShrinkDataSaved &thisShrinkData)
|
|
thisShrinkData.iByte1 -= thisShrinkData.iByte1 & SHIFT_LEFT(CONST_ShrinkSexMask, CONST_ShrinkSexPos)
|
|
ENDPROC
|