Add code to MisoSceneModel parser that handles the situation where a scene
with a single object that has no action string gets parsed as a scene with zero action strings instead of a scene with a single empty action string. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@916 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
//
|
//
|
||||||
// $Id: MisoSceneRuleSet.java,v 1.6 2002/02/02 01:09:53 mdb Exp $
|
// $Id: MisoSceneRuleSet.java,v 1.7 2002/02/02 01:32:18 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene.tools.xml;
|
package com.threerings.miso.scene.tools.xml;
|
||||||
|
|
||||||
import org.apache.commons.digester.Digester;
|
import org.apache.commons.digester.Digester;
|
||||||
import org.apache.commons.digester.RuleSetBase;
|
import org.apache.commons.digester.RuleSetBase;
|
||||||
|
|
||||||
|
import com.samskivert.xml.CallMethodSpecialRule;
|
||||||
import com.samskivert.xml.SetFieldRule;
|
import com.samskivert.xml.SetFieldRule;
|
||||||
|
|
||||||
import com.threerings.miso.scene.MisoSceneModel;
|
import com.threerings.miso.scene.MisoSceneModel;
|
||||||
@@ -58,6 +59,22 @@ public class MisoSceneRuleSet extends RuleSetBase
|
|||||||
new SetFieldRule(digester, "objectTileIds"));
|
new SetFieldRule(digester, "objectTileIds"));
|
||||||
digester.addRule(_prefix + "/actions",
|
digester.addRule(_prefix + "/actions",
|
||||||
new SetFieldRule(digester, "objectActions"));
|
new SetFieldRule(digester, "objectActions"));
|
||||||
|
|
||||||
|
// we have to unfuck the objectActions field in the event that
|
||||||
|
// there's one object in the objects element which has a blank
|
||||||
|
// action string (which the parser will parse as a zero length
|
||||||
|
// array, when we want a length one array with a blank string)
|
||||||
|
digester.addRule(_prefix, new CallMethodSpecialRule(digester) {
|
||||||
|
public void parseAndSet (String bodyText, Object target)
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
MisoSceneModel model = (MisoSceneModel)target;
|
||||||
|
if (model.objectTileIds.length > 0 &&
|
||||||
|
model.objectActions.length == 0) {
|
||||||
|
model.objectActions = new String[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The prefix at which me match our scenes. */
|
/** The prefix at which me match our scenes. */
|
||||||
|
|||||||
Reference in New Issue
Block a user