Created
January 2, 2016 22:20
-
-
Save Ryex/e4f9e5172c22155be606 to your computer and use it in GitHub Desktop.
XML Resource parsing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function Clone() { } | |
function clone(obj) { | |
Clone.prototype = obj; | |
return new Clone(); | |
} | |
//load sprintf | |
//importScripts('sprintf.js') | |
//importScripts('/js/lib/underscore-min.js') | |
//importScripts('/js/lib/xmlsax.js') | |
//importScripts('/js/lib/xmlw3cdom.js') | |
/****************************************************************** | |
* Resource Parsing | |
******************************************************************/ | |
var $XMLResourceNodeParsers = { | |
sprintf: function (resource, xml) { | |
var node = new XMLsprintfNode(resource, xml); | |
return node; | |
}, | |
sprite: function (resource, xml) { | |
var node = new XMLResourceSpriteNode(resource, xml); | |
return node; | |
}, | |
loop: function (resource, xml) { | |
var node = new XMLResourceLoopNode(resource, xml); | |
return node; | |
}, | |
windowskin: function (resource, xml) { | |
var node = new XMLResourceWindowSkinNode(resource, xml); | |
return node; | |
} | |
}; | |
//$XMLResourceNodeDelayParsers = {}; | |
function XMLsprintfNode(resource, xml) { | |
var self = this | |
self.resource = resource | |
self.nodeType = 'sprintf' | |
self.name = ""; | |
self.func = ""; | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
var val = atter.nodeValue; | |
if(!isNaN(val)) { | |
val = parseFloat(val); | |
} | |
if(val) self[atter.nodeName.toLowerCase()] = val; | |
} | |
self.evaluate = function (map) { | |
var result; | |
map['mod'] = '%'; | |
var s = sprintf(String(self.func), map); | |
result = eval(s); | |
return result; | |
}; | |
self.map =function(map) { | |
map[self.name] = self.evaluate(map); | |
}; | |
self.exec = function (map) { | |
self.map(map); | |
}; | |
} | |
function XMLResourceURLNode(xml) { | |
var self = this | |
self.name = ""; | |
self.value = ""; | |
self.nodeType = 'url' | |
var URL_MAP = { | |
RESOURCE_URL: $MEW.RESOURCE_URL, | |
NODE_URL: $MEW.NODE_URL, | |
API_URL: $MEW.API_URL | |
}; | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
if (atter.nodeName.toLowerCase() === 'name') { | |
self.name = atter.nodeValue; | |
} else if (atter.nodeName.toLowerCase() === 'value') { | |
self.value = sprintf(String(atter.nodeValue), URL_MAP); | |
} | |
} | |
} | |
function XMLResourceTypeNode(xml, map) { | |
var self = this | |
self.name = ""; | |
self.url = ""; | |
self.nodeType = 'type' | |
self.filetype = "" | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
if (atter.nodeName.toLowerCase() === 'name') { | |
self.name = atter.nodeValue; | |
} else if (atter.nodeName.toLowerCase() === 'url') { | |
self.url = map[atter.nodeValue]; | |
} | |
} | |
} | |
function XMLResourceSpriteNode(resource, xml) { | |
var self = this | |
self.nodeType = 'sprite' | |
self.resource = resource | |
self.name = ""; | |
self.mapx = ""; | |
self.mapy = ""; | |
self.mapw = ""; | |
self.maph = ""; | |
self.url = ""; | |
self.id = -1; | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
var val = atter.nodeValue | |
if(!isNaN(val)) { | |
val = parseFloat(val) | |
} | |
if(val) self[atter.nodeName.toLowerCase()] = val; | |
} | |
self.getMappedParams = function (map) { | |
var params = {}; | |
params.name = sprintf(String(self.name), map); | |
params.id = parseInt(sprintf(String(self.id), map)); | |
params.mapx = parseInt(sprintf(String(self.mapx), map)); | |
params.mapy = parseInt(sprintf(String(self.mapy), map)); | |
params.mapw = parseInt(sprintf(String(self.mapw), map)); | |
params.maph = parseInt(sprintf(String(self.maph), map)); | |
params.map = {}; | |
params.map[params.name] = [params.mapx, params.mapy]; | |
params.url = sprintf(String(self.url), map); | |
return params; | |
}; | |
self.exec = function (map) { | |
var params = self.getMappedParams(map); | |
if (self.resource.filetype.toLowerCase() == 'tile') { | |
postMessage({code : 'SkermishTerrainSprite', data : [params.id, params.name]}) | |
} else if (self.resource.filetype.toLowerCase() == 'sprite') { | |
postMessage({code : 'PonyPartSprite', data : [params.name, params.url, params.mapx, params.mapy, params.mapw, params.maph]}) | |
} | |
postMessage({code : 'Sprite', data : [params.mapw, params.maph, params.url, params.map]}) | |
//Crafty.sprite(params.mapw, params.maph, params.url, params.map); | |
}; | |
} | |
function XMLResourceWindowSkinNode(resource, xml) { | |
var self = this | |
self.resource = resource | |
self.nodeType = 'windowskin' | |
self.name = ""; | |
self.top = 0; | |
self.bot = 0; | |
self.left = 0; | |
self.right = 0; | |
self.width = 0; | |
self.height = 0; | |
self.url =""; | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
var val = atter.nodeValue; | |
if(!isNaN(val)) { | |
val = parseFloat(val); | |
} | |
if(val) self[atter.nodeName.toLowerCase()] = val; | |
} | |
self.getMappedParams = function (map) { | |
var params = {}; | |
params.name = sprintf(String(self.name), map); | |
params.top = parseInt(sprintf(String(self.top), map)); | |
params.bot = parseInt(sprintf(String(self.bot), map)); | |
params.left = parseInt(sprintf(String(self.left), map)); | |
params.right = parseInt(sprintf(String(self.right), map)); | |
params.width = parseInt(sprintf(String(self.width), map)); | |
params.height = parseInt(sprintf(String(self.height), map)); | |
params.url = sprintf(String(self.url), map); | |
return params; | |
}; | |
self.exec = function (map) { | |
var params = self.getMappedParams(map); | |
postMessage({code : 'WindowSkin', data : [ | |
params.name, | |
params.top, | |
params.bot, | |
params.left, | |
params.right, | |
params.width, | |
params.height, | |
params.url | |
]}) | |
}; | |
} | |
function XMLResourceLoopNode (resource, xml) { | |
var self = this | |
self.resource = resource | |
self.nodeType = 'loop' | |
self.val = ""; | |
self.start = 0; | |
self.stop = 0; | |
self.nodes = []; | |
self.sprintfmap = {}; | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
var val = atter.nodeValue; | |
if(!isNaN(val)) { | |
val = parseFloat(val); | |
} | |
if(val) self[atter.nodeName.toLowerCase()] = val; | |
} | |
self.parse = function () { | |
var children = xml.childNodes; | |
var node; | |
for (var i = 0; i < children.length; i++) { | |
var child = children.item(i) | |
if ($XMLResourceNodeParsers.hasOwnProperty(child.nodeName.toLowerCase())) { | |
node = $XMLResourceNodeParsers[child.nodeName.toLowerCase()](self.resource, child); | |
self.nodes.push(node); | |
} | |
} | |
self.loop(); | |
}; | |
self.loop = function () { | |
for (var i = self.start; i < self.stop; i++) { | |
self.sprintfmap[self.val] = i; | |
for (var j = 0; j < self.nodes.length; j++) { | |
self.nodes[j].exec(self.sprintfmap); | |
} | |
} | |
}; | |
self.exec = function (map) { | |
for (var a in map) { | |
self.sprintfmap[a] = map[a]; | |
} | |
//self.sprintfmap = clone(map); //--clone doesn't seem to work | |
self.parse(); | |
}; | |
} | |
function XMLResourceNode(xml) { | |
var self = this | |
self.nodeType = 'resource' | |
self.file = ""; | |
self.filetype = ""; | |
self.width = 0; | |
self.height = 0; | |
self.sprintfmap = {}; | |
self.nodes = []; | |
self.url = ""; | |
for (var i = 0; i < xml.attributes.length; i++) { | |
var atter = xml.attributes.item(i) | |
var val = atter.nodeValue; | |
if(!isNaN(val)) { | |
val = parseFloat(val); | |
} | |
if(val) self[atter.nodeName.toLowerCase()] = val; | |
} | |
self.parse = function () { | |
var children = xml.childNodes; | |
var node; | |
for(var i = 0; i < children.length; i++) { | |
var child = children.item(i) | |
if ($XMLResourceNodeParsers.hasOwnProperty(child.nodeName.toLowerCase())) { | |
node = $XMLResourceNodeParsers[child.nodeName.toLowerCase()](self, child); | |
self.nodes.push(node); | |
} | |
} | |
self.sprintfmap["width"] = self.width; | |
self.sprintfmap["height"] = self.height; | |
self.sprintfmap["url"] = self.url; | |
_(self.nodes).each( function( node, index, nodes ) { | |
node.exec(self.sprintfmap); | |
}); | |
}; | |
self.exec = function (map) { | |
self.sprintfmap = clone(map); | |
self.parse(); | |
}; | |
} | |
function XMLResourceParser(xml) { | |
var self = this | |
self.urls = []; | |
self.types = []; | |
self.resources = []; | |
self.sprintfmap = {}; | |
self.typemap = {}; | |
self.parseResources = function (xml) { | |
var urls = xml.getElementsByTagName('url'); | |
var types = xml.getElementsByTagName('type'); | |
var resources = xml.getElementsByTagName('resource'); | |
for (var i = 0; i < urls.length; i++) { | |
var urlXML = urls.item(i) | |
var url = new XMLResourceURLNode(urlXML) | |
self.sprintfmap[url.name] = url.value | |
self.urls.push(url) | |
} | |
for (var i = 0; i < types.length; i++) { | |
var typeXML = types.item(i) | |
var type = new XMLResourceTypeNode(typeXML, self.sprintfmap) | |
self.typemap[type.name] = type.url | |
self.types.push(type) | |
} | |
for (var i = 0; i < resources.length; i++) { | |
var resourceXML = resources.item(i) | |
var resource = new XMLResourceNode(resourceXML) | |
resource.url = self.typemap[resource.filetype] + resource.file | |
self.resources.push(resource) | |
} | |
}; | |
self.getResourceURLS = function() { | |
var urls = []; | |
_(self.resources).each( function( resource, index, resources ) { | |
urls.push(resource.url); | |
}); | |
return urls; | |
}; | |
self.setupResources = function () { | |
postMessage("Beginning Resource setup") | |
var resources = self.resources | |
var sprintfmap = self.sprintfmap | |
var length = resources.length | |
for (var i = 0; i < length; i++) { | |
postMessage("Processing " + resources[i].file) | |
resources[i].exec(sprintfmap) | |
var progress = i / length | |
postMessage({code : 'progress', data : progress}) | |
} | |
}; | |
self.parseResources(xml); | |
postMessage("Resources parsed") | |
} | |
var parser = null | |
function setup_parser(xml) { | |
var domParser = new DOMImplementation() | |
xmlObj = domParser.loadXML(xml) | |
parser = new XMLResourceParser(xmlObj) | |
var urls = parser.getResourceURLS() | |
postMessage({code :'urls', data : urls}) | |
} | |
function setup_resources() { | |
if (parser) { | |
parser.setupResources() | |
postMessage({code : 'done', data: null}) | |
} else { | |
postMessage({code : 'error', data: 'parser not set up'}) | |
} | |
} | |
addEventListener('message', function(e) { | |
var msg = e.data; | |
switch (msg.code) { | |
case 'start': | |
setup_parser(msg.data) | |
break | |
case 'setup': | |
setup_resources() | |
break | |
case 'stop': | |
postMessage('WORKER STOPPED'); | |
close(); // Terminates the worker. | |
break | |
default: | |
postMessage('Unknown command: ' + data.msg); | |
} | |
}, false) | |
postMessage({code : 'started', data : null}) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<resources> | |
<!-- DATE 8/19/2013 --> | |
<!-- URLS --> | |
<url name="TileResourceURL" value="%(RESOURCE_URL)s/image/0/" /> | |
<url name="SpriteResourceURL" value="%(RESOURCE_URL)s/image/1/" /> | |
<url name="InterfaceResourceURL" value="%(RESOURCE_URL)s/image/2/" /> | |
<type name="sprite" url="SpriteResourceURL" /> | |
<type name="tile" url="TileResourceURL" /> | |
<type name="interface" url="InterfaceResourceURL" /> | |
<!-- Tiles --> | |
<resource file="grass_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="0" name="GrassSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="everfree_grass_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="1" name="EverfreeGrassSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="flower_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="2" name="FlowerSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="dirt_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="3" name="DirtSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="mud_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="4" name="MudSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="barren.png" filetype="tile" width="64" height="128"> | |
<sprite id="5" name="BarrenSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<!-- MISSING ID 6 --> | |
<resource file="swamp_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="7" name="SwampSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="bushes_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="8" name="BushesSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="forest_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="9" name="ForestSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="everfree_forest_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="10" name="EverfreeForestSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="rocky_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="11" name="RockySprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="snow_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="12" name="SnowSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="ice_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="13" name="IceSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="water_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="14" name="WaterSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="ravine.png" filetype="tile" width="64" height="128"> | |
<sprite id="15" name="RavineSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="volcano_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="16" name="VolcanoSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="mountain_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="17" name="MountainSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="snow_mountain_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="18" name="SnowMountainSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="desert_2_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="19" name="Desert2Sprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="lava_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="20" name="LavaSprit" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="quicksand_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="21" name="QuicksandSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="poison_joke_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="22" name="PoisonJokeSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="apple_trees_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="23" name="AppleTreesSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="zap_apple_tree_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="24" name="ZapAppleTreeSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="gemstone_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="25" name="GemstoneSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="diamonds_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="26" name="DiamondsSprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<resource file="desert_1_block.png" filetype="tile" width="64" height="128"> | |
<sprite id="27" name="Desert1Sprite" url="%(url)s" mapx="0" mapy="0" mapw="64" maph="128" /> | |
</resource> | |
<!-- Sprites --> | |
<!-- Armor --> | |
<!-- Front --> | |
<resource file="ARMOROPT.PNG" filetype="sprite" width="2048" height="512"> | |
<sprintf name="cw" func="%(width)s / 32"/> | |
<sprintf name="ch" func="%(height)s / 8"/> | |
<sprite name="Armor|0|0|0|0" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Armor|1|0|0|0" url="%(url)s" mapx="0" mapy="1" mapw="%(cw)s" maph="%(ch)s" /> | |
<loop val="y" start="0" stop="8"> | |
<loop val="x" start="1" stop="32"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="varient" func="%(x)s" /> | |
<sprintf name="color" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Armor|%(sex)s|%(varient)s|%(color)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="ARMORback.PNG" filetype="sprite" width="2048" height="512"> | |
<sprintf name="cw" func="%(width)s / 32"/> | |
<sprintf name="ch" func="%(height)s / 8"/> | |
<sprite name="Armor|0|0|0" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Armor|1|0|0" url="%(url)s" mapx="0" mapy="1" mapw="%(cw)s" maph="%(ch)s" /> | |
<loop val="y" start="0" stop="8"> | |
<loop val="x" start="1" stop="32"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="varient" func="%(x)s" /> | |
<sprintf name="color" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Armor|%(sex)s|%(varient)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Body --> | |
<!-- Front & Back--> | |
<resource file="COLOURS.PNG" filetype="sprite" width="3200" height="256"> | |
<sprintf name="cw" func="%(width)s / 50"/> | |
<sprintf name="ch" func="%(height)s / 4"/> | |
<loop val="y" start="0" stop="4"> | |
<loop val="x" start="0" stop="50"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s" /> | |
<sprintf name="front" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Body|%(sex)s|%(color)s|%(front)s" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Eyes --> | |
<!-- Front --> | |
<resource file="EYES.png" filetype="sprite" width="640" height="512"> | |
<sprintf name="cw" func="%(width)s / 10"/> | |
<sprintf name="ch" func="%(height)s / 8"/> | |
<loop val="y" start="0" stop="8"> | |
<loop val="x" start="0" stop="10"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s" /> | |
<sprintf name="varient" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Eyes|%(sex)s|%(color)s|%(varient)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="EYESBACK.png" filetype="sprite" width="640" height="512"> | |
<sprintf name="cw" func="%(width)s / 10"/> | |
<sprintf name="ch" func="%(height)s / 8"/> | |
<loop val="y" start="0" stop="8"> | |
<loop val="x" start="0" stop="10"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s" /> | |
<sprintf name="varient" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Eyes|%(sex)s|%(color)s|%(varient)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Male Hair--> | |
<!-- Front --> | |
<resource file="HAIRMALEFRONT.png" filetype="sprite" width="1344" height="1600"> | |
<sprintf name="cw" func="%(width)s / 21"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Mane|0|0|0|0" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|1|0" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|2|0" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|3|0" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|4|0" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|5|0" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|6|0" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|7|0" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|8|0" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|9|0" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|10|0" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="10"/> | |
<loop val="y" start="1" stop="25"> | |
<loop val="x" start="0" stop="21"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Mane|0|%(varient)s|%(color)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="HAIRMALEBACK.PNG" filetype="sprite" width="1344" height="1600"> | |
<sprintf name="cw" func="%(width)s / 21"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Mane|0|0|0|1" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|1|1" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|2|1" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|3|1" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|4|1" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|5|1" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|6|1" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|7|1" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|8|1" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|9|1" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|0|0|10|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="10"/> | |
<loop val="y" start="1" stop="25"> | |
<loop val="x" start="0" stop="21"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Mane|0|%(varient)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource>1 | |
<!-- Female Hair --> | |
<!-- Front --> | |
<resource file="HAIRFEMFRONT.PNG" filetype="sprite" width="1856" height="1600"> | |
<sprintf name="cw" func="%(width)s / 29"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Mane|1|0|0|0" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|1|0" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|2|0" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|3|0" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|4|0" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|5|0" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|6|0" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|7|0" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|8|0" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|9|0" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|10|0" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="10"/> | |
<loop val="y" start="1" stop="25|0"> | |
<loop val="x" start="0" stop="29"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Mane|1|%(varient)s|%(color)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="HAIRFEMBACK.png" filetype="sprite" width="1856" height="1600"> | |
<sprintf name="cw" func="%(width)s / 29"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Mane|1|0|0|1" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|1|1" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|2|1" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|3|1" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|4|1" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|5|1" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|6|1" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|7|1" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|8|1" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|9|1" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Mane|1|0|10|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="10"/> | |
<loop val="y" start="1" stop="25|0"> | |
<loop val="x" start="0" stop="29"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Mane|1|%(varient)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Hats --> | |
<!-- Front --> | |
<resource file="HATS.PNG" filetype="sprite" width="2048" height="512"> | |
<sprintf name="cw" func="%(width)s / 32"/> | |
<sprintf name="ch" func="%(height)s / 8"/> | |
<sprite name="Hat|0|0|0|0" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Hat|1|0|0|0" url="%(url)s" mapx="0" mapy="1" mapw="%(cw)s" maph="%(ch)s" /> | |
<loop val="y" start="0" stop="8"> | |
<loop val="x" start="1" stop="32"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="varient" func="%(x)s" /> | |
<sprintf name="color" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Hat|%(sex)s|%(varient)s|%(color)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="HATSback.PNG" filetype="sprite" width="2048" height="512"> | |
<sprintf name="cw" func="%(width)s / 32"/> | |
<sprintf name="ch" func="%(height)s / 8"/> | |
<sprite name="Hat|0|0|0|1" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Hat|1|0|0|1" url="%(url)s" mapx="0" mapy="1" mapw="%(cw)s" maph="%(ch)s" /> | |
<loop val="y" start="0" stop="8"> | |
<loop val="x" start="1" stop="32"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="varient" func="%(x)s" /> | |
<sprintf name="color" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Hat|%(sex)s|%(varient)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Horns --> | |
<!-- Front --> | |
<resource file="HORNS.PNG" filetype="sprite" width="3200" height="128"> | |
<sprintf name="cw" func="%(width)s / 50"/> | |
<sprintf name="ch" func="%(height)s / 2"/> | |
<loop val="y" start="0" stop="2"> | |
<loop val="x" start="0" stop="50"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s" /> | |
<sprite name="Horn|%(sex)s|%(color)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="HORNSBACK.png" filetype="sprite" width="3200" height="128"> | |
<sprintf name="cw" func="%(width)s / 50"/> | |
<sprintf name="ch" func="%(height)s / 2"/> | |
<loop val="y" start="0" stop="2"> | |
<loop val="x" start="0" stop="50"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s" /> | |
<sprite name="Horn|%(sex)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Male Tails --> | |
<!-- Front --> | |
<resource file="Tailsmalefront.png" filetype="sprite" width="1088" height="1600"> | |
<sprintf name="cw" func="%(width)s / 17"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Tail|0|0|0|0" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|1|0" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|2|0" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|3|0" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|4|0" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|5|0" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|6|0" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|7|0" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|8|0" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|9|0" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|10|0" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="10"/> | |
<loop val="y" start="1" stop="25"> | |
<loop val="x" start="0" stop="17"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Tail|0|%(varient)s|%(color)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<resource file="Tailsmaleback.png" filetype="sprite" width="1088" height="1600"> | |
<sprintf name="cw" func="%(width)s / 17"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Tail|0|0|0|1" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|1|1" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|2|1" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|3|1" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|4|1" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|5|1" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|6|1" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|7|1" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|8|1" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|9|1" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|0|0|10|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="10"/> | |
<loop val="y" start="1" stop="25"> | |
<loop val="x" start="0" stop="17"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Tail|0|%(varient)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Female Tails --> | |
<!-- Front --> | |
<!-- Back --> | |
<resource file="TAILFEMBACK.PNG" filetype="sprite" width="1856" height="1600"> | |
<sprintf name="cw" func="%(width)s / 29"/> | |
<sprintf name="ch" func="%(height)s / 25"/> | |
<sprite name="Tail|1|0|0|1" url="%(url)s" mapx="0" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|1|1" url="%(url)s" mapx="1" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|2|1" url="%(url)s" mapx="2" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|3|1" url="%(url)s" mapx="3" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|4|1" url="%(url)s" mapx="4" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|5|1" url="%(url)s" mapx="5" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|6|1" url="%(url)s" mapx="6" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|7|1" url="%(url)s" mapx="7" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|8|1" url="%(url)s" mapx="8" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|9|1" url="%(url)s" mapx="9" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|10|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|11|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|12|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|13|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|14|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|15|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|16|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|17|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|18|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprite name="Tail|1|0|19|1" url="%(url)s" mapx="10" mapy="0" mapw="%(cw)s" maph="%(ch)s" /> | |
<sprintf name="offset" func="19"/> | |
<loop val="y" start="1" stop="25"> | |
<loop val="x" start="0" stop="29"> | |
<sprintf name="color" func="%(y)s" /> | |
<sprintf name="varient" func="%(x)s + %(offset)s" /> | |
<sprite name="Tail|1|%(varient)s|%(color)s|1" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Weapons --> | |
<!-- Front --> | |
<resource file="WEAPONS.PNG" filetype="sprite" width="1088" height="128"> | |
<sprintf name="cw" func="%(width)s / 17"/> | |
<sprintf name="ch" func="%(height)s / 2"/> | |
<loop val="y" start="0" stop="2"> | |
<loop val="x" start="0" stop="17"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="weapon" func="%(x)s" /> | |
<sprite name="Weapon|%(sex)s|%(weapon)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Wings --> | |
<!-- Front --> | |
<resource file="Wingsfront.png" filetype="sprite" width="3264" height="256"> | |
<sprintf name="cw" func="%(width)s / 51"/> | |
<sprintf name="ch" func="%(height)s / 4"/> | |
<loop val="y" start="0" stop="4"> | |
<loop val="x" start="0" stop="51"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s" /> | |
<sprintf name="open" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Wings|%(sex)s|%(color)s|%(open)s|0" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Back --> | |
<!-- Chess --> | |
<!-- ChessFix --> | |
<resource file="Chessfix.png" filetype="sprite" width="768" height="256"> | |
<sprintf name="cw" func="%(width)s / 12"/> | |
<sprintf name="ch" func="%(height)s / 4"/> | |
<loop val="y" start="0" stop="4"> | |
<loop val="x" start="0" stop="12"> | |
<sprintf name="sex" func="%(y)s %(mod)s 2" /> | |
<sprintf name="color" func="%(x)s %(mod)s 2" /> | |
<sprintf name="piece" func="Math.floor(%(x)s / 2)" /> | |
<sprintf name="front" func="Math.floor(%(y)s / 2)" /> | |
<sprite name="Chessfix|%(sex)s|%(color)s|%(piece)s|%(front)s" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- highlights light --> | |
<resource file="snow_block2.png" filetype="sprite" width="256" height="128"> | |
<sprintf name="cw" func="%(width)s / 4"/> | |
<sprintf name="ch" func="%(height)s"/> | |
<loop val="y" start="0" stop="4"> | |
<loop val="x" start="0" stop="12"> | |
<sprite name="HighlightLight|%(x)s" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- highlights dark--> | |
<resource file="snow_block3.png" filetype="sprite" width="256" height="128"> | |
<sprintf name="cw" func="%(width)s / 4"/> | |
<sprintf name="ch" func="%(height)s"/> | |
<loop val="y" start="0" stop="4"> | |
<loop val="x" start="0" stop="12"> | |
<sprite name="HighlightDark|%(x)s" url="%(url)s" mapx="%(x)s" mapy="%(y)s" mapw="%(cw)s" maph="%(ch)s" /> | |
</loop> | |
</loop> | |
</resource> | |
<!-- Interface --> | |
<resource file="ParchmentWSV.png" filetype="interface" width="200" height="200"> | |
<windowskin name="ParchmentWSV" url="%(url)s" top="30" bot="170" left="32" right="160" width="%(width)s" height="%(height)s" /> | |
</resource> | |
<resource file="small_v2_combined.png" filetype="interface" width="144" height="144"> | |
<windowskin name="small_v2_combined" url="%(url)s" top="32" bot="112" left="32" right="112" width="%(width)s" height="%(height)s" /> | |
</resource> | |
<resource file="mew_login_screen.png" filetype="interface" width="800" height="600"> | |
<sprite name="mew_login_screen_sprite" url="%(url)s" mapx="0" mapy="0" mapw="800" maph="600" /> | |
</resource> | |
</resources> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment