package core;
import java.util.List;
import static core.VergeEngine.*;
import static core.Script.*;
import domain.VImage;
public class Sprite {
int x, y;
int sc;
int ent = -1;
VImage image, alphamap;
int xflip, yflip;
int addsub, lucent;
int thinkrate;
int thinkctr;
int silhouette;
int color;
int wait; // delay before processed.
int timer; // A timer of how long the sprite has been active.
int layer;
int onmap;
String thinkproc;
/****************************** data ******************************/
public static List<Sprite> sprites;
/****************************** code ******************************/
public static void ResetSprites()
{
if (!sprites.isEmpty())
sprites.clear();
//sprites.erase(sprites.begin(),sprites.end());
/*
for (int i=0; i<256; i++)
{
sprites.get(i) = sprite();
}
*/
}
public static int GetSprite()
{
int i;
for (i=0; i<sprites.size(); i++)
{
if (sprites.get(i).image == null)
{
// Reset the element.
sprites.set(i, new Sprite());
return i;
}
}
// [Rafael, the Esper] ?? sprites.push_back(sprite());
return sprites.size() - 1;
}
public static void RenderSprite(int i)
{
/*[Rafael, the Esper] int zx, zy;
if (sprites.get(i).image == null) return;
if (sprites.get(i).wait > 0) return;
zx = sprites.get(i).x;
zy = sprites.get(i).y;
if (sprites.get(i).sc==0 || sprites.get(i).ent >= 0)
{
zx -= xwin;
zy -= ywin;
}
if (sprites.get(i).ent >= 0)
{
zx += entity[sprites.get(i).ent].getx() - entity[sprites.get(i).ent].chr.hx;
zy += entity[sprites.get(i).ent].gety() - entity[sprites.get(i).ent].chr.hy;
}
VImage spr = ImageForHandle(sprites.get(i).image);
if (sprites.get(i).alphamap)
{
VImage alphamap = ImageForHandle(sprites.get(i).alphamap);
AlphaBlit(zx, zy, spr, alphamap, screen);
return;
}
if (sprites.get(i).addsub !=0)
{
SetLucent(sprites.get(i).lucent);
if (sprites.get(i).addsub<0)
TSubtractiveBlit(zx, zy, spr, screen);
else
TAdditiveBlit(zx, zy, spr, screen);
return;
}
if (sprites.get(i).silhouette!=0)
{
SetLucent(sprites.get(i).lucent);
Silhouette(zx, zy, sprites.get(i).color, spr, screen);
return;
}
SetLucent(sprites.get(i).lucent);
TBlit(zx, zy, spr, screen);*/
}
public static void RenderSprites()
{
for (int i=0; i<sprites.size(); i++)
{
if (sprites.get(i).onmap!=0) continue;
RenderSprite(i);
}
setlucent(0);
}
public static void RenderLayerSprites(int layer)
{
for (int i=0; i<sprites.size(); i++)
{
if (sprites.get(i).onmap==0) continue;
if (sprites.get(i).ent >= 0) continue;
if (sprites.get(i).layer != layer) continue;
RenderSprite(i);
}
setlucent(0);
}
public static void RenderSpritesBelowEntity(int ent)
{
if(sprites == null) //[Rafael, the Esper]
return;
for (int i=0; i<sprites.size(); i++)
{
if (sprites.get(i).onmap==0) continue;
if (sprites.get(i).ent != ent) continue;
if (sprites.get(i).layer > 0) continue;
RenderSprite(i);
}
setlucent(0);
}
public static void RenderSpritesAboveEntity(int ent)
{
if(sprites == null) //[Rafael, the Esper]
return;
for (int i=0; i<sprites.size(); i++)
{
if (sprites.get(i).onmap==0) continue;
if (sprites.get(i).ent != ent) continue;
if (sprites.get(i).layer < 1) continue;
RenderSprite(i);
}
setlucent(0);
}
}