Browse Source

CGShipyard, CGShrine serialization

AlexVinS 9 years ago
parent
commit
53dc49e92a
2 changed files with 13 additions and 16 deletions
  1. 0 10
      lib/mapObjects/CObjectHandler.cpp
  2. 13 6
      lib/mapObjects/MiscObjects.cpp

+ 0 - 10
lib/mapObjects/CObjectHandler.cpp

@@ -367,20 +367,10 @@ void CGObjectInstance::readJson(const JsonNode & json)
 void CGObjectInstance::writeJsonOptions(JsonNode & json) const
 {
 	json.setType(JsonNode::DATA_STRUCT);
-
-//	//todo: move up to descendants
-//	if(tempOwner != PlayerColor::UNFLAGGABLE)
-//	{
-//		PlayerColor p (tempOwner);
-//		if(p.isValidPlayer())
-//			json["owner"].String() = GameConstants::PLAYER_COLOR_NAMES[p.getNum()];
-//	}
 }
 
 void CGObjectInstance::readJsonOptions(const JsonNode & json)
 {
-//	if(json["owner"].getType() == JsonNode::DATA_STRING)
-//		tempOwner = PlayerColor(vstd::find_pos(GameConstants::PLAYER_COLOR_NAMES, json["owner"].String()));
 }
 
 void CGObjectInstance::writeOwner(JsonNode & json) const

+ 13 - 6
lib/mapObjects/MiscObjects.cpp

@@ -1660,15 +1660,23 @@ std::string CGShrine::getHoverText(const CGHeroInstance * hero) const
 
 void CGShrine::writeJsonOptions(JsonNode& json) const
 {
-
+	if(spell != SpellID::NONE)
+	{
+		json["spell"].String() = spell.toSpell()->identifier;
+	}
 }
 
 void CGShrine::readJsonOptions(const JsonNode& json)
 {
-
+	spell = SpellID::NONE;
+	if(json["spell"].String() != "")
+	{
+		auto raw = VLC->modh->identifiers.getIdentifier("core", "spell",json["spell"].String());
+		if(raw)
+			spell = SpellID(raw.get());
+	}
 }
 
-
 void CGSignBottle::initObj()
 {
 	//if no text is set than we pick random from the predefined ones
@@ -2017,15 +2025,14 @@ void CGShipyard::onHeroVisit( const CGHeroInstance * h ) const
 
 void CGShipyard::writeJsonOptions(JsonNode& json) const
 {
-
+	CGObjectInstance::writeOwner(json);
 }
 
 void CGShipyard::readJsonOptions(const JsonNode& json)
 {
-
+	CGObjectInstance::readOwner(json);
 }
 
-
 void CCartographer::onHeroVisit( const CGHeroInstance * h ) const
 {
 	//if player has not bought map of this subtype yet and underground exist for stalagmite cartographer