View Single Post
  #1  
Old 01-23-2011, 03:38 AM
fowlplay4 fowlplay4 is offline
team canada
fowlplay4's Avatar
Join Date: Jul 2004
Location: Canada
Posts: 5,200
fowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond repute
GANI File Manipulation

Being inspired to help improve the gani situation I took it upon myself to write a flexible GANI class with some functions to load, manipulate, and save the data in the correct format.

Example Script:

PHP Code:
function onCreated() {
  if (
this.testgani != NULLthis.testgani.destroy();
  
this.testgani = new TStaticVar();
  
this.testgani.join("gani");
  
this.testgani.loadgani("levels/ganis/walk.gani");
  
this.testgani.setSingleDir(true);
  
this.testgani.savegani("outputfolder/walk_messedlol.gani");
  
this.testgani.destroy();

Functions:

PHP Code:
// File I/O Functions
public function loadgani(path)
public function 
savegani(newpath)

// Animation Functions
public function getAniLength()
public function 
isLooped()
public function 
setLooped(bool)
public function 
isContinuous()
public function 
setContinuous(bool)
public function 
isSingleDir()
public function 
setSingleDir(bool)
public function 
getSetBackTo()
public function 
setSetBackTo(newbackto)

// Frame Functions
public function getFrameSprites(inddir)
public function 
setFrameSprites(inddirnewsprites)
public function 
getFrameData(inddir)
public function 
getFrameTime(ind)
public function 
getFrameSound(ind)
public function 
setFrameSound(indnewsoundoxoy)
public function 
getFrameWait(ind)
public function 
setFrameWait(indwaitvalue)
public function 
getFrameCount()

// Sprite Functions
public function addSprite(sprite_idsprite_imgsprite_xsprite_ysprite_wsprite_hsprite_com)
public function 
getSprite(spriteid)
public function 
getSpriteImage(spriteid)
public function 
setSpriteImage(spriteidnewimg)
public function 
getSpriteX(spriteid)
public function 
setSpriteX(spriteidnewval)
public function 
getSpriteY(spriteid)
public function 
setSpriteY(spriteidnewval)
public function 
getSpriteWidth(spriteid)
public function 
setSpriteWidth(spriteidnewval)
public function 
getSpriteHeight(spriteid)
public function 
setSpriteHeight(spriteidnewval)
public function 
getSpriteComment(spriteid)
public function 
setSpriteComment(spriteidcomment)

// GANI Effect Functions
public function getColorEffects()
public function 
addColorEffect(spriteidrgba)
public function 
deleteColorEffect(spriteid)
public function 
getZoomEffects()
public function 
addZoomEffect(spriteidz)
public function 
deleteZoomEffect(spriteid)
public function 
getRotateEffects()
public function 
addRotateEffect(spriteidr)
public function 
deleteRotateEffect(spriteid)
public function 
getStretchYEffects()
public function 
addStretchYEffect(spriteids)
public function 
deleteStretchYEffect(spriteid)
public function 
deleteStretchXEffect(spriteid)
public function 
addStretchXEffect(spriteids)
public function 
getStretchXEffects()
public function 
deleteModeEffect(spriteid)
public function 
addModeEffect(spriteidm)
public function 
getModeEffects() 
There could still be a few more functions added but for the most part it should be a very decent base to work off of.

I've tested it with human2_bow_shoot.gani, and some of Zodiac's ganis and all appears to work just fine after being loaded, manipulated and saved.

If my code doesn't preserve a certain element let me know but I'm pretty sure I've gotten everything.

See attached for class, and the aftermath of my example script.
Attached Thumbnails
Click image for larger version

Name:	aftermath.JPG
Views:	455
Size:	84.7 KB
ID:	52302  
Attached Files
File Type: gani walk.gani (9.8 KB, 280 views)
File Type: gani walk_messedlol.gani (11.5 KB, 288 views)
File Type: txt gani.txt (22.8 KB, 372 views)
__________________
Quote:

Last edited by fowlplay4; 01-23-2011 at 08:26 PM.. Reason: Added StretchX, StretchY, and Mode Effects functionality.
Reply With Quote