More macro type checking. 94% of calls in mainline are now checked.

This commit is contained in:
Eric S. Raymond 2008-02-13 02:04:50 +00:00
parent 98d9afa496
commit 0fd8975c94
4 changed files with 30 additions and 31 deletions

View file

@ -2,38 +2,38 @@
## These macros support a fourth (actually zeroth) difficulty level, NEWBIE.
#macro to define a 'quantity' differently based on difficulty levels
#define QUANTITY4 ATTRIBUTE ON_NEWBIE ON_EASY ON_NORMAL ON_HARD
#define QUANTITY4 NAME NEWBIE_AMOUNT EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
#ifdef NEWBIE
{ATTRIBUTE}={ON_NEWBIE}
{NAME}={NEWBIE_AMOUNT}
#endif
#ifdef EASY
{ATTRIBUTE}={ON_EASY}
{NAME}={EASY_AMOUNT}
#endif
#ifdef NORMAL
{ATTRIBUTE}={ON_NORMAL}
{NAME}={NORMAL_AMOUNT}
#endif
#ifdef HARD
{ATTRIBUTE}={ON_HARD}
{NAME}={HARD_AMOUNT}
#endif
#enddef
#macro to define number of turns for different difficulty levels
#define TURNS4 ON_NEWBIE ON_EASY ON_NORMAL ON_HARD
{QUANTITY4 turns {ON_NEWBIE} {ON_EASY} {ON_NORMAL} {ON_HARD}}
#define TURNS4 NEWBIE_AMOUNT EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
{QUANTITY4 turns {NEWBIE_AMOUNT} {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
#macro which will let you go {GOLD x y z} to set
#the gold depending on easy/medium/hard - x/y/z
#macro which will let you go {GOLD w/x y z} to set
#the gold depending on newbie/easy/medium/hard - w/x/y/z
#define GOLD4 ON_NEWBIE ON_EASY ON_NORMAL ON_HARD
{QUANTITY4 gold {ON_NEWBIE} {ON_EASY} {ON_NORMAL} {ON_HARD}}
#define GOLD4 NEWBIE_AMOUNT EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
{QUANTITY4 gold {NEWBIE_AMOUNT} {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
#define INCOME4 ON_NEWBIE ON_EASY ON_NORMAL ON_HARD
{QUANTITY4 income {ON_NEWBIE} {ON_EASY} {ON_NORMAL} {ON_HARD}}
#define INCOME4 NEWBIE_AMOUNT EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
{QUANTITY4 income {NEWBIE_AMOUNT} {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
## These are campaign-specific.

View file

@ -16,12 +16,12 @@
[/terrain]
#enddef
#define MODIFY_TERRAIN_MASK X Y MASK RULES
#define MODIFY_TERRAIN_MASK X Y MASK_VALUE RULES_WML
# Changes the terrain for a given area
[terrain_mask]
x={X}
y={Y}
mask={MASK}
{RULES}
mask={MASK_VALUE}
{RULES_WML}
[/terrain_mask]
#enddef

View file

@ -4,42 +4,41 @@
# Later macros in this file are built using earlier ones, which
# is why they live hear rather than being broken out into topic-specific files.
# ! in comments is used in generating HTML documentation, ignore it otherwise.
#define QUANTITY ATTRIBUTE ON_EASY ON_NORMAL ON_HARD
# ! in comments is used in generating HTML documentation, ignore it otherwise.
#define QUANTITY NAME EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
# Macro to define a 'quantity' differently based on difficulty levels.
#ifdef EASY
{ATTRIBUTE}={ON_EASY}
{NAME}={EASY_AMOUNT}
#endif
#ifdef NORMAL
{ATTRIBUTE}={ON_NORMAL}
{NAME}={NORMAL_AMOUNT}
#endif
#ifdef HARD
{ATTRIBUTE}={ON_HARD}
{NAME}={HARD_AMOUNT}
#endif
#enddef
#define TURNS ON_EASY ON_NORMAL ON_HARD
#define TURNS EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
# Macro to define number of turns for different difficulty levels.
{QUANTITY turns {ON_EASY} {ON_NORMAL} {ON_HARD}}
{QUANTITY turns {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
#define GOLD ON_EASY ON_NORMAL ON_HARD
#define GOLD EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
# Macro which will let you say {GOLD x y z} to set
# starting gold depending on easy/medium/hard - x/y/z
{QUANTITY gold {ON_EASY} {ON_NORMAL} {ON_HARD}}
{QUANTITY gold {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
#define INCOME ON_EASY ON_NORMAL ON_HARD
#define INCOME EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
# Macro which will let you say {GOLD x y z} to set
# per-turn income depending on easy/medium/hard - x/y/z
{QUANTITY income {ON_EASY} {ON_NORMAL} {ON_HARD}}
{QUANTITY income {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
#define ATTACK_DEPTH ON_EASY ON_NORMAL ON_HARD
#define ATTACK_DEPTH EASY_AMOUNT NORMAL_AMOUNT HARD_AMOUNT
# Macro to define AI attack depth for different difficulty levels
# (set it to 1-6)
{QUANTITY attack_depth {ON_EASY} {ON_NORMAL} {ON_HARD}}
{QUANTITY attack_depth {EASY_AMOUNT} {NORMAL_AMOUNT} {HARD_AMOUNT}}
#enddef
#define NO_SCOUTS

View file

@ -63,7 +63,7 @@ def isresource(filename):
def formaltype(f):
# Deduce the expected type of the formal
if f in ("SIDE", "X", "Y", "AMOUNT", "RED", "GREEN", "BLUE", "TURN", "RADIUS") or f.endswith("NUMBER") or f.endswith("_X") or f.endswith("_Y"):
if f in ("SIDE", "X", "Y", "RED", "GREEN", "BLUE", "TURN", "RADIUS") or f.endswith("NUMBER") or f.endswith("AMOUNT") or f.endswith("_X") or f.endswith("_Y"):
ftype = "numeric"
elif f in ("POSITION",):
ftype = "position"