CBotVar* CBotVar::GetStaticVar() { // makes the pointer to the variable if it is static if ( m_bStatic == 0 || m_pMyThis == nullptr ) return this; CBotClass* pClass = m_pMyThis->GetClass(); return pClass->GetItem( m_token->GetString() ); }
bool CBotClass::RestoreStaticState(FILE* pf) { CBotString ClassName, VarName; CBotClass* pClass; unsigned short w; if (!ReadWord( pf, w )) return false; if ( w != CBOTVERSION*2 ) return false; while (true) { if (!ReadWord( pf, w )) return false; if ( w == 0 ) return true; if (!ReadString( pf, ClassName )) return false; pClass = Find(ClassName); while (true) { if (!ReadWord( pf, w )) return false; if ( w == 0 ) break; CBotVar* pVar = NULL; CBotVar* pv = NULL; if (!ReadString( pf, VarName )) return false; if ( pClass != NULL ) pVar = pClass->GetItem(VarName); if (!CBotVar::RestoreState(pf, pv)) return false; // the temp variable if ( pVar != NULL ) pVar->Copy(pv); delete pv; } } return true; }