|
@@ -0,0 +1,90 @@
|
|
|
+---
|
|
|
+title: Resurrecting Zombies, Part 2
|
|
|
+tags: coding, haxe, games, zombie protagonist
|
|
|
+description: Going through a bunch of compiler errors to get the old code at least a bit closer to working.
|
|
|
+---
|
|
|
+
|
|
|
+### `Actor should be Void`
|
|
|
+
|
|
|
+Fourteen things "should be Void". That's lots of things. It's also,
|
|
|
+coincidentally, the count of constructor methods that end in `return
|
|
|
+this;`:
|
|
|
+
|
|
|
+~~~ {.bash}
|
|
|
+$ grep -c "return this;" *.hx
|
|
|
+Actor.hx:2
|
|
|
+KeyboardMonitor.hx:0
|
|
|
+Screens.hx:12
|
|
|
+ZombieProtagonist.hx:0
|
|
|
+~~~
|
|
|
+
|
|
|
+Amazingly, the locations (e.g. "`./Actor.hx:47: characters 8-19`") all
|
|
|
+map, too. Shocking. Can getting this to compile be as simple as
|
|
|
+removing those return statements? Maybe not, but it gets us further:
|
|
|
+
|
|
|
+~~~ {.bash}
|
|
|
+$ haxe -cp . -main ZombieProtagonist -swf Zombie.swf
|
|
|
+./Actor.hx:322: lines 322-328 : Field touchedHaven should be declared with 'override' since it is inherited from superclass FollowFlee
|
|
|
+... (a few of these)
|
|
|
+~~~
|
|
|
+
|
|
|
+### Overriding
|
|
|
+
|
|
|
+According to [modern haxe
|
|
|
+practices](http://haxe.org/manual/class-field-overriding.html), if
|
|
|
+you're overriding a parent method, you have to explicitly define the
|
|
|
+method with the `override` keyword.
|
|
|
+
|
|
|
+Part of me hoped it would be this simple. The only compiler errors
|
|
|
+reported at the start were of these two varieties. There were a bunch,
|
|
|
+but just thosw two categories. Unfortunately, that was apparently just
|
|
|
+a first parsing pass.
|
|
|
+
|
|
|
+~~~ {.bash}
|
|
|
+$ haxe -cp . -main ZombieProtagonist -swf Zombie.swf
|
|
|
+./Actor.hx:270: characters 19-25 : Local variable startx used without being initialized
|
|
|
+~~~
|
|
|
+
|
|
|
+Two interesting things here: 1- apparently variable declaration rules
|
|
|
+have changed, and 2- only one error was spit out. That latter thing is
|
|
|
+ominous, and suggests to me that I'm about to dive into a very long
|
|
|
+back and forth between compiler and editor[^ide].
|
|
|
+
|
|
|
+### Bug Hunt
|
|
|
+
|
|
|
+Well, that turned out not to be as bad as feared. Turn a couple of:
|
|
|
+
|
|
|
+~~~ {.haxe}
|
|
|
+ var startx;
|
|
|
+ var starty;
|
|
|
+~~~
|
|
|
+
|
|
|
+... into ...
|
|
|
+
|
|
|
+~~~ {.haxe}
|
|
|
+ var startx = 0;
|
|
|
+ var starty = 0;
|
|
|
+~~~
|
|
|
+
|
|
|
+... which got rid of that error entirely. Then came:
|
|
|
+
|
|
|
+~~~ {.haxe}
|
|
|
+./Screens.hx:44: characters 8-14 : You cannot assign some super class vars before calling super() in flash, this will reset them to default value
|
|
|
+~~~
|
|
|
+
|
|
|
+That meant crawling through all the places I was calling `super()` and
|
|
|
+moving them to before any attribute assignments. That was confined
|
|
|
+solely to constructor methods.
|
|
|
+
|
|
|
+Once that was done? It compiled!
|
|
|
+
|
|
|
+... and the SWF was a whitescreen.
|
|
|
+
|
|
|
+Alright, then. Back to the drawing board. Now that it compiles, I
|
|
|
+supposed I'll have to actually figure out how it works, in order to,
|
|
|
+you know, make it work.
|
|
|
+
|
|
|
+
|
|
|
+[^ide]: At this point, I'm tempted to start using a haxe IDE to help
|
|
|
+me along. I'm pretty solidly in the emacs camp, though, so it's going
|
|
|
+to take a little more, yet.
|