summaryrefslogtreecommitdiff
path: root/hercules/code/servertoclient/sprites.py
diff options
context:
space:
mode:
Diffstat (limited to 'hercules/code/servertoclient/sprites.py')
-rw-r--r--hercules/code/servertoclient/sprites.py41
1 files changed, 32 insertions, 9 deletions
diff --git a/hercules/code/servertoclient/sprites.py b/hercules/code/servertoclient/sprites.py
index 7e03b58..9243f19 100644
--- a/hercules/code/servertoclient/sprites.py
+++ b/hercules/code/servertoclient/sprites.py
@@ -145,8 +145,7 @@ def decodeSprite(spr):
-def saveSpriteImage(act, spr, spriteName):
- monstersDir = "clientdata/graphics/sprites/monsters/"
+def saveSpriteImage(act, spr, spriteDir, spriteName):
# for imageN in range(0, spr.rgbaSpritesCount):
# image = spr.images[imageN + spr.indexedSpritesCount]
# print "{0} x {1}".format(image.width, image.height)
@@ -240,8 +239,8 @@ def saveSpriteImage(act, spr, spriteName):
spr.frameToIdx = frameToIdx
spr.tilesetWidth = tilesetWidth
spr.tilesetHeight = tilesetHeight
- makeDir(monstersDir)
- tileset.save(monstersDir + spriteName + ".png")
+ makeDir(spriteDir)
+ tileset.save(spriteDir + spriteName + ".png")
def extractSpriteAnimData(act, spr, actIndex, direction):
# delay = anim.delay
@@ -291,10 +290,9 @@ def extractSpriteDataAll(act, spr, actIndex, name):
data = data + extractSpriteAnimData(act, spr, actIndex + 6, "rightdown")
return data
-def saveSpriteXml(act, spr, spriteName):
- monstersDir = "clientdata/graphics/sprites/monsters/"
+def saveSpriteXml(act, spr, spriteDir, spriteName):
templatesDir = "templates/"
- dstFile = monstersDir + spriteName + ".xml"
+ dstFile = spriteDir + spriteName + ".xml"
tpl = readFile(templatesDir + "sprite.xml")
# 0, 8, 16, 24, 32, 40, 48
# 0 - walk or attack or ?
@@ -439,8 +437,33 @@ def convertSprite(spritePath, spriteName):
act = readAct(actFile)
spr = readSpr(sprFile)
decodeSprite(spr)
- saveSpriteImage(act, spr, spriteName)
- saveSpriteXml(act, spr, spriteName)
+ saveSpriteImage(act, spr, "clientdata/graphics/sprites/sprites/", spriteName)
+ saveSpriteXml(act, spr, "clientdata/graphics/sprites/sprites/", spriteName)
# if actFile.find("wolf") > 0:
# exit(0)
# exit(0)
+
+def findSpritePath(spriteName):
+ testName = spriteName + ".act"
+ testName2 = spriteName.upper() + ".act"
+ path = findFileIn((testName, testName2),
+ ("rodata/data/sprite/ёуЅєЕН/",
+ "rodata/data/sprite/npc/",
+ "rodata/data/sprite/homun/"))
+ return path
+
+def convertSpritesNonFree(idtofile):
+ processed = []
+ for spriteid in idtofile:
+ spriteName = idtofile[spriteid]
+ if spriteName in processed:
+ print "skipping " + spriteName
+ continue
+
+ path = findSpritePath(spriteName)
+ if path is None:
+ print "not found " + spriteName
+ continue
+ print spriteName
+ convertSprite(path, spriteName)
+ processed.append(spriteName)