Aschbourne_PRC8/_module/nss/mk_inc_array.nss
GetOffMyYarn 69879d6957 Areas and Fixes
Added CCOH and missing areas
Changed some areas to be craftable,
Fixed some on death issues,
Fixed the Gaurd
2024-08-30 11:38:44 -04:00

233 lines
7.3 KiB
Plaintext

// mk_inc_array
#include "mk_inc_tools"
///////////////////////////////////////////////////////////////////////////////
// General functions
// Returns the buffer for the specified array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// * return value: buffer of specified array
string MK_ARRAY_GetLocalArrayBuffer(object oObject, string sArrayName);
// Sets the buffer for the specified array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// - sBuffer: buffer the specified array should use.
// sBuffer is supposed to contain only '0' and '1'.
void MK_ARRAY_SetLocalArrayBuffer(object oObject, string sArrayName, string sBuffer);
// Deletes an array
// - oObject: object the array is stored on
// - sArrayName: name of the array
void MK_ARRAY_DeleteLocalArray(object oObject, string sArrayName);
///////////////////////////////////////////////////////////////////////////
// Sorted Int Array:
// Appends a new element to the end of an array
// - oObject: object to store the array on
// - sArrayName: name of the array
// - nValue: element to be appended
// The element is appended regardless of its value
void MK_ARRAY_AppendLocalArraySortedInt(object oObject, string sArrayName, int nValue);
// returns the length/size of the specified array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// * returns the length/size of the specified array (the number of elements)
int MK_ARRAY_GetLocalArraySortedIntLength(object oObject, string sArrayName);
// returns element at specified position of an sorted int array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// - nPos: position in the array the value should be retrieved from
// * returns the value stored at position nPos
int MK_ARRAY_GetLocalArraySortedInt(object oObject, string sArrayName, int nPos);
// returns the position of an integer in a sorted int array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// - nValue: value to be searched
// * returns position of specified element or -1 if the element is not found
int MK_ARRAY_SearchLocalArraySortedInt(object oObject, string sArrayName, int nValue);
///////////////////////////////////////////////////////////////////////////
// Bool Array:
// Simulates storing a boolean value in an array
// - oObject: object to store the array on
// - sArrayName: name of the array
// - nPos: position/index within the array to store the value in
// - bValue: the (boolean) value (TRUE/FALSE) to store in the array
void MK_ARRAY_SetLocalArrayBool(object oObject, string sArrayName, int nPos, int bValue);
// Simulates retrieving a boolean value from an array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// - nPos: the position/index in the array the value should be retrieved from
// * return value: returns the value found at position/index nPos
int MK_ARRAY_GetLocalArrayBool(object oObject, string sArrayName, int nPos);
// Returns the size/length of an array
// - oObject: object the array is stored on
// - sArrayName: name of the array
// * return value: size/length of an array
int MK_ARRAY_GetLocalArrayBoolLength(object oObject, string sArrayName);
///////////////////////////////////////////////////////////////////////////////
// General functions
string MK_ARRAY_GetLocalArrayBuffer(object oObject, string sArrayName)
{
return GetLocalString(oObject, sArrayName);
}
void MK_ARRAY_SetLocalArrayBuffer(object oObject, string sArrayName, string sBuffer)
{
SetLocalString(oObject, sArrayName, sBuffer);
}
void MK_ARRAY_DeleteLocalArray(object oObject, string sArrayName)
{
DeleteLocalString(oObject, sArrayName);
}
///////////////////////////////////////////////////////////////////////////////
// Sorted Int Array:
const int MK_ARRAY_INTEGER_SIZE = 4;
string MK_ARRAY_LocalArraySortedInt_IntToString(int nValue)
{
return MK_IntToString(nValue, MK_ARRAY_INTEGER_SIZE, " ");
}
void MK_ARRAY_AppendLocalArraySortedInt(object oObject, string sArrayName, int nValue)
{
string sBuffer = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
sBuffer += MK_ARRAY_LocalArraySortedInt_IntToString(nValue);
MK_ARRAY_SetLocalArrayBuffer(oObject, sArrayName, sBuffer);
}
int MK_ARRAY_GetLocalArraySortedIntLength(object oObject, string sArrayName)
{
string sBuffer = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
int nLen = GetStringLength(sBuffer) / MK_ARRAY_INTEGER_SIZE;
return nLen;
}
int MK_ARRAY_GetLocalArraySortedInt(object oObject, string sArrayName, int nPos)
{
string sBuffer = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
string sValue = GetSubString(sBuffer, nPos*MK_ARRAY_INTEGER_SIZE, MK_ARRAY_INTEGER_SIZE);
return StringToInt(sValue);
}
int MK_ARRAY_SearchLocalArraySortedInt(object oObject, string sArrayName, int nValue)
{
string sBuffer = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
int nPos, nPos0=0, nPos1=GetStringLength(sBuffer) / MK_ARRAY_INTEGER_SIZE;
int nValueQ;
while (nPos0<=nPos1)
{
nPos = (nPos0 + nPos1) / 2;
nValueQ = StringToInt(GetSubString(sBuffer, nPos*MK_ARRAY_INTEGER_SIZE, MK_ARRAY_INTEGER_SIZE));
if (nValue<nValueQ)
{
nPos1 = nPos-1;
}
else if (nValue>nValueQ)
{
nPos0 = nPos+1;
}
else
{
return nPos;
}
}
return -1;
}
///////////////////////////////////////////////////////////////////////////////
// Bool Array:
int MK_ARRAY_GetLocalArrayBool(object oObject, string sArrayName, int nPos)
{
string sArray = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
return (GetSubString(sArray, nPos, 1)=="1");
}
int MK_ARRAY_GetLocalArrayBoolLength(object oObject, string sArrayName)
{
string sArray = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
return GetStringLength(sArray);
}
int MK_ARRAY_GetIsLocalArrayBoolEqual(object oObject, string sArrayName, int bValue)
{
string sArray = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
// MK_DEBUG_TRACE("MK_ARRAY_GetIsLocalArrayBoolEqual: '"+sArray+"'");
int iPos;
int nLength=GetStringLength(sArray);
string sValue = (bValue ? "1" : "0");
for (iPos=0; iPos<nLength; iPos++)
{
if (GetSubString(sArray, iPos, 1)!=sValue)
{
return FALSE;
}
}
return TRUE;
}
void MK_ARRAY_InitializeLocalArrayBool(object oObject, string sArrayName, int nSize, int bValue)
{
int iPos;
string sArray="";
string sValue = ( bValue ? "1" : "0" );
for (iPos=0; iPos<nSize; iPos++)
{
sArray += sValue;
}
MK_ARRAY_SetLocalArrayBuffer(oObject, sArrayName, sArray);
}
void MK_ARRAY_SetLocalArrayBool(object oObject, string sArrayName, int nPos, int bValue)
{
string sArray = MK_ARRAY_GetLocalArrayBuffer(oObject, sArrayName);
int nLength = GetStringLength(sArray);
while (nLength < nPos+1)
{
sArray+="0";
nLength++;
}
string sPrefix="", sPostfix="";
if (nPos>0)
{
sPrefix = GetStringLeft(sArray, nPos);
}
if (nPos+1 < nLength)
{
sPostfix = GetStringRight(sArray, (nLength-(nPos+1)));
}
sArray = sPrefix + (bValue ? "1" : "0") + sPostfix;
MK_ARRAY_SetLocalArrayBuffer(oObject, sArrayName, sArray);
}
/*
void main()
{
}
/**/