void gd::EventsListSerialization::OpenConditions(gd::Project & project, gd::InstructionsList & conditions, const SerializerElement & elem) { elem.ConsiderAsArrayOf("condition", "Condition"); for(std::size_t i = 0; i<elem.GetChildrenCount(); ++i) { gd::Instruction instruction; const SerializerElement & conditionElem = elem.GetChild(i); instruction.SetType(conditionElem.GetChild("type", 0, "Type").GetStringAttribute("value") .FindAndReplace("Automatism", "Behavior")); //Compatibility with GD <= 4 instruction.SetInverted(conditionElem.GetChild("type", 0, "Type").GetBoolAttribute("inverted", false, "Contraire")); //Read parameters vector < gd::Expression > parameters; //Compatibility with GD <= 3.3 if (conditionElem.HasChild("Parametre")) { for (std::size_t j = 0;j<conditionElem.GetChildrenCount("Parametre");++j) parameters.push_back(gd::Expression(conditionElem.GetChild("Parametre", j).GetValue().GetString())); } //end of compatibility code else { const SerializerElement & parametersElem = conditionElem.GetChild("parameters"); parametersElem.ConsiderAsArrayOf("parameter"); for (std::size_t j = 0;j<parametersElem.GetChildrenCount();++j) parameters.push_back(gd::Expression(parametersElem.GetChild(j).GetValue().GetString())); } instruction.SetParameters( parameters ); //Read sub conditions if ( conditionElem.HasChild("subConditions", "SubConditions") ) OpenConditions(project, instruction.GetSubInstructions(), conditionElem.GetChild("subConditions", 0, "SubConditions" )); conditions.Insert( instruction ); } if ( project.GetLastSaveGDMajorVersion() < 3 || (project.GetLastSaveGDMajorVersion() == 3 && project.GetLastSaveGDMinorVersion() <= 1 ) ) UpdateInstructionsFromGD31x(project, conditions, false); if ( project.GetLastSaveGDMajorVersion() < 3 ) UpdateInstructionsFromGD2x(project, conditions, false); }
void gd::EventsListSerialization::OpenActions(gd::Project & project, vector < gd::Instruction > & actions, const SerializerElement & elem) { elem.ConsiderAsArrayOf("action", "Action"); for(unsigned int i = 0; i<elem.GetChildrenCount(); ++i) { gd::Instruction instruction; const SerializerElement & actionElem = elem.GetChild(i); instruction.SetType( actionElem.GetChild("type", 0, "Type").GetStringAttribute("value") ); //Read parameters vector < gd::Expression > parameters; //Compatibility with GD <= 3.3 if (actionElem.HasChild("Parametre")) { for (unsigned int j = 0;j<actionElem.GetChildrenCount("Parametre");++j) parameters.push_back(gd::Expression(actionElem.GetChild("Parametre", j).GetValue().GetString())); } //end of compatibility code else { const SerializerElement & parametersElem = actionElem.GetChild("parameters"); parametersElem.ConsiderAsArrayOf("parameter"); for (unsigned int j = 0;j<parametersElem.GetChildrenCount();++j) parameters.push_back(gd::Expression(parametersElem.GetChild(j).GetValue().GetString())); } instruction.SetParameters( parameters ); //Read sub actions if ( actionElem.HasChild("subActions", "SubActions") ) OpenActions(project, instruction.GetSubInstructions(), actionElem.GetChild("subActions", 0, "SubActions" )); actions.push_back( instruction ); } if ( project.GetLastSaveGDMajorVersion() < 3 || (project.GetLastSaveGDMajorVersion() == 3 && project.GetLastSaveGDMinorVersion() <= 1 ) ) UpdateInstructionsFromGD31x(project, actions, true); if ( project.GetLastSaveGDMajorVersion() < 3 ) UpdateInstructionsFromGD2x(project, actions, true); }