@@ -3351,6 +3351,26 @@ public void writeToXml(PrintWriter pw1) {
3351
3351
}
3352
3352
retirementDefectionTracker .writeToXml (pw1 , 1 );
3353
3353
}
3354
+
3355
+ // Customised planetary events
3356
+ pw1 .println ("\t <customPlanetaryEvents>" );
3357
+ for (Planet p : Planets .getInstance ().getPlanets ().values ()) {
3358
+ List <Planet .PlanetaryEvent > customEvents = new ArrayList <>();
3359
+ for (Planet .PlanetaryEvent event : p .getEvents ()) {
3360
+ if (event .custom ) {
3361
+ customEvents .add (event );
3362
+ }
3363
+ }
3364
+ if (!customEvents .isEmpty ()) {
3365
+ pw1 .println ("\t \t <planet><id>" + p .getId () + "</id>" );
3366
+ for (Planet .PlanetaryEvent event : customEvents ) {
3367
+ Planets .getInstance ().writePlanetaryEvent (pw1 , event );
3368
+ pw1 .println ();
3369
+ }
3370
+ pw1 .println ("\t \t </planet>" );
3371
+ }
3372
+ }
3373
+ pw1 .println ("\t </customPlanetaryEvents>" );
3354
3374
3355
3375
writeCustoms (pw1 );
3356
3376
// Okay, we're done.
@@ -3643,6 +3663,8 @@ else if (xn.equalsIgnoreCase("info")) {
3643
3663
processLanceNodes (retVal , wn );
3644
3664
} else if (xn .equalsIgnoreCase ("retirementDefectionTracker" )) {
3645
3665
retVal .retirementDefectionTracker = RetirementDefectionTracker .generateInstanceFromXML (wn , retVal );
3666
+ } else if (xn .equalsIgnoreCase ("customPlanetaryEvents" )) {
3667
+ updatePlanetaryEventsFromXML (wn );
3646
3668
}
3647
3669
3648
3670
} else {
@@ -4060,6 +4082,43 @@ else if (xn.equalsIgnoreCase("info")) {
4060
4082
return retVal ;
4061
4083
}
4062
4084
4085
+ private static void updatePlanetaryEventsFromXML (Node wn ) {
4086
+ Planets .reload (true );
4087
+ NodeList wList = wn .getChildNodes ();
4088
+ for (int x = 0 ; x < wList .getLength (); x ++) {
4089
+ Node wn2 = wList .item (x );
4090
+
4091
+ // If it's not an element node, we ignore it.
4092
+ if (wn2 .getNodeType () != Node .ELEMENT_NODE ) {
4093
+ continue ;
4094
+ }
4095
+
4096
+ if (wn2 .getNodeName ().equalsIgnoreCase ("planet" )) {
4097
+ NodeList planetNodes = wn2 .getChildNodes ();
4098
+ String planetId = null ;
4099
+ List <Planet .PlanetaryEvent > events = new ArrayList <>();
4100
+ for (int n = 0 ; n < planetNodes .getLength (); ++ n ) {
4101
+ Node planetNode = planetNodes .item (n );
4102
+ if (planetNode .getNodeType () != Node .ELEMENT_NODE ) {
4103
+ continue ;
4104
+ }
4105
+ if (planetNode .getNodeName ().equalsIgnoreCase ("id" )) {
4106
+ planetId = planetNode .getTextContent ();
4107
+ } else if (planetNode .getNodeName ().equalsIgnoreCase ("event" )) {
4108
+ Planet .PlanetaryEvent event = Planets .getInstance ().readPlanetaryEvent (planetNode );
4109
+ if (null != event ) {
4110
+ event .custom = true ;
4111
+ events .add (event );
4112
+ }
4113
+ }
4114
+ }
4115
+ if (null != planetId ) {
4116
+ Planets .getInstance ().updatePlanetaryEvents (planetId , events , true );
4117
+ }
4118
+ }
4119
+ }
4120
+ }
4121
+
4063
4122
private static void fixIdReferences (Campaign retVal ) {
4064
4123
// set up translation hashes
4065
4124
Hashtable <Integer , UUID > uHash = new Hashtable <Integer , UUID >();
0 commit comments