[colobot] 81/145: Fix RestoreState to assign IDs to instance vars
Didier Raboud
odyx at moszumanska.debian.org
Mon Jul 11 12:56:20 UTC 2016
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository colobot.
commit c19f97bc24c2c5532db84fd2ba6664fba22f8838
Author: melex750 <melex750 at users.noreply.github.com>
Date: Tue May 24 10:09:44 2016 -0400
Fix RestoreState to assign IDs to instance vars
---
src/CBot/CBotStack.cpp | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/CBot/CBotStack.cpp b/src/CBot/CBotStack.cpp
index 746976b..3170fb7 100644
--- a/src/CBot/CBotStack.cpp
+++ b/src/CBot/CBotStack.cpp
@@ -805,6 +805,8 @@ bool CBotVar::RestoreState(FILE* pf, CBotVar* &pVar)
CBotToken token(name, std::string());
+ bool isClass = false;
+
switch (w)
{
case CBotTypInt:
@@ -826,6 +828,7 @@ bool CBotVar::RestoreState(FILE* pf, CBotVar* &pVar)
// returns an intrinsic object or element of an array
case CBotTypIntrinsic:
+ isClass = true;
case CBotTypArrayBody:
{
CBotTypResult r;
@@ -843,6 +846,17 @@ bool CBotVar::RestoreState(FILE* pf, CBotVar* &pVar)
if ( !RestoreState(pf, (static_cast<CBotVarClass*>(pNew))->m_pVar)) return false;
pNew->SetIdent(id);
+ if (isClass && p == nullptr) // set id for each item in this instance
+ {
+ CBotVar* pVars = pNew->GetItemList();
+ long itemId = 1;
+ while (pVars != nullptr)
+ {
+ pVars->m_ident = itemId++;
+ pVars = pVars->GetNext();
+ }
+ }
+
if ( p != nullptr )
{
delete pNew;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git
More information about the Pkg-games-commits
mailing list