void Creature::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name Aurora::LocString firstName; gff.getLocString("FirstName", firstName); Aurora::LocString lastName; gff.getLocString("LastName", lastName); if (!firstName.empty()) { _name = firstName.getString(); if (!lastName.empty()) _name += " " + lastName.getString(); } // Description _description = gff.getString("Description", _description); // Portrait loadPortrait(gff); // Equipment loadEquipment(gff); // Appearance _appearance = gff.getUint("Appearance_Type", _appearance); // Static _static = gff.getBool("Static", _static); // Usable _usable = gff.getBool("Useable", _usable); // PC _isPC = gff.getBool("IsPC", _isPC); // Gender _gender = Gender(gff.getUint("Gender")); // Race _race = Race(gff.getSint("Race", _race)); _subRace = SubRace(gff.getSint("SubraceIndex", _subRace)); // Hit Points _currentHitPoints = gff.getSint("CurrentHitPoints", _maxHitPoints); _maxHitPoints = gff.getSint("MaxHitPoints", _currentHitPoints); _minOneHitPoint = gff.getBool("Min1HP", _minOneHitPoint); // Faction _faction = Faction(gff.getUint("FactionID")); // Scripts readScripts(gff); _conversation = gff.getString("Conversation", _conversation); }
void Area::loadProperties(const Aurora::GFF3Struct &props) { // Ambient sound const Aurora::TwoDAFile &ambientSound = TwoDAReg.get2DA("ambientsound"); uint32 ambientDay = props.getUint("AmbientSndDay" , Aurora::kStrRefInvalid); uint32 ambientNight = props.getUint("AmbientSndNight", Aurora::kStrRefInvalid); _ambientDay = ambientSound.getRow(ambientDay ).getString("Resource"); _ambientNight = ambientSound.getRow(ambientNight).getString("Resource"); uint32 ambientDayVol = CLIP<uint32>(props.getUint("AmbientSndDayVol" , 127), 0, 127); uint32 ambientNightVol = CLIP<uint32>(props.getUint("AmbientSndNightVol", 127), 0, 127); _ambientDayVol = 1.25f * (1.0f - (1.0f / powf(5.0f, ambientDayVol / 127.0f))); _ambientNightVol = 1.25f * (1.0f - (1.0f / powf(5.0f, ambientNightVol / 127.0f))); // TODO: PresetInstance0 - PresetInstance7 // Ambient music setMusicDayTrack (props.getUint("MusicDay" , Aurora::kStrRefInvalid)); setMusicNightTrack(props.getUint("MusicNight" , Aurora::kStrRefInvalid)); // Battle music setMusicBattleTrack(props.getUint("MusicBattle", Aurora::kStrRefInvalid)); }
void Area::loadARE(const Aurora::GFF3Struct &are) { // Tag _tag = are.getString("Tag"); // Name _name = are.getString("Name"); if (!_name.empty() && (*--_name.end() == '\n')) _name.erase(--_name.end()); _displayName = createDisplayName(_name); // Tiles _width = are.getUint("Width"); _height = are.getUint("Height"); _tilesetName = are.getString("Tileset"); _tiles.resize(_width * _height); loadTiles(are.getList("Tile_List")); // Scripts readScripts(are); }
void Area::loadTile(const Aurora::GFF3Struct &t, Tile &tile) { // ID tile.tileID = t.getUint("Tile_ID"); // Height transition tile.height = t.getUint("Tile_Height", 0); // Orientation tile.orientation = (Orientation) t.getUint("Tile_Orientation", 0); // Lights tile.mainLight[0] = t.getUint("Tile_MainLight1", 0); tile.mainLight[1] = t.getUint("Tile_MainLight2", 0); tile.srcLight[0] = t.getUint("Tile_SrcLight1", 0); tile.srcLight[1] = t.getUint("Tile_SrcLight2", 0); // Tile animations tile.animLoop[0] = t.getBool("Tile_AnimLoop1", false); tile.animLoop[1] = t.getBool("Tile_AnimLoop2", false); tile.animLoop[2] = t.getBool("Tile_AnimLoop3", false); tile.tile = 0; tile.model = 0; }
void ItemProperty::load(const Aurora::GFF3Struct &gff) { _type = (ItemPropertyType) gff.getUint("PropertyName"); _subtype = gff.getUint("Subtype"); _param1 = gff.getUint("Param1"); _param1Value = gff.getUint("Param1Value"); _costTable = gff.getUint("CostTable"); _costValue = gff.getUint("CostValue"); }
void Door::loadObject(const Aurora::GFF3Struct &gff) { // Generic type _genericType = gff.getUint("GenericType", _genericType); // State _state = (State) gff.getUint("AnimationState", (uint) _state); // Linked to _linkedToFlag = (LinkedToFlag) gff.getUint("LinkedToFlags", (uint) _linkedToFlag); _linkedTo = gff.getString("LinkedTo", _linkedTo); }
void Area::loadProperties(const Aurora::GFF3Struct &props) { // Ambient sound const Aurora::TwoDAFile &ambientSound = TwoDAReg.get2DA("ambientsound"); uint32 ambientDay = props.getUint("AmbientSndDay" , Aurora::kStrRefInvalid); uint32 ambientNight = props.getUint("AmbientSndNight", Aurora::kStrRefInvalid); _ambientDay = ambientSound.getRow(ambientDay ).getString("Resource"); _ambientNight = ambientSound.getRow(ambientNight).getString("Resource"); uint32 ambientDayVol = CLIP<uint32>(props.getUint("AmbientSndDayVol" , 127), 0, 127); uint32 ambientNightVol = CLIP<uint32>(props.getUint("AmbientSndNightVol", 127), 0, 127); _ambientDayVol = 1.25f * (1.0f - (1.0f / powf(5.0f, ambientDayVol / 127.0f))); _ambientNightVol = 1.25f * (1.0f - (1.0f / powf(5.0f, ambientNightVol / 127.0f))); // TODO: PresetInstance0 - PresetInstance7 // Ambient music const Aurora::TwoDAFile &ambientMusic = TwoDAReg.get2DA("ambientmusic"); uint32 musicDay = props.getUint("MusicDay" , Aurora::kStrRefInvalid); uint32 musicNight = props.getUint("MusicNight" , Aurora::kStrRefInvalid); _musicDay = ambientMusic.getRow(musicDay ).getString("Resource"); _musicNight = ambientMusic.getRow(musicNight).getString("Resource"); // Battle music uint32 musicBattle = props.getUint("MusicBattle", Aurora::kStrRefInvalid); if (musicBattle != Aurora::kStrRefInvalid) { _musicBattle = ambientMusic.getRow(musicBattle).getString("Resource"); // Battle stingers Common::UString stinger[3]; stinger[0] = ambientMusic.getRow(musicBattle).getString("Stinger1"); stinger[1] = ambientMusic.getRow(musicBattle).getString("Stinger2"); stinger[2] = ambientMusic.getRow(musicBattle).getString("Stinger3"); for (int i = 0; i < 3; i++) if (!stinger[i].empty()) _musicBattleStinger.push_back(stinger[i]); } }
void Creature::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name _name = gff.getString("LocName", _name); // Description _description = gff.getString("Description", _description); // Portrait loadPortrait(gff); // Appearance _appearance = gff.getUint("Appearance_Type", _appearance); // Static _static = gff.getBool("Static", _static); // Usable _usable = gff.getBool("Useable", _usable); // PC _isPC = gff.getBool("IsPC", _isPC); // Scripts readScripts(gff); }
void Situated::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name _name = gff.getString("Name", _name); // Description _description = gff.getString("Description", _description); // Portrait loadPortrait(gff); // Appearance _appearanceID = gff.getUint("Appearance", _appearanceID); // Static _static = gff.getBool("Static", _static); // Usable _usable = gff.getBool("Useable", _usable); // Locked _locked = gff.getBool("Locked", _locked); // Scripts readScripts(gff); }
void Situated::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name _name = gff.getString("LocName", _name); // Description _description = gff.getString("Description", _description); // Appearance _appearanceID = gff.getUint("Appearance", _appearanceID); // Conversation _conversation = gff.getString("Conversation", _conversation); // Static _static = gff.getBool("Static", _static); // Usable _usable = gff.getBool("Useable", _usable); // Locked _locked = gff.getBool("Locked", _locked); // Tint readTint(gff, _tint); // Scripts and variables readScripts(gff); readVarTable(gff); }
void Placeable::loadObject(const Aurora::GFF3Struct &gff) { // State _state = (State) gff.getUint("AnimationState", (uint) _state); _hasInventory = gff.getBool("HasInventory", _hasInventory); }
void Door::loadObject(const Aurora::GFF3Struct &gff) { _genericType = gff.getUint("GenericType", _genericType); // State _state = (State) gff.getUint("AnimationState", (uint) _state); // Linked to _linkedToFlag = (LinkedToFlag) gff.getUint("LinkedToFlags", (uint) _linkedToFlag); _linkedTo = gff.getString("LinkedTo", _linkedTo); _linkedToModule = gff.getString("LinkedToModule", _linkedToModule); _transitionDestination = gff.getString("TransitionDestin", _transitionDestination); _linkedToType = (ObjectType) (kObjectTypeDoor | kObjectTypeWaypoint); }
void Item::loadArmorParts(const Aurora::GFF3Struct &gff) { for (uint i = 0; i < kArmorPartMAX; i++) if (gff.hasField(kArmorPartFields[i])) { _armorParts[i].id = gff.getUint(kArmorPartFields[i], _armorParts[i].id); } else _armorParts[i].id = 0; }
void Door::loadObject(const Aurora::GFF3Struct &gff) { // State _state = (State) gff.getUint("AnimationState", (uint) _state); // Linked to _linkedTo = gff.getString("LinkedTo" , _linkedTo); _linkedToModule = gff.getString("TargetModule", _linkedToModule); }
void Creature::loadPortrait(const Aurora::GFF3Struct &gff, Common::UString &portrait) { uint32 portraitID = gff.getUint("PortraitId"); if (portraitID != 0) { const Aurora::TwoDAFile &twoda = TwoDAReg.get2DA("portraits"); Common::UString portrait2DA = twoda.getRow(portraitID).getString("BaseResRef"); if (!portrait2DA.empty()) portrait = "po_" + portrait2DA; } portrait = gff.getString("Portrait", portrait); }
void Situated::loadPortrait(const Aurora::GFF3Struct &gff) { uint32 portraitID = gff.getUint("PortraitId"); if (portraitID != 0) { const Aurora::TwoDAFile &twoda = TwoDAReg.get2DA("portraits"); Common::UString portrait = twoda.getRow(portraitID).getString("BaseResRef"); if (!portrait.empty()) _portrait = "po_" + portrait; } _portrait = gff.getString("Portrait", _portrait); }
void Item::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name if (gff.hasField("LocalizedName")) { Aurora::LocString name; gff.getLocString("LocalizedName", name); _name = name.getString(); } // Description if (gff.hasField("Description")) { Aurora::LocString description; gff.getLocString("Description", description); _description = description.getString(); } // This is an index into basitem.2da which contains inventory slot info _baseitem = gff.getUint("BaseItem", _baseitem); // TODO: Are these armor only? _colorMetal1 = gff.getUint("Metal1Color", _colorMetal1); _colorMetal2 = gff.getUint("Metal2Color", _colorMetal2); _colorLeather1 = gff.getUint("Leather1Color", _colorLeather1); _colorLeather2 = gff.getUint("Leather2Color", _colorLeather2); _colorCloth1 = gff.getUint("Cloth1Color", _colorCloth1); _colorCloth2 = gff.getUint("Cloth2Color", _colorCloth2); // Armor parts loadArmorParts(gff); // Portrait loadPortrait(gff); // Scripts readScripts(gff); }
void Trigger::loadBlueprint(const Aurora::GFF3Struct &gff) { _isOneShot = gff.getBool("IsOneShot"); _isTrap = gff.getBool("IsTrap"); _isDetectable = gff.getBool("IsDetectable"); _isDisarmable = gff.getBool("IsDisarmable"); _isFlagged = gff.getBool("IsFlagged"); _isAreaTrans = gff.getBool("IsAreaTrans"); _isHenchmenData = gff.getBool("IsHenchmenData"); _loadScreen = gff.getUint("LoadScreen"); _transitionText = gff.getString("TransitionText"); // Scripts readScripts(gff); }
void Placeable::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name and description gff.getLocString("LocName" , _name); gff.getLocString("LocPopupText", _description); // Conversation _conversation = gff.getString("Conversation", _conversation); // Static and usable _static = !gff.getBool("Active" , !_static); _usable = gff.getBool("Useable", _usable); // Appearance _appearanceID = gff.getUint("Appearance", _appearanceID); // Position if (gff.hasField("XPosition")) { const float position[3] = { (float) gff.getDouble("XPosition"), (float) gff.getDouble("YPosition"), (float) gff.getDouble("ZPosition") }; setPosition(position[0], position[1], position[2]); } // Orientation if (gff.hasField("XOrientation")) { const float orientation[4] = { (float) gff.getDouble("XOrientation"), (float) gff.getDouble("YOrientation"), (float) gff.getDouble("ZOrientation"), (float) Common::rad2deg(acos(gff.getDouble("WOrientation")) * 2.0) }; setOrientation(orientation[0], orientation[1], orientation[2], orientation[3]); } // Variables and script readVarTable(gff); readScript(gff); enableEvents(true); }
void Situated::loadProperties(const Aurora::GFF3Struct &gff) { // Unique ID and tag _uniqueID = gff.getString("UniqueID", _uniqueID); _tag = gff.getString("Tag", _tag); // Name if (gff.hasField("LocName")) { try { gff.getLocString("LocName", _name); } catch (...) { } } // Description if (gff.hasField("Description")) { try { gff.getLocString("Description", _description); } catch (...) { } } refreshLocalized(); // Appearance _modelName = gff.getString("ModelName", _modelName); // Sounds _soundAppType = gff.getUint("SoundAppType", _soundAppType); // Conversation _conversation = gff.getString("Conversation", _conversation); // Static _static = gff.getBool("Static", _static); // Usable _usable = gff.getBool("Useable", _usable); // Locked _locked = gff.getBool("Locked", _locked); }
void Situated::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name if (gff.hasField("LocName")) { Aurora::LocString name; gff.getLocString("LocName", name); _name = name.getString(); } // Description if (gff.hasField("Description")) { Aurora::LocString description; gff.getLocString("Description", description); _description = description.getString(); } // Appearance _appearanceID = gff.getUint("Appearance", _appearanceID); // Conversation _conversation = gff.getString("Conversation", _conversation); // Static _static = gff.getBool("Static", _static); // Usable _usable = gff.getBool("Useable", _usable); // Locked _locked = gff.getBool("Locked", _locked); // Tint readTint(gff, _tint); }
void Placeable::loadObject(const Aurora::GFF3Struct &gff) { // State _state = (State) gff.getUint("AnimationState", (uint) _state); // Inventory _hasInventory = gff.getBool("HasInventory", _hasInventory); if (_hasInventory && gff.hasField("ItemList")) { Aurora::GFF3List classList = gff.getList("ItemList"); for (Aurora::GFF3List::const_iterator iter = classList.begin(); iter != classList.end(); ++iter) { const Aurora::GFF3Struct &item = **iter; _inventory.addItem(item.getString("InventoryRes")); } } // Hit Points _currentHitPoints = gff.getSint("CurrentHP"); _maxHitPoints = gff.getSint("HP"); _minOneHitPoint = gff.getBool("Min1HP"); }
void Area::loadProperties(const Aurora::GFF3Struct &props) { setMusicDayTrack (props.getUint("MusicDay" , Aurora::kStrRefInvalid)); setMusicNightTrack (props.getUint("MusicNight" , Aurora::kStrRefInvalid)); setMusicBattleTrack(props.getUint("MusicBattle", Aurora::kStrRefInvalid)); }
void Creature::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name _firstName = gff.getString("FirstName", _firstName); _lastName = gff.getString("LastName" , _lastName); _name = _firstName + " " + _lastName; _name.trim(); // Description _description = gff.getString("Description", _description); // Conversation _conversation = gff.getString("Conversation", _conversation); // Sound Set _soundSet = gff.getUint("SoundSetFile", Aurora::kFieldIDInvalid); // Portrait loadPortrait(gff, _portrait); // Gender _gender = (Gender) gff.getUint("Gender", (uint64) _gender); // Race _race = gff.getUint("Race", _race); // Subrace _subRace = gff.getString("Subrace", _subRace); // PC and DM _isPC = gff.getBool("IsPC", _isPC); _isDM = gff.getBool("IsDM", _isDM); // Age _age = gff.getUint("Age", _age); // Experience _xp = gff.getUint("Experience", _xp); // Abilities _abilities[kAbilityStrength] = gff.getUint("Str", _abilities[kAbilityStrength]); _abilities[kAbilityDexterity] = gff.getUint("Dex", _abilities[kAbilityDexterity]); _abilities[kAbilityConstitution] = gff.getUint("Con", _abilities[kAbilityConstitution]); _abilities[kAbilityIntelligence] = gff.getUint("Int", _abilities[kAbilityIntelligence]); _abilities[kAbilityWisdom] = gff.getUint("Wis", _abilities[kAbilityWisdom]); _abilities[kAbilityCharisma] = gff.getUint("Cha", _abilities[kAbilityCharisma]); // Classes loadClasses(gff, _classes, _hitDice); // Skills if (gff.hasField("SkillList")) { _skills.clear(); const Aurora::GFF3List &skills = gff.getList("SkillList"); for (Aurora::GFF3List::const_iterator s = skills.begin(); s != skills.end(); ++s) { const Aurora::GFF3Struct &skill = **s; _skills.push_back(skill.getSint("Rank")); } } // Feats if (gff.hasField("FeatList")) { _feats.clear(); const Aurora::GFF3List &feats = gff.getList("FeatList"); for (Aurora::GFF3List::const_iterator f = feats.begin(); f != feats.end(); ++f) { const Aurora::GFF3Struct &feat = **f; _feats.push_back(feat.getUint("Feat")); } } // Deity _deity = gff.getString("Deity", _deity); // Health if (gff.hasField("HitPoints")) { _baseHP = gff.getSint("HitPoints"); _bonusHP = gff.getSint("MaxHitPoints", _baseHP) - _baseHP; _currentHP = gff.getSint("CurrentHitPoints", _baseHP); } // Alignment _goodEvil = gff.getUint("GoodEvil", _goodEvil); _lawChaos = gff.getUint("LawfulChaotic", _lawChaos); // Appearance _appearanceID = gff.getUint("Appearance_Type", _appearanceID); _phenotype = gff.getUint("Phenotype" , _phenotype); // Body parts for (size_t i = 0; i < kBodyPartMAX; i++) { _bodyParts[i].id = gff.getUint(kBodyPartFields[i], _bodyParts[i].id); _bodyParts[i].idArmor = 0; } // Colors _colorSkin = gff.getUint("Color_Skin", _colorSkin); _colorHair = gff.getUint("Color_Hair", _colorHair); _colorTattoo1 = gff.getUint("Color_Tattoo1", _colorTattoo1); _colorTattoo2 = gff.getUint("Color_Tattoo2", _colorTattoo2); // Equipped Items loadEquippedItems(gff); // Scripts readScripts(gff); }
void Creature::loadProperties(const Aurora::GFF3Struct &gff) { // Tag _tag = gff.getString("Tag", _tag); // Name _firstName = gff.getString("FirstName", _firstName); _lastName = gff.getString("LastName" , _lastName); _name = _firstName + " " + _lastName; _name.trim(); // Description _description = gff.getString("Description", _description); // Conversation _conversation = gff.getString("Conversation", _conversation); // Sound Set _soundSet = gff.getUint("SoundSetFile", Aurora::kFieldIDInvalid); // Gender _gender = gff.getUint("Gender", _gender); // Race _race = gff.getUint("Race", _race); // Subrace _subRace = gff.getUint("Subrace", _subRace); // PC and DM _isPC = gff.getBool("IsPC", _isPC); _isDM = gff.getBool("IsDM", _isDM); // Age _age = gff.getUint("Age", _age); // Experience _xp = gff.getUint("Experience", _xp); // Abilities _abilities[kAbilityStrength] = gff.getUint("Str", _abilities[kAbilityStrength]); _abilities[kAbilityDexterity] = gff.getUint("Dex", _abilities[kAbilityDexterity]); _abilities[kAbilityConstitution] = gff.getUint("Con", _abilities[kAbilityConstitution]); _abilities[kAbilityIntelligence] = gff.getUint("Int", _abilities[kAbilityIntelligence]); _abilities[kAbilityWisdom] = gff.getUint("Wis", _abilities[kAbilityWisdom]); _abilities[kAbilityCharisma] = gff.getUint("Cha", _abilities[kAbilityCharisma]); // Classes loadClasses(gff, _classes, _hitDice); // Skills if (gff.hasField("SkillList")) { _skills.clear(); const Aurora::GFF3List &skills = gff.getList("SkillList"); for (Aurora::GFF3List::const_iterator s = skills.begin(); s != skills.end(); ++s) { const Aurora::GFF3Struct &skill = **s; _skills.push_back(skill.getSint("Rank")); } } // Feats if (gff.hasField("FeatList")) { _feats.clear(); const Aurora::GFF3List &feats = gff.getList("FeatList"); for (Aurora::GFF3List::const_iterator f = feats.begin(); f != feats.end(); ++f) { const Aurora::GFF3Struct &feat = **f; _feats.push_back(feat.getUint("Feat")); } } // Deity _deity = gff.getString("Deity", _deity); // Health if (gff.hasField("HitPoints")) { _baseHP = gff.getSint("HitPoints"); _bonusHP = gff.getSint("MaxHitPoints", _baseHP) - _baseHP; _currentHP = gff.getSint("CurrentHitPoints", _baseHP); } // Alignment _goodEvil = gff.getUint("GoodEvil", _goodEvil); _lawChaos = gff.getUint("LawfulChaotic", _lawChaos); // Appearance _appearanceID = gff.getUint("Appearance_Type", _appearanceID); _appearanceHead = gff.getUint("Appearance_Head" , _appearanceHead); _appearanceMHair = gff.getUint("Appearance_Hair" , _appearanceMHair); _appearanceFHair = gff.getUint("Appearance_FHair", _appearanceFHair); _armorVisualType = gff.getUint("ArmorVisualType", _armorVisualType); _armorVariation = gff.getUint("Variation" , _armorVariation); if (gff.hasField("Boots")) { const Aurora::GFF3Struct &boots = gff.getStruct("Boots"); _bootsVisualType = boots.getUint("ArmorVisualType", _bootsVisualType); _bootsVariation = boots.getUint("Variation" , _bootsVariation); } // Scripts and variables readScripts(gff); readVarTable(gff); }
void GFF3Dumper::dumpField(const Aurora::GFF3Struct &strct, const Common::UString &field) { Aurora::GFF3Struct::FieldType type = strct.getType(field); Common::UString typeName; if (((size_t) type) < ARRAYSIZE(kGFF3FieldTypeNames)) typeName = kGFF3FieldTypeNames[(int)type]; else typeName = "filetype" + Common::composeString((uint64) type); Common::UString label = field; // Structs already open their own tag if (type != Aurora::GFF3Struct::kFieldTypeStruct) { _xml->openTag(typeName); _xml->addProperty("label", label); } switch (type) { case Aurora::GFF3Struct::kFieldTypeChar: _xml->setContents(Common::composeString(strct.getUint(field))); break; case Aurora::GFF3Struct::kFieldTypeByte: case Aurora::GFF3Struct::kFieldTypeUint16: case Aurora::GFF3Struct::kFieldTypeUint32: case Aurora::GFF3Struct::kFieldTypeUint64: _xml->setContents(Common::composeString(strct.getUint(field))); break; case Aurora::GFF3Struct::kFieldTypeSint16: case Aurora::GFF3Struct::kFieldTypeSint32: case Aurora::GFF3Struct::kFieldTypeSint64: _xml->setContents(Common::composeString(strct.getSint(field))); break; case Aurora::GFF3Struct::kFieldTypeFloat: case Aurora::GFF3Struct::kFieldTypeDouble: _xml->setContents(Common::UString::format("%.6f", strct.getDouble(field))); break; case Aurora::GFF3Struct::kFieldTypeStrRef: _xml->setContents(strct.getString(field)); break; case Aurora::GFF3Struct::kFieldTypeExoString: case Aurora::GFF3Struct::kFieldTypeResRef: try { _xml->setContents(strct.getString(field)); } catch (...) { _xml->addProperty("base64", "true"); Common::SeekableReadStream *data = strct.getData(field); _xml->setContents(*data); delete data; } break; case Aurora::GFF3Struct::kFieldTypeLocString: { Aurora::LocString locString; strct.getLocString(field, locString); _xml->addProperty("strref", Common::composeString(locString.getID())); dumpLocString(locString); } break; case Aurora::GFF3Struct::kFieldTypeVoid: _xml->setContents(*strct.getData(field)); break; case Aurora::GFF3Struct::kFieldTypeStruct: dumpStruct(strct.getStruct(field), label); break; case Aurora::GFF3Struct::kFieldTypeList: dumpList(strct.getList(field)); break; case Aurora::GFF3Struct::kFieldTypeOrientation: { double a = 0.0, b = 0.0, c = 0.0, d = 0.0; strct.getOrientation(field, a, b, c, d); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", a)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", b)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", c)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", d)); _xml->closeTag(); _xml->breakLine(); } break; case Aurora::GFF3Struct::kFieldTypeVector: { double x = 0.0, y = 0.0, z = 0.0; strct.getVector(field, x, y, z); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", x)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", y)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", z)); _xml->closeTag(); _xml->breakLine(); } break; default: break; } // Structs already close their own tag if (type != Aurora::GFF3Struct::kFieldTypeStruct) { _xml->closeTag(); _xml->breakLine(); } }
void Placeable::loadObject(const Aurora::GFF3Struct &gff) { // State _state = (State) gff.getUint("AnimationState", (uint) _state); }