Engine.SafeRead = class
{
static doubleRangeNoTag(dict /*Dictionary<string,object>*/, name /*string*/, defaultValue /*double*/)
{
if (defaultValue === undefined) defaultValue = 0;
try
{
if (dict[name] !== undefined && typeof dict[name] == "string")
{
var rangeParts = dict[name].split(',');
if (rangeParts.length == 2)
{
return {"first": parseFloat(rangeParts[0]), "second": parseFloat(rangeParts[1])};
}
}
else if (dict[name] !== undefined)
{
var val = parseFloat(dict[name]);
return {"first": val, "second": val};
}
}
catch(e) {}
return { "first": defaultValue, "second": defaultValue };
}
static doubleRange(dict /**/, prefix /*string*/, defaultValue /*double*/)
{
if (defaultValue === undefined) defaultValue = 0;
try
{
if (typeof dict[prefix + "_range"] == "string")
{
var rangeParts = dict[prefix + "_range"].split(',');
if (rangeParts.length == 2)
{
return {"first": parseFloat(rangeParts[0]), "second": parseFloat(rangeParts[1])};
}
}
else if (dict[prefix] !== undefined)
{
var val = parseFloat(dict[prefix]);
return {"first": val, "second": val};
}
}
catch(e)
{
}
return { "first":defaultValue, "second":defaultValue };
}
static intRangeNoTag(dict /**/, name /*string*/, defaultValue /*double*/)
{
if (defaultValue === undefined) defaultValue = 0;
try
{
if (dict[name] !== undefined && typeof dict[name] == "string")
{
var rangeParts = dict[name].split(',');
if (rangeParts.length == 2)
{
return {"first": parseInt(rangeParts[0]), "second": parseInt(rangeParts[1])};
}
}
else if (dict[name] !== undefined)
{
var val = parseInt(dict[name]);
return {"first": val, "second": val};
}
}
catch(e)
{
}
return {"first": defaultValue, "second": defaultValue};
}
// wrappers for parity
static getString(dict, name)
{
if (dict.containsKey(name))
{
return "" + dict[name];
}
return "";
}
static double(dict, name)
{
if (dict.containsKey(name))
{
var value = parseFloat(dict[name]);
if (isNaN(value)) value = 0;
return value;
}
return 0;
}
static long(dict, name)
{
if (dict.containsKey(name))
{
var value = parseInt(dict[name]);
if (isNaN(value)) value = 0;
return value;
}
return 0;
}
static int(dict, name)
{
if (dict.containsKey(name))
{
var value = parseInt(dict[name]);
if (isNaN(value)) value = 0;
return value;
}
return 0;
}
static bool(dict, name)
{
if (dict.containsKey(name))
{
return Boolean(dict[name]);
}
return false;
}
static dictStrObj(dict, name)
{
if (dict.containsKey(name) && typeof(dict[name]) == "object")
{
return dict[name];
}
return {};
}
static dictStrDouble(dict, name)
{
if (dict.containsKey(name))
{
for (var key of Object.keys(dict[name]))
{
dict[name][key] = parseFloat(dict[name][key]);
}
return dict[name];
}
return {};
}
static dictStrInt(dict, name)
{
if (dict.containsKey(name))
{
for (var key of Object.keys(dict[name]))
{
dict[name][key] = parseInt(dict[name][key]);
}
return dict[name];
}
return {};
}
static dictIntObj(dict, name)
{
if (dict.containsKey(name))
{
return dict[name];
}
return {};
}
static dictIntInt(dict, name)
{
if (dict.containsKey(name))
{
for (var key of Object.keys(dict[name]))
{
dict[name][key] = parseInt(dict[name][key]);
}
return dict[name];
}
return {};
}
static listDictStrObj(dict, name)
{
if (dict.containsKey(name))
{
return dict[name];
}
return [];
}
static listString(dict, name)
{
if (dict.containsKey(name))
{
return dict[name];
}
return [];
}
static listDouble(dict, name)
{
if (dict.containsKey(name))
{
for (var i = 0; i < dict[name].length; i++)
{
dict[name][i] = parseFloat(dict[name][i]);
}
return dict[name];
}
return [];
}
static listInt(dict, name)
{
if (dict.containsKey(name))
{
for (var i = 0; i < dict[name].length; i++)
{
dict[name][i] = parseInt(dict[name][i]);
}
return dict[name];
}
return [];
}
static getRect(dict, key)
{
var rectData = dict[key];
var x = rectData["x"] !== undefined ? rectData.x : 0;
var y = rectData["y"] !== undefined ? rectData.y : 0;
var width = rectData["width"] !== undefined ? rectData.width : 0;
var height = rectData["height"] !== undefined ? rectData.height : 0;
var r = new PIXI.Rectangle(x, y, width, height);
return r;
}
}