generated from sigonasr2/JavaProjectTemplate
Engine is mostly feature-complete
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
ca082c3f2c
commit
7b663847ef
BIN
sprites/Profont.png
Normal file
BIN
sprites/Profont.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
sprites/Profont_36.png
Normal file
BIN
sprites/Profont_36.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
BIN
sprites/book.png
Normal file
BIN
sprites/book.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
BIN
sprites/energyball.png
Normal file
BIN
sprites/energyball.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
sprites/player.png
Normal file
BIN
sprites/player.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
@ -1,7 +1,22 @@
|
|||||||
package sig;
|
package sig;
|
||||||
|
|
||||||
|
import sig.engine.AnimatedSprite;
|
||||||
import sig.engine.Color;
|
import sig.engine.Color;
|
||||||
|
import sig.engine.Font;
|
||||||
|
import sig.engine.Key;
|
||||||
import sig.engine.Panel;
|
import sig.engine.Panel;
|
||||||
|
import sig.engine.Sprite;
|
||||||
|
import sig.engine.Transform;
|
||||||
|
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
|
class Player{
|
||||||
|
AnimatedSprite spr=new AnimatedSprite("player.png",32,32);
|
||||||
|
double x=200,y=200;
|
||||||
|
|
||||||
|
double animationFrame=0;
|
||||||
|
double animationSpd=2;
|
||||||
|
}
|
||||||
|
|
||||||
public class JavaProjectTemplate {
|
public class JavaProjectTemplate {
|
||||||
public static final String PROGRAM_NAME="Sig's Java Project Template";
|
public static final String PROGRAM_NAME="Sig's Java Project Template";
|
||||||
@ -9,17 +24,53 @@ public class JavaProjectTemplate {
|
|||||||
public static int WINDOW_HEIGHT=720;
|
public static int WINDOW_HEIGHT=720;
|
||||||
public static Panel game;
|
public static Panel game;
|
||||||
|
|
||||||
public static void updateGame() {
|
Player pl = new Player();
|
||||||
|
Sprite bookSpr = new Sprite("book.png");
|
||||||
|
|
||||||
|
JavaProjectTemplate(){
|
||||||
|
//Initialize your game here.
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void drawGame() {
|
public void updateGame(double fElapsedTime) {
|
||||||
|
//Put game update logic in here.
|
||||||
|
|
||||||
|
pl.animationFrame+=pl.animationSpd*fElapsedTime;
|
||||||
|
|
||||||
|
if (Key.isKeyHeld(KeyEvent.VK_A)) {
|
||||||
|
pl.x-=200*fElapsedTime;
|
||||||
|
}
|
||||||
|
if (Key.isKeyHeld(KeyEvent.VK_D)) {
|
||||||
|
pl.x+=200*fElapsedTime;
|
||||||
|
}
|
||||||
|
if (Key.isKeyHeld(KeyEvent.VK_W)) {
|
||||||
|
pl.y-=200*fElapsedTime;
|
||||||
|
}
|
||||||
|
if (Key.isKeyHeld(KeyEvent.VK_S)) {
|
||||||
|
pl.y+=200*fElapsedTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawGame() {
|
||||||
|
//Put rendering logic in here.
|
||||||
|
|
||||||
game.Clear(Color.BRIGHT_BLUE);
|
game.Clear(Color.BRIGHT_BLUE);
|
||||||
|
|
||||||
game.Draw(100,20,Color.BLACK);
|
game.Draw(100,20,Color.BLACK);
|
||||||
game.Draw_Line(10,10,35,35,Color.BLACK);
|
game.Draw_Line(10,10,35,35,Color.BLACK);
|
||||||
game.FillCircle(Color.MAGENTA,200,200,50);
|
|
||||||
|
game.Draw_Sprite(450,75,bookSpr);
|
||||||
|
game.Draw_Sprite(450,75+bookSpr.getHeight(),bookSpr,Transform.VERTICAL);
|
||||||
|
|
||||||
|
game.Draw_Animated_Sprite(pl.x,pl.y,pl.spr,pl.animationFrame);
|
||||||
|
|
||||||
|
game.Draw_Text(10,40,new sig.engine.String("Hello World!"),Font.PROFONT_12);
|
||||||
|
game.Draw_Text_Ext(10,52,new sig.engine.String("Hello World 2!"),Font.PROFONT_36,Color.MAGENTA);
|
||||||
|
|
||||||
|
game.Draw_
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Panel.InitializeEngine();
|
JavaProjectTemplate gameInstance=new JavaProjectTemplate();
|
||||||
|
Panel.InitializeEngine(gameInstance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,10 @@ public class AnimatedSprite extends Sprite{
|
|||||||
int frames;
|
int frames;
|
||||||
Rectangle[] frames_to_Rectangle;
|
Rectangle[] frames_to_Rectangle;
|
||||||
|
|
||||||
|
public AnimatedSprite(java.lang.String filename, int width, int height){
|
||||||
|
this(new File(Sprite.SPRITES_FOLDER.getAbsolutePath(),filename),width,height);
|
||||||
|
}
|
||||||
|
|
||||||
AnimatedSprite(File filename, int width, int height){
|
AnimatedSprite(File filename, int width, int height){
|
||||||
super(filename);
|
super(filename);
|
||||||
this.originalWidth=this.width;
|
this.originalWidth=this.width;
|
||||||
|
@ -2,6 +2,7 @@ package sig.engine;
|
|||||||
|
|
||||||
public enum Font {
|
public enum Font {
|
||||||
PROFONT_12((byte)7,(byte)14,Sprite.PROFONT),
|
PROFONT_12((byte)7,(byte)14,Sprite.PROFONT),
|
||||||
|
PROFONT_36((byte)21,(byte)42,Sprite.PROFONT_36),
|
||||||
;
|
;
|
||||||
|
|
||||||
byte glyphWidth,glyphHeight;
|
byte glyphWidth,glyphHeight;
|
||||||
|
@ -29,6 +29,7 @@ import sig.JavaProjectTemplate;
|
|||||||
|
|
||||||
public class Panel extends JPanel implements Runnable,KeyListener {
|
public class Panel extends JPanel implements Runnable,KeyListener {
|
||||||
JFrame window;
|
JFrame window;
|
||||||
|
static JavaProjectTemplate gameInstance;
|
||||||
public int pixel[];
|
public int pixel[];
|
||||||
final int CIRCLE_PRECISION=32;
|
final int CIRCLE_PRECISION=32;
|
||||||
final int OUTLINE_COL=Color.BRIGHT_WHITE.getColor();
|
final int OUTLINE_COL=Color.BRIGHT_WHITE.getColor();
|
||||||
@ -63,12 +64,14 @@ public class Panel extends JPanel implements Runnable,KeyListener {
|
|||||||
public static Panel p;
|
public static Panel p;
|
||||||
public static JFrame f;
|
public static JFrame f;
|
||||||
|
|
||||||
public static void InitializeEngine(){
|
public static void InitializeEngine(JavaProjectTemplate instance){
|
||||||
System.setProperty("sun.java2d.transaccel", "True");
|
System.setProperty("sun.java2d.transaccel", "True");
|
||||||
System.setProperty("sun.java2d.d3d", "True");
|
System.setProperty("sun.java2d.d3d", "True");
|
||||||
System.setProperty("sun.java2d.ddforcevram", "True");
|
System.setProperty("sun.java2d.ddforcevram", "True");
|
||||||
System.setProperty("sun.java2d.xrender", "True");
|
System.setProperty("sun.java2d.xrender", "True");
|
||||||
|
|
||||||
|
gameInstance=instance;
|
||||||
|
|
||||||
RENDERHINTS.put(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_SPEED);
|
RENDERHINTS.put(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_SPEED);
|
||||||
RENDERHINTS.put(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_DISABLE);
|
RENDERHINTS.put(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_DISABLE);
|
||||||
RENDERHINTS.put(RenderingHints.KEY_FRACTIONALMETRICS,RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
|
RENDERHINTS.put(RenderingHints.KEY_FRACTIONALMETRICS,RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
|
||||||
@ -97,7 +100,7 @@ public class Panel extends JPanel implements Runnable,KeyListener {
|
|||||||
dt += System.nanoTime() - lastGameTime;
|
dt += System.nanoTime() - lastGameTime;
|
||||||
lastGameTime = System.nanoTime();
|
lastGameTime = System.nanoTime();
|
||||||
while (dt >= UPDATE_LOOP_NANOTIME) {
|
while (dt >= UPDATE_LOOP_NANOTIME) {
|
||||||
JavaProjectTemplate.updateGame();
|
gameInstance.updateGame(UPDATE_LOOP_NANOTIME/1000000000d);
|
||||||
dt -= UPDATE_LOOP_NANOTIME;
|
dt -= UPDATE_LOOP_NANOTIME;
|
||||||
TIME += UPDATE_LOOP_NANOTIME;
|
TIME += UPDATE_LOOP_NANOTIME;
|
||||||
}
|
}
|
||||||
@ -231,7 +234,7 @@ public class Panel extends JPanel implements Runnable,KeyListener {
|
|||||||
|
|
||||||
|
|
||||||
public /* abstract */ void render(){
|
public /* abstract */ void render(){
|
||||||
JavaProjectTemplate.drawGame();
|
gameInstance.drawGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FillCircle(Color col,double center_x,double center_y,double r) {
|
public void FillCircle(Color col,double center_x,double center_y,double r) {
|
||||||
@ -297,10 +300,12 @@ public class Panel extends JPanel implements Runnable,KeyListener {
|
|||||||
nextScanLine = scanLine+1;
|
nextScanLine = scanLine+1;
|
||||||
do {
|
do {
|
||||||
for (int i=0;i<active_edges.size();i+=2) {
|
for (int i=0;i<active_edges.size();i+=2) {
|
||||||
|
if (i>=active_edges.size()-1) break;
|
||||||
Edge e1 = active_edges.get(i);
|
Edge e1 = active_edges.get(i);
|
||||||
Edge e2 = active_edges.get(i+1);
|
Edge e2 = active_edges.get(i+1);
|
||||||
//System.out.println("Drawing from "+((int)Math.round(e1.x_of_min_y))+" to "+e2.x_of_min_y+" on line "+scanLine);
|
//System.out.println("Drawing from "+((int)Math.round(e1.x_of_min_y))+" to "+e2.x_of_min_y+" on line "+scanLine);
|
||||||
for (int x=(int)Math.round(e1.x_of_min_y);x<=e2.x_of_min_y;x++) {
|
for (int x=(int)Math.round(e1.x_of_min_y);x<=e2.x_of_min_y;x++) {
|
||||||
|
if (x<0||x>JavaProjectTemplate.WINDOW_WIDTH) continue;
|
||||||
int index = (scanLine+(int)y_offset)*getWidth()+x+(int)x_offset;
|
int index = (scanLine+(int)y_offset)*getWidth()+x+(int)x_offset;
|
||||||
if (index<pixel.length&&index>=0) {
|
if (index<pixel.length&&index>=0) {
|
||||||
Draw(index,col.getColor());
|
Draw(index,col.getColor());
|
||||||
@ -388,11 +393,7 @@ public class Panel extends JPanel implements Runnable,KeyListener {
|
|||||||
} finally {
|
} finally {
|
||||||
g2.dispose();
|
g2.dispose();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
System.out.println("Invalid frame!");
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
System.out.println("Invalid frame!");
|
|
||||||
}
|
}
|
||||||
updateFPSCounter();
|
updateFPSCounter();
|
||||||
//System.out.println("Repaint "+frameCount++);
|
//System.out.println("Repaint "+frameCount++);
|
||||||
@ -573,7 +574,6 @@ public class Panel extends JPanel implements Runnable,KeyListener {
|
|||||||
sprite.getWidth()-(X-(int)xOffset):
|
sprite.getWidth()-(X-(int)xOffset):
|
||||||
(X-(int)xOffset))
|
(X-(int)xOffset))
|
||||||
+(int)x;
|
+(int)x;
|
||||||
|
|
||||||
if (((sprite.getImg().getRGB(X,Y)>>>24)&0xFF)==0||index<0||index>=pixel.length) {
|
if (((sprite.getImg().getRGB(X,Y)>>>24)&0xFF)==0||index<0||index>=pixel.length) {
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3,54 +3,28 @@ package sig.engine;
|
|||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.awt.image.DataBufferByte;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
|
|
||||||
public class Sprite{
|
public class Sprite{
|
||||||
|
|
||||||
public final static File SPRITES_FOLDER = new File("..","sprites");
|
public final static File SPRITES_FOLDER = new File("..","sprites");
|
||||||
public final static File BACKGROUNDS_FOLDER = new File("..","backgrounds");
|
public final static Sprite PROFONT = new Sprite("Profont.png");
|
||||||
|
public final static Sprite PROFONT_36 = new Sprite("Profont_36.png");
|
||||||
//NANA(new File(SPRITES_FOLDER,"3x.png")),
|
|
||||||
public static Sprite NANA_SMALL = new Sprite(new File(SPRITES_FOLDER,"1x.gif"));
|
|
||||||
public static Sprite TILE_SHEET = new Sprite(new File(SPRITES_FOLDER,"tiles.gif"));
|
|
||||||
public static Sprite MAP_TILE_INFO = new Sprite(new File(SPRITES_FOLDER,"maptileinfo.gif"));
|
|
||||||
public static Sprite PROFONT = new Sprite(new File(SPRITES_FOLDER,"Profont.gif"));
|
|
||||||
public static Sprite BACKGROUND1 = new Sprite(new File(BACKGROUNDS_FOLDER,"back1.gif"));
|
|
||||||
public static Sprite BACKGROUND2 = new Sprite(new File(BACKGROUNDS_FOLDER,"back2.gif"));
|
|
||||||
public static Sprite BACKGROUND3 = new Sprite(new File(BACKGROUNDS_FOLDER,"back3.gif"));
|
|
||||||
public static AnimatedSprite ERINOAH = new AnimatedSprite(new File(SPRITES_FOLDER,"erinoah.gif"),48,48);
|
|
||||||
public static AnimatedSprite ERINA = new AnimatedSprite(new File(SPRITES_FOLDER,"erina.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_WALK = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_walk.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_JUMP_RISE1 = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_jump_rise1.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_JUMP_RISE = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_jump_rise.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_JUMP_FALL1 = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_jump_fall1.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_JUMP_FALL = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_jump_fall.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_SLIDE1 = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_slide1.gif"),32,32);
|
|
||||||
public static AnimatedSprite ERINA_SLIDE = new AnimatedSprite(new File(SPRITES_FOLDER,"erina_slide.gif"),32,32);
|
|
||||||
public static AnimatedSprite KNIFE_SWING = new AnimatedSprite(new File(SPRITES_FOLDER,"knife-swing.gif"),32,32);
|
|
||||||
public static AnimatedSprite RED_STAND = new AnimatedSprite(new File(SPRITES_FOLDER,"redgirl_stand.gif"),32,32);
|
|
||||||
public static AnimatedSprite RED_WALK = new AnimatedSprite(new File(SPRITES_FOLDER,"redgirl_walk.gif"),32,32);
|
|
||||||
public static AnimatedSprite BLUE_STAND = new AnimatedSprite(new File(SPRITES_FOLDER,"bluegirl_stand.gif"),32,32);
|
|
||||||
public static AnimatedSprite BLUE_WALK = new AnimatedSprite(new File(SPRITES_FOLDER,"bluegirl_walk.gif"),32,32);
|
|
||||||
public static AnimatedSprite YELLOW_STAND = new AnimatedSprite(new File(SPRITES_FOLDER,"yellowgirl_stand.gif"),32,32);
|
|
||||||
public static AnimatedSprite YELLOW_WALK = new AnimatedSprite(new File(SPRITES_FOLDER,"yellowgirl_walk.gif"),32,32);
|
|
||||||
public static AnimatedSprite GREEN_STAND = new AnimatedSprite(new File(SPRITES_FOLDER,"greengirl_stand.gif"),32,32);
|
|
||||||
public static AnimatedSprite GREEN_WALK = new AnimatedSprite(new File(SPRITES_FOLDER,"greengirl_walk.gif"),32,32);
|
|
||||||
public static Sprite WATER_OVERLAY = new Sprite(new File(BACKGROUNDS_FOLDER,"water-overlay.gif"));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BufferedImage img;
|
BufferedImage img;
|
||||||
int height;
|
int height;
|
||||||
int width;
|
int width;
|
||||||
|
|
||||||
|
public Sprite(java.lang.String filename){
|
||||||
|
this(new File(SPRITES_FOLDER.getAbsolutePath(),filename));
|
||||||
|
}
|
||||||
|
|
||||||
Sprite(File filename){
|
Sprite(File filename){
|
||||||
try {
|
try {
|
||||||
BufferedImage img = ImageIO.read(filename);
|
BufferedImage img = ImageIO.read(filename);
|
||||||
this.width=img.getWidth();
|
this.width=img.getWidth();
|
||||||
this.height=img.getHeight();
|
this.height=img.getHeight();
|
||||||
|
this.img=img;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user