mirror of
https://github.com/dashr9230/SA-MP.git
synced 2024-12-22 14:37:29 +08:00
[saco] Implement and match all CConfig member functions
This commit is contained in:
parent
5177bdcb11
commit
d86fdfc4eb
460
saco/config.cpp
460
saco/config.cpp
@ -1,19 +1,24 @@
|
|||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
|
|
||||||
CConfig::CConfig(char* a2)
|
CConfig::CConfig(char* szFileName)
|
||||||
{
|
{
|
||||||
for(int i = 0; i != MAX_CONFIG_ENTRIES; i++) {
|
for(int i = 0; i != MAX_CONFIG_VARIABLES; i++)
|
||||||
memset(&field_0[i], 0, sizeof(UNNAMED_STRUCT_1));
|
{
|
||||||
field_7A00[i] = 0;
|
memset(&m_Variables[i], 0, sizeof(ConfigVariable_s));
|
||||||
|
m_bVariableSlotState[i] = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
field_8305 = 0;
|
m_iUpperIndex = 0;
|
||||||
|
|
||||||
if(a2 && strlen(a2)) {
|
if(szFileName && strlen(szFileName))
|
||||||
strcpy(field_8200, a2);
|
{
|
||||||
|
strcpy(m_szConfigFileName, szFileName);
|
||||||
|
|
||||||
ReadFile();
|
ReadFile();
|
||||||
}
|
}
|
||||||
@ -21,11 +26,369 @@ CConfig::CConfig(char* a2)
|
|||||||
|
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
|
|
||||||
void CConfig::AddConfigEntry(char * szName, char * szData)
|
CConfig::~CConfig()
|
||||||
{
|
{
|
||||||
// TODO: CConfig::AddConfigEntry 100661E0
|
int i = 0;
|
||||||
|
|
||||||
|
while(i != MAX_CONFIG_VARIABLES)
|
||||||
|
{
|
||||||
|
if(m_bVariableSlotState[i])
|
||||||
|
{
|
||||||
|
if(m_Variables[i].szVarValue)
|
||||||
|
free(m_Variables[i].szVarValue);
|
||||||
|
}
|
||||||
|
m_bVariableSlotState[i] = FALSE;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
void CConfig::RecalcSize()
|
||||||
|
{
|
||||||
|
int iNewIndex = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if(m_bVariableSlotState[i])
|
||||||
|
iNewIndex = i;
|
||||||
|
if(m_bVariableSlotState[i+1])
|
||||||
|
iNewIndex = i+1;
|
||||||
|
if(m_bVariableSlotState[i+2])
|
||||||
|
iNewIndex = i+2;
|
||||||
|
if(m_bVariableSlotState[i+3])
|
||||||
|
iNewIndex = i+3;
|
||||||
|
i += 4;
|
||||||
|
}
|
||||||
|
while(i < MAX_CONFIG_VARIABLES);
|
||||||
|
|
||||||
|
m_iUpperIndex = iNewIndex + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
int CConfig::FindVariableIndex(char *szName)
|
||||||
|
{
|
||||||
|
strlwr(szName);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while(i < m_iUpperIndex)
|
||||||
|
{
|
||||||
|
if(m_bVariableSlotState[i])
|
||||||
|
{
|
||||||
|
if(!strcmp(szName, m_Variables[i].szVarName))
|
||||||
|
{
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
bool CConfig::IsVariableExist(char *szName)
|
||||||
|
{
|
||||||
|
if(FindVariableIndex(szName) >= 0) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
int CConfig::AddVariable(char *szName)
|
||||||
|
{
|
||||||
|
int iIndex = 0;
|
||||||
|
int i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if(!m_bVariableSlotState[i])
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(!m_bVariableSlotState[i+1])
|
||||||
|
{
|
||||||
|
iIndex += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(!m_bVariableSlotState[i+2])
|
||||||
|
{
|
||||||
|
iIndex += 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(!m_bVariableSlotState[i+3])
|
||||||
|
{
|
||||||
|
iIndex += 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i += 4;
|
||||||
|
iIndex += 4;
|
||||||
|
}
|
||||||
|
while(i < MAX_CONFIG_VARIABLES);
|
||||||
|
|
||||||
|
if(iIndex == MAX_CONFIG_VARIABLES) return -1;
|
||||||
|
if(strlen(szName) > MAX_CONFIG_VARIABLE_NAME) return -1;
|
||||||
|
|
||||||
|
strlwr(szName);
|
||||||
|
strcpy(m_Variables[iIndex].szVarName, szName);
|
||||||
|
|
||||||
|
m_Variables[iIndex].bReadOnly = FALSE;
|
||||||
|
m_Variables[iIndex].VarType = CONFIG_VARTYPE_NONE;
|
||||||
|
m_bVariableSlotState[iIndex] = TRUE;
|
||||||
|
|
||||||
|
RecalcSize();
|
||||||
|
|
||||||
|
return iIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
int CConfig::GetIntVariable(char *szName)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
|
||||||
|
if(iIndex < 0) return 0;
|
||||||
|
if(m_Variables[iIndex].VarType != CONFIG_VARTYPE_INT) return 0;
|
||||||
|
|
||||||
|
return m_Variables[iIndex].iVarValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
char *CConfig::GetStringVariable(char *szName)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
|
||||||
|
if(iIndex < 0) return NULL;
|
||||||
|
if(m_Variables[iIndex].VarType != CONFIG_VARTYPE_STRING) return NULL;
|
||||||
|
|
||||||
|
return m_Variables[iIndex].szVarValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
float CConfig::GetFloatVariable(char *szName)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
|
||||||
|
if(iIndex < 0) return 0.0f;
|
||||||
|
if(m_Variables[iIndex].VarType != CONFIG_VARTYPE_FLOAT) return 0.0f;
|
||||||
|
|
||||||
|
return m_Variables[iIndex].fVarValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL CConfig::RemoveVariable(char *szName)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
|
||||||
|
if(iIndex < 0) return FALSE;
|
||||||
|
|
||||||
|
if(m_Variables[iIndex].szVarValue )
|
||||||
|
free(m_Variables[iIndex].szVarValue);
|
||||||
|
|
||||||
|
memset(&m_Variables[iIndex],0,sizeof(ConfigVariable_s));
|
||||||
|
m_bVariableSlotState[iIndex] = FALSE;
|
||||||
|
|
||||||
|
RecalcSize();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
CONFIG_VARTYPE CConfig::GetVariableType(char *szName)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
|
||||||
|
if(iIndex < 0) return CONFIG_VARTYPE_NONE;
|
||||||
|
|
||||||
|
return m_Variables[iIndex].VarType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
ConfigVariable_s *CConfig::GetVariableAtIndex(int iIndex)
|
||||||
|
{
|
||||||
|
if(iIndex >= 0 && iIndex < MAX_CONFIG_VARIABLES)
|
||||||
|
{
|
||||||
|
if(m_bVariableSlotState[iIndex])
|
||||||
|
{
|
||||||
|
return &m_Variables[iIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
CONFIG_VARTYPE CConfig::DetermineDataType(char *szData)
|
||||||
|
{
|
||||||
|
if(!szData || !strlen(szData)) return CONFIG_VARTYPE_NONE;
|
||||||
|
|
||||||
|
if(szData[0] == '"' && szData[strlen(szData)-1] == '"')
|
||||||
|
return CONFIG_VARTYPE_STRING;
|
||||||
|
else if(strchr(szData, '.') != NULL)
|
||||||
|
return CONFIG_VARTYPE_FLOAT;
|
||||||
|
else
|
||||||
|
return CONFIG_VARTYPE_INT;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL CConfig::WriteFile()
|
||||||
|
{
|
||||||
|
FILE *fWriteFile = fopen(m_szConfigFileName, "w");
|
||||||
|
|
||||||
|
if(!fWriteFile) return FALSE;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if(m_bVariableSlotState[i])
|
||||||
|
{
|
||||||
|
switch(m_Variables[i].VarType)
|
||||||
|
{
|
||||||
|
case CONFIG_VARTYPE_INT:
|
||||||
|
fprintf(fWriteFile, "%s=%d\n", m_Variables[i].szVarName, m_Variables[i].iVarValue);
|
||||||
|
break;
|
||||||
|
case CONFIG_VARTYPE_STRING:
|
||||||
|
if(m_Variables[i].szVarValue)
|
||||||
|
fprintf(fWriteFile, "%s=\"%s\"\n", m_Variables[i].szVarName, m_Variables[i].szVarValue);
|
||||||
|
break;
|
||||||
|
case CONFIG_VARTYPE_FLOAT:
|
||||||
|
fprintf(fWriteFile, "%s=%f\n", m_Variables[i].szVarName, m_Variables[i].fVarValue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while(i != MAX_CONFIG_VARIABLES);
|
||||||
|
|
||||||
|
fclose(fWriteFile);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL CConfig::SetIntVariable(char *szName, int iValue, BOOL bReadOnly)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
if(iIndex < 0)
|
||||||
|
{
|
||||||
|
iIndex = AddVariable(szName);
|
||||||
|
if (iIndex < 0)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!bReadOnly)
|
||||||
|
{
|
||||||
|
if(m_Variables[iIndex].bReadOnly)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_Variables[iIndex].bReadOnly = TRUE;
|
||||||
|
|
||||||
|
m_Variables[iIndex].iVarValue = iValue;
|
||||||
|
m_Variables[iIndex].VarType = CONFIG_VARTYPE_INT;
|
||||||
|
|
||||||
|
WriteFile();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL CConfig::SetStringVariable(char *szName, char *szValue, BOOL bReadOnly)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
if(iIndex < 0)
|
||||||
|
{
|
||||||
|
iIndex = AddVariable(szName);
|
||||||
|
if(iIndex < 0)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!bReadOnly)
|
||||||
|
{
|
||||||
|
if(m_Variables[iIndex].bReadOnly)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_Variables[iIndex].bReadOnly = TRUE;
|
||||||
|
|
||||||
|
m_Variables[iIndex].VarType = CONFIG_VARTYPE_STRING;
|
||||||
|
if(m_Variables[iIndex].szVarValue)
|
||||||
|
free(m_Variables[iIndex].szVarValue);
|
||||||
|
m_Variables[iIndex].szVarValue = (char *)calloc(1, strlen(szValue) + 1);
|
||||||
|
strcpy(m_Variables[iIndex].szVarValue, szValue);
|
||||||
|
|
||||||
|
WriteFile();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
BOOL CConfig::SetFloatVariable(char *szName, float fValue, BOOL bReadOnly)
|
||||||
|
{
|
||||||
|
int iIndex = FindVariableIndex(szName);
|
||||||
|
if(iIndex < 0)
|
||||||
|
{
|
||||||
|
iIndex = AddVariable(szName);
|
||||||
|
if (iIndex < 0)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!bReadOnly)
|
||||||
|
{
|
||||||
|
if(m_Variables[iIndex].bReadOnly)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_Variables[iIndex].bReadOnly = TRUE;
|
||||||
|
|
||||||
|
m_Variables[iIndex].fVarValue = fValue;
|
||||||
|
m_Variables[iIndex].VarType = CONFIG_VARTYPE_FLOAT;
|
||||||
|
|
||||||
|
WriteFile();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
void CConfig::AddConfigEntry(char *szName, char *szData)
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
switch(DetermineDataType(szData))
|
||||||
|
{
|
||||||
|
case CONFIG_VARTYPE_INT:
|
||||||
|
SetIntVariable(szName, atoi(szData));
|
||||||
|
break;
|
||||||
|
case CONFIG_VARTYPE_STRING:
|
||||||
|
len = strlen(szData);
|
||||||
|
strncpy(szData, szData + 1, len - 1);
|
||||||
|
szData[len - 2] = 0;
|
||||||
|
SetStringVariable(szName, szData);
|
||||||
|
break;
|
||||||
|
case CONFIG_VARTYPE_FLOAT:
|
||||||
|
SetFloatVariable(szName, atof(szData));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
BOOL CConfig::ReadFile()
|
BOOL CConfig::ReadFile()
|
||||||
{
|
{
|
||||||
char szReadBuffer[MAX_CONFIG_STRSIZE+1];
|
char szReadBuffer[MAX_CONFIG_STRSIZE+1];
|
||||||
@ -36,7 +399,7 @@ BOOL CConfig::ReadFile()
|
|||||||
int iDirectiveLength;
|
int iDirectiveLength;
|
||||||
int iDirectiveDataLength;
|
int iDirectiveDataLength;
|
||||||
|
|
||||||
FILE *fReadFile = fopen(field_8200,"r");
|
FILE *fReadFile = fopen(m_szConfigFileName,"r");
|
||||||
|
|
||||||
if(!fReadFile) return FALSE;
|
if(!fReadFile) return FALSE;
|
||||||
|
|
||||||
@ -123,78 +486,5 @@ BOOL CConfig::ReadFile()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CConfig::sub_10066180()
|
//----------------------------------------------------------
|
||||||
{
|
// EOF
|
||||||
// TODO: CConfig::sub_10066180 10066180
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_100660E0()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_100660E0 100660E0
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065FD0()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065FD0 10065FD0
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065F30()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065F30 10065F30 (unused)
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065C90()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065C90 10065C90
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065D30()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065D30 10065D30
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065D50()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065D50 10065D50
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065C40()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065C40 10065C40
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065E10()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065E10 10065E10
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065C00()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065C00 10065C00
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065E40()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065E40 10065E40
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065E70()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065E70 10065E70 (unused)
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065EA0()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065EA0 10065EA0 (unused)
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10065F00()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10065F00 10065F00 (unused)
|
|
||||||
}
|
|
||||||
|
|
||||||
void CConfig::sub_10066080()
|
|
||||||
{
|
|
||||||
// TODO: CConfig::sub_10066080 10066080
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -2,41 +2,53 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define MAX_CONFIG_STRSIZE 256
|
#define MAX_CONFIG_STRSIZE 256
|
||||||
#define MAX_CONFIG_ENTRIES 512
|
#define MAX_CONFIG_VARIABLES 512
|
||||||
|
#define MAX_CONFIG_VARIABLE_NAME 40
|
||||||
|
|
||||||
typedef struct _UNNAMED_STRUCT_1 {
|
enum CONFIG_VARTYPE
|
||||||
char _gap0[61];
|
{
|
||||||
} UNNAMED_STRUCT_1;
|
CONFIG_VARTYPE_NONE = 0,
|
||||||
|
CONFIG_VARTYPE_INT,
|
||||||
|
CONFIG_VARTYPE_STRING,
|
||||||
|
CONFIG_VARTYPE_FLOAT,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ConfigVariable_s
|
||||||
|
{
|
||||||
|
char szVarName[MAX_CONFIG_VARIABLE_NAME+1];
|
||||||
|
BOOL bReadOnly;
|
||||||
|
CONFIG_VARTYPE VarType;
|
||||||
|
int iVarValue;
|
||||||
|
float fVarValue;
|
||||||
|
char* szVarValue;
|
||||||
|
};
|
||||||
|
|
||||||
class CConfig
|
class CConfig
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
UNNAMED_STRUCT_1 field_0[MAX_CONFIG_ENTRIES];
|
ConfigVariable_s m_Variables[MAX_CONFIG_VARIABLES];
|
||||||
int field_7A00[MAX_CONFIG_ENTRIES];
|
BOOL m_bVariableSlotState[MAX_CONFIG_VARIABLES];
|
||||||
char field_8200[MAX_PATH+1];
|
CHAR m_szConfigFileName[MAX_PATH+1];
|
||||||
int field_8305;
|
int m_iUpperIndex;
|
||||||
|
|
||||||
void AddConfigEntry(char * szName, char * szData);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
~CConfig();
|
||||||
CConfig(char* a2);
|
void RecalcSize();
|
||||||
|
int FindVariableIndex(char *szName);
|
||||||
|
bool IsVariableExist(char *szName);
|
||||||
|
int AddVariable(char *szName);
|
||||||
|
int GetIntVariable(char *szName);
|
||||||
|
char *GetStringVariable(char *szName);
|
||||||
|
float GetFloatVariable(char *szName);
|
||||||
|
BOOL RemoveVariable(char *szName);
|
||||||
|
CONFIG_VARTYPE GetVariableType(char *szName);
|
||||||
|
ConfigVariable_s *GetVariableAtIndex(int iIndex);
|
||||||
|
CONFIG_VARTYPE DetermineDataType(char *szData);
|
||||||
|
BOOL WriteFile();
|
||||||
|
BOOL SetIntVariable(char *szName, int iValue, BOOL bReadOnly = FALSE);
|
||||||
|
BOOL SetStringVariable(char *szName, char *szValue, BOOL bReadOnly = FALSE);
|
||||||
|
BOOL SetFloatVariable(char *szName, float fValue, BOOL bReadOnly = FALSE);
|
||||||
|
void AddConfigEntry(char *szName, char *szData);
|
||||||
BOOL ReadFile();
|
BOOL ReadFile();
|
||||||
|
CConfig(char* szFileName);
|
||||||
void sub_10066180();
|
|
||||||
void sub_100660E0();
|
|
||||||
void sub_10065FD0();
|
|
||||||
void sub_10065F30();
|
|
||||||
void sub_10065C90();
|
|
||||||
void sub_10065D30();
|
|
||||||
void sub_10065D50();
|
|
||||||
void sub_10065C40();
|
|
||||||
void sub_10065E10();
|
|
||||||
void sub_10065C00();
|
|
||||||
void sub_10065E40();
|
|
||||||
void sub_10065E70();
|
|
||||||
void sub_10065EA0();
|
|
||||||
void sub_10065F00();
|
|
||||||
void sub_10066080();
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user