summaryrefslogtreecommitdiffstats
path: root/src/object
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2013-01-04 00:05:28 +0100
committerPiotr Dziwinski <piotrdz@gmail.com>2013-01-04 00:05:28 +0100
commit89a3f586a224328b430ba2483ce5c12b33709c6a (patch)
tree691e1da1e297f7ea9045be5454747ca454680cb2 /src/object
parentc9335534d6bc7a59dbabf6976d41fd1e5edc8ab3 (diff)
parent1d42c71645548ae86b438c84898a07b539f262ac (diff)
downloadcolobot-89a3f586a224328b430ba2483ce5c12b33709c6a.tar.gz
colobot-89a3f586a224328b430ba2483ce5c12b33709c6a.tar.bz2
colobot-89a3f586a224328b430ba2483ce5c12b33709c6a.zip
Merge branch 'dev' into dev-graphics
Diffstat (limited to 'src/object')
-rw-r--r--src/object/brain.cpp27
-rw-r--r--src/object/robotmain.cpp12
-rw-r--r--src/object/task/taskgoto.cpp4
3 files changed, 28 insertions, 15 deletions
diff --git a/src/object/brain.cpp b/src/object/brain.cpp
index 4ce1bf8..ef7309d 100644
--- a/src/object/brain.cpp
+++ b/src/object/brain.cpp
@@ -99,7 +99,7 @@ CBrain::CBrain(CInstanceManager* iMan, CObject* object)
m_selScript = 0;
m_bTraceRecord = false;
- m_traceRecordBuffer = 0;
+ m_traceRecordBuffer = nullptr;
}
// Object's destructor.
@@ -111,12 +111,21 @@ CBrain::~CBrain()
for ( i=0 ; i<BRAINMAXSCRIPT ; i++ )
{
delete m_script[i];
+ m_script[i] = nullptr;
}
delete m_primaryTask;
+ m_primaryTask = nullptr;
+
delete m_secondaryTask;
+ m_secondaryTask = nullptr;
+
delete m_studio;
- delete m_traceRecordBuffer;
+ m_studio = nullptr;
+
+ delete[] m_traceRecordBuffer;
+ m_traceRecordBuffer = nullptr;
+
m_iMan->DeleteInstance(CLASS_BRAIN, this);
}
@@ -2791,8 +2800,8 @@ void CBrain::TraceRecordStart()
m_traceColor = -1;
}
- delete m_traceRecordBuffer;
- m_traceRecordBuffer = static_cast<TraceRecord*>(malloc(sizeof(TraceRecord)*MAXTRACERECORD));
+ delete[] m_traceRecordBuffer;
+ m_traceRecordBuffer = new TraceRecord[MAXTRACERECORD];
m_traceRecordIndex = 0;
}
@@ -2858,10 +2867,10 @@ void CBrain::TraceRecordStop()
int max, i;
char* buffer;
- if ( m_traceRecordBuffer == 0 ) return;
+ if ( m_traceRecordBuffer == nullptr ) return;
max = 10000;
- buffer = static_cast<char*>(malloc(max));
+ buffer = new char[max];
*buffer = 0;
strncat(buffer, "extern void object::AutoDraw()\n{\n", max-1);
@@ -2892,8 +2901,8 @@ void CBrain::TraceRecordStop()
}
TraceRecordPut(buffer, max, lastOper, lastParam);
- delete m_traceRecordBuffer;
- m_traceRecordBuffer = 0;
+ delete[] m_traceRecordBuffer;
+ m_traceRecordBuffer = nullptr;
strncat(buffer, "}\n", max-1);
buffer[max-1] = 0;
@@ -2904,7 +2913,7 @@ void CBrain::TraceRecordStop()
m_script[i] = new CScript(m_iMan, m_object, &m_secondaryTask);
}
m_script[i]->SendScript(buffer);
- delete buffer;
+ delete[] buffer;
}
// Saves an instruction CBOT.
diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp
index 5705649..ca13efc 100644
--- a/src/object/robotmain.cpp
+++ b/src/object/robotmain.cpp
@@ -3793,6 +3793,8 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
int rankObj = 0;
int rankGadget = 0;
CObject* sel = 0;
+ char *locale = setlocale(LC_NUMERIC, nullptr);
+ setlocale(LC_NUMERIC, "C");
while (fgets(line, 500, file) != NULL)
{
@@ -3806,16 +3808,16 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_title);
- sprintf(op, "Resume.%c", 'E' /*GetLanguageLetter()*/);
+ sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_resume);
- sprintf(op, "ScriptName.%c", 'E' /*GetLanguageLetter()*/);
+ sprintf(op, "ScriptName.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_scriptName);
@@ -4526,6 +4528,8 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
}
m_dialog->SetSceneRead("");
m_dialog->SetStackRead("");
+
+ setlocale(LC_NUMERIC, locale);
}
//! Creates an object of decoration mobile or stationary
diff --git a/src/object/task/taskgoto.cpp b/src/object/task/taskgoto.cpp
index ce778ef..cab57f1 100644
--- a/src/object/task/taskgoto.cpp
+++ b/src/object/task/taskgoto.cpp
@@ -2119,7 +2119,7 @@ bool CTaskGoto::BitmapOpen()
BitmapClose();
m_bmSize = static_cast<int>(3200.0f/BM_DIM_STEP);
- m_bmArray = static_cast<unsigned char*>(malloc(m_bmSize*m_bmSize/8*2));
+ m_bmArray = new unsigned char[m_bmSize*m_bmSize/8*2];
memset(m_bmArray, 0, m_bmSize*m_bmSize/8*2);
m_bmOffset = m_bmSize/2;
@@ -2137,7 +2137,7 @@ bool CTaskGoto::BitmapOpen()
bool CTaskGoto::BitmapClose()
{
- free(m_bmArray);
+ delete[] m_bmArray;
m_bmArray = 0;
return true;
}