---
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.
category: coding
---

### `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.
