I've had a quick butchers.
my thoughts are:
1. this is an engine - separate then engine stuff from the game into files so you can focus on each thing.
E.G. have the audio in one file the sdl engine in another and the game code calling both of them.
That way you can write a new game, but you already have the engine

2. There seems to be an editor as part of the game - again separate this out into another file, so it makes for simpler reading of the code.
3. I think this is c# and not you, but it does seem excessively verbose . E.G
if(game.zoom>4)
{
game.zoom = 4;
}
if(game.zoom<1)
{
game.zoom = 1;
}
Couldn't you use something like
game.zoom = Clamp( game.Zoom, 1, 4 )
Even if you made a clamp function to do it, it would start to make your code much nicer and simpler to read

4. I think the effort involved with the SDL engine is very impressive. More so than the game itself. This sort of grasp is not easy to pull off and at a quick glance you have a reasonably simple approach. that takes a lot of skill. Contrast your code with the Blitz/monkey engines and what you have done is tight, simple and elegant

Kudos \o/
5. there does seem to be a number of VERY large methods/functions these might be better trying compact down with calls <- more of a style thing. It's easier to digest smaller blocks than huge long lists of if and case, etc...
6. More of a style things and possible c#, but...
if(dirn==DIRN_UPRIGHT)
{
tmpdirn = DIRN_UPLEFT;
}
can be easier to view as
if(dirn==DIRN_UPRIGHT){ tmpdirn = DIRN_UPLEFT; }
especially if there are loads of them
6. is there a parsing programming language in there for control of the units??
7. The code is actually generally easy to read and you aren't using any of the 'nasty' new stuff that makes things hard to understand

Given a few hours I could possibly even convert it to MX2 - eeek!
But by far (for myself), the most impressive thing is the SDL engine
