void Settings::SaveChanged() { if(settingsJSON == NULL) return; for(int i = 0; i < variables.GetSizeI(); i++) { IVariable* var = variables[i]; if(!var->IsChanged()) { continue; } var->SaveValue(); JSON* varJSON = var->json; if(varJSON == NULL) { varJSON = settingsJSON->GetItemByName(var->name); var->json = varJSON; } if(varJSON == NULL) { settingsJSON->AddItem(var->name,var->Serialize()); } else { varJSON->ReplaceNodeWith(var->Serialize()); } } rootSettingsJSON->Save(settingsFileName); PrintFileToLog(settingsFileName); }
bool Settings::IsChanged() { if(settingsJSON == NULL) return false; for(int i = 0; i < variables.GetSizeI(); i++) { IVariable* var = variables[i]; if(var->IsChanged()) { return true; } } return false; }
void AgentState::Log(Agent* pAgent, bool bForce) { BEHAVIAC_UNUSED_VAR(pAgent); BEHAVIAC_UNUSED_VAR(bForce); #if !BEHAVIAC_RELEASE if (Config::IsLoggingOrSocketing()) { if (this->state_stack.size() > 0) { map<behaviac::string, bool> logged; for (int i = this->state_stack.size() - 1; i >= 0; --i) { AgentState* t = this->state_stack[i]; behaviac::map<uint32_t, IVariable*>& _value = t->Vars(); for (behaviac::map<uint32_t, IVariable*>::iterator it = _value.begin(); it != _value.end(); it++) { IVariable* pVar = it->second; if (bForce || pVar->IsChanged()) { if (logged.find(pVar->Name()) == logged.end()) { pVar->Log(pAgent); logged.insert(map<behaviac::string, bool>::value_type(pVar->Name(), true)); } } } }//end of for } else { //base.Log(pAgent, bForce); Variables::Log(pAgent, bForce); } } #endif }