Index: nacltoons/data/res/validate.lua |
diff --git a/nacltoons/data/res/validate.lua b/nacltoons/data/res/validate.lua |
index 8a973e951b1111557063e08304446315a321c270..1ae999f30b1ae643e4257621d74208b4ac59ed59 100644 |
--- a/nacltoons/data/res/validate.lua |
+++ b/nacltoons/data/res/validate.lua |
@@ -93,52 +93,46 @@ validate.ValidateLevelDef = function(filename, gamedef, leveldef) |
return Err("file does not evaluate to an object of type 'table'") |
end |
- CheckValidKeys(filename, leveldef, { 'num_stars', 'shapes', 'sprites', 'script' }) |
+ CheckValidKeys(filename, leveldef, { 'num_stars', 'shapes', 'script' }) |
if leveldef.shapes then |
- local valid_keys = { 'start', 'finish', 'color', 'type', 'anchor', 'tag', 'dynamic' } |
- local valid_types = { 'line', 'edge' } |
+ local valid_keys = { 'script', 'pos', 'children', 'sensor', 'image', 'start', 'finish', 'color', 'type', 'anchor', 'tag', 'dynamic' } |
+ local valid_types = { 'compound', 'line', 'edge', 'image' } |
local required_keys = { 'type' } |
- for _, shape in pairs(leveldef.shapes) do |
- CheckValidKeys(filename, shape, valid_keys) |
- CheckRequiredKeys(filename, shape, required_keys, 'shape') |
- if not ListContains(valid_types, shape.type) then |
- Err('invalid shape type: ' .. shape.type) |
- end |
- end |
- end |
- if leveldef.sprites then |
- local valid_keys = { 'pos', 'tag', 'image', 'script', 'sensor' } |
- local required_keys = { 'pos', 'image' } |
- for _, sprite in pairs(leveldef.sprites) do |
- CheckValidKeys(filename, sprite, valid_keys) |
- CheckRequiredKeys(filename, sprite, required_keys, 'sprite') |
- if gamedef.assets[sprite.image] == nil then |
- Err('invalid image asset: ' .. sprite.image) |
+ local function ValidateShapeList(shapes) |
+ for _, shape in pairs(shapes) do |
+ if #shape > 0 then |
+ ValidateShapeList(shape) |
+ else |
+ CheckValidKeys(filename, shape, valid_keys) |
+ CheckRequiredKeys(filename, shape, required_keys, 'shape') |
+ if not ListContains(valid_types, shape.type) then |
+ Err('invalid shape type: ' .. shape.type) |
+ end |
+ end |
end |
end |
- end |
+ ValidateShapeList(leveldef.shapes) |
+ end |
end |
-if arg and #arg >= 1 then |
+if debug.getinfo(1).what == "main" and debug.getinfo(3) == nil then |
-- When run from the command line run validation on passed in game.def file. |
local filename = arg[1] |
- if string.sub(filename, -4) == '.def' then |
- local gamedef = util.LoadYaml(filename) |
- gamedef.root = path.dirname(filename) |
- validate.ValidateGameDef(filename, gamedef) |
- |
- -- Now validate all the levels in the game. |
- for _, level in ipairs(gamedef.levels) do |
- filename = path.join(gamedef.root, level) |
- level = util.LoadYaml(filename) |
- validate.ValidateLevelDef(filename, gamedef, level) |
- end |
- |
- print("Validation successful!") |
+ local gamedef = util.LoadYaml(filename) |
+ gamedef.root = path.dirname(filename) |
+ validate.ValidateGameDef(filename, gamedef) |
+ |
+ -- Now validate all the levels in the game. |
+ for _, level in ipairs(gamedef.levels) do |
+ filename = path.join(gamedef.root, level) |
+ level = util.LoadYaml(filename) |
+ validate.ValidateLevelDef(filename, gamedef, level) |
end |
+ |
+ print("Validation successful!") |
end |
return validate |