initial commit
3
.gitignore
vendored
@@ -1,3 +1,6 @@
|
|||||||
|
bin
|
||||||
|
/bin/
|
||||||
|
|
||||||
# Compiled class file
|
# Compiled class file
|
||||||
*.class
|
*.class
|
||||||
|
|
||||||
|
|||||||
11
README.md
@@ -1,2 +1,13 @@
|
|||||||
# Forlorn-Hope
|
# Forlorn-Hope
|
||||||
old abandoned game of mine, using my sjgs engine
|
old abandoned game of mine, using my sjgs engine
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
*Discontinued*: 2016
|
||||||
|
|
||||||
|
Might be useful if anyone wanted to see an example of the engine.
|
||||||
|
|
||||||
|
Other than that, this is just a place to store it for nostalgia.
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
If you want to try it, simple `java -jar` the jar in /build
|
||||||
|
|||||||
BIN
dev/Forlorn Hope - Plot.odt.lrz
Executable file
BIN
dev/PyxelEdit/Player.pyxel
Executable file
BIN
dev/PyxelEdit/defaultGun.pyxel
Executable file
BIN
dev/unused art/GameBoy Color Pallete.png
Executable file
|
After Width: | Height: | Size: 122 B |
BIN
dev/unused art/butterfly.png
Executable file
|
After Width: | Height: | Size: 129 B |
BIN
dev/unused art/flowers.png
Executable file
|
After Width: | Height: | Size: 117 B |
BIN
res/Forlorn-Hope.jpg
Executable file
|
After Width: | Height: | Size: 24 KiB |
0
res/backgrounds/.getxfer.7000.61.mega
Executable file
BIN
res/backgrounds/background.png
Executable file
|
After Width: | Height: | Size: 371 B |
BIN
res/backgrounds/foreground.png
Executable file
|
After Width: | Height: | Size: 512 B |
BIN
res/backgrounds/midground.png
Executable file
|
After Width: | Height: | Size: 140 B |
BIN
res/backgrounds/scenery-demo.png
Executable file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
res/data/map.png
Executable file
|
After Width: | Height: | Size: 551 B |
BIN
res/sounds/effects/jump_sound.mp3
Executable file
BIN
res/sounds/effects/splat.mp3
Executable file
BIN
res/sounds/effects/tir.mp3
Executable file
BIN
res/spritesheets/hud/asdf.png
Executable file
|
After Width: | Height: | Size: 154 B |
BIN
res/spritesheets/hud/test.png
Executable file
|
After Width: | Height: | Size: 160 B |
BIN
res/spritesheets/mobs/scraveller.png
Executable file
|
After Width: | Height: | Size: 132 B |
BIN
res/spritesheets/player/Player1.png
Executable file
|
After Width: | Height: | Size: 532 B |
BIN
res/spritesheets/player/Player2.png
Executable file
|
After Width: | Height: | Size: 602 B |
BIN
res/spritesheets/player/Player3.png
Executable file
|
After Width: | Height: | Size: 604 B |
BIN
res/spritesheets/player/Player4.png
Executable file
|
After Width: | Height: | Size: 602 B |
BIN
res/spritesheets/player/Player5.png
Executable file
|
After Width: | Height: | Size: 955 B |
BIN
res/spritesheets/player/default_gun.png
Executable file
|
After Width: | Height: | Size: 151 B |
BIN
res/spritesheets/tiles/tile.png
Executable file
|
After Width: | Height: | Size: 89 B |
16
src/core/Console.java
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
package core;
|
||||||
|
|
||||||
|
import sjgs.core.DeveloperConsole;
|
||||||
|
import sjgs.core.Engine;
|
||||||
|
|
||||||
|
public class Console extends DeveloperConsole {
|
||||||
|
|
||||||
|
public Console(final Engine engine) { super(engine); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void commands(final String action, final String item, final String value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
62
src/core/Main.java
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
package core;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.pythagoras;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import core.input.KeyInput;
|
||||||
|
import core.input.MouseInput;
|
||||||
|
import jython.Jython;
|
||||||
|
import player.Player;
|
||||||
|
import sjgs.core.Camera;
|
||||||
|
import sjgs.core.DeveloperConsole;
|
||||||
|
import sjgs.core.Engine;
|
||||||
|
import sjgs.core.Handler;
|
||||||
|
import sjgs.physics.Physics;
|
||||||
|
import textures.TextureLoader;
|
||||||
|
import worldgen.WorldGenerator;
|
||||||
|
|
||||||
|
public final class Main extends Engine {
|
||||||
|
|
||||||
|
public Main(int WIDTH, int HEIGHT, String title) {
|
||||||
|
super(WIDTH, HEIGHT, title);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int TILE_SIZE = 6;
|
||||||
|
public static final float TILE_DIAGONAL = pythagoras(TILE_SIZE, TILE_SIZE);
|
||||||
|
public static final double SCALE_FACTOR = 8d;
|
||||||
|
public static final float GRAVITY = 0.25f, TERIMNAL_VELOCITY = 2f, FRICTION = 0.1175f;
|
||||||
|
|
||||||
|
public static Main engine;
|
||||||
|
public static Camera camera;
|
||||||
|
public static Player player;
|
||||||
|
|
||||||
|
public static void main(final String[] args) {
|
||||||
|
engine = new Main(1280, 720, "Forlorn Hope");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
new Jython().init();
|
||||||
|
camera = new Camera(this);
|
||||||
|
new MouseInput(this);
|
||||||
|
Physics.init(GRAVITY, TERIMNAL_VELOCITY, FRICTION);
|
||||||
|
setScaleFactor(SCALE_FACTOR);
|
||||||
|
new Console(this);
|
||||||
|
TextureLoader.getTextures();
|
||||||
|
WorldGenerator.generateWorld();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void render(final Graphics2D g2d) {
|
||||||
|
WorldGenerator.currentBackground.render(g2d, camera, getScaleFactor());
|
||||||
|
Handler.render(g2d, camera, getScaleFactor());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void tick() {
|
||||||
|
if(DeveloperConsole.CONSOLE_OPEN) return;
|
||||||
|
camera.tick(player.getCenter(), getScaleFactor());
|
||||||
|
Handler.tick(camera, getScaleFactor());
|
||||||
|
KeyInput.tick(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
34
src/core/input/KeyInput.java
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
package core.input;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.exit;
|
||||||
|
import player.Player;
|
||||||
|
import player.gun.PlayerGun;
|
||||||
|
import sjgs.core.input.Keyboard;
|
||||||
|
import sjgs.enums.Facing;
|
||||||
|
import worldgen.WorldGenerator;
|
||||||
|
|
||||||
|
public class KeyInput implements Keyboard {
|
||||||
|
|
||||||
|
public static void tick(final Player player) {
|
||||||
|
|
||||||
|
if(Keyboard.D()) { if(!player.getProne()) player.setVelX(Player.WALKING_SPEED); player.setFacing(Facing.RIGHT); }
|
||||||
|
else if(Keyboard.A()) { if(!player.getProne()) player.setVelX(-Player.WALKING_SPEED); player.setFacing(Facing.LEFT); }
|
||||||
|
|
||||||
|
if(Keyboard.S()) {
|
||||||
|
player.setProne(true);
|
||||||
|
player.setLookingUp(false);
|
||||||
|
} else player.setProne(false);
|
||||||
|
|
||||||
|
if(Keyboard.W()) { player.setLookingUp(true); player.setProne(false); }
|
||||||
|
else player.setLookingUp(false);
|
||||||
|
|
||||||
|
if(Keyboard.SPACE() && !player.getJumping() && !player.getFalling() && player.getVelY() >= 0) { player.jump(); }
|
||||||
|
|
||||||
|
if(Keyboard.F()) PlayerGun.shoot(player);
|
||||||
|
|
||||||
|
if(Keyboard.R()) WorldGenerator.generateWorld();
|
||||||
|
if(Keyboard.Q()) exit();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
38
src/core/input/MouseInput.java
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
package core.input;
|
||||||
|
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseWheelEvent;
|
||||||
|
import core.Main;
|
||||||
|
import player.gun.PlayerGun;
|
||||||
|
import sjgs.core.Engine;
|
||||||
|
import sjgs.core.input.Mouse;
|
||||||
|
|
||||||
|
public class MouseInput extends Mouse {
|
||||||
|
|
||||||
|
private final Engine engine;
|
||||||
|
|
||||||
|
public MouseInput(final Engine engine) { super(engine); this.engine = engine; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(final MouseEvent e) {
|
||||||
|
Main.player.setHealth(Main.player.getHealth() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseMoved(final MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mousePressed(final MouseEvent e) {
|
||||||
|
if(e.getButton() == 1) PlayerGun.shoot(Main.player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(final MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseWheelMoved(final MouseWheelEvent e) {
|
||||||
|
// engine.setScaleFactor(engine.getScaleFactor() + -e.getPreciseWheelRotation() / 5f);
|
||||||
|
// engine.setScaleFactor(clamp(engine.getScaleFactor(), 0.1f, 15f));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
40
src/jython/Jython.java
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
package jython;
|
||||||
|
|
||||||
|
import static sjgs.core.jython.Jython.pi;
|
||||||
|
import static sjgs.utils.Utils.readTextFileAsString;
|
||||||
|
import mobs.scraveller.Scraveller;
|
||||||
|
import player.Player;
|
||||||
|
import player.gun.PlayerGun;
|
||||||
|
|
||||||
|
public class Jython {
|
||||||
|
|
||||||
|
public void init() {
|
||||||
|
imports();
|
||||||
|
loadMethodsIntoInterpretor();
|
||||||
|
createPyFuncs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// IMPORTS ALL NECESSARY JAVA CLASSES FOR INTERP
|
||||||
|
private static void imports() {
|
||||||
|
pi.exec(readTextFileAsString("/jython/forlorn_hope_jython_imports.py"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// RUNS THE MODULES THROUGH THE INTERP TO LOAD THE NAMES OF FUNCS
|
||||||
|
private static void loadMethodsIntoInterpretor() {
|
||||||
|
// Player scripts
|
||||||
|
pi.exec(readTextFileAsString("/player/gun/player_gun.py"));
|
||||||
|
pi.exec(readTextFileAsString("/player/player_animations.py"));
|
||||||
|
// MOB AI
|
||||||
|
pi.exec(readTextFileAsString("/mobs/scraveller/scraveller_ai.py"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createPyFuncs() {
|
||||||
|
// PlayerScripts
|
||||||
|
PlayerGun.initPyFuncs();
|
||||||
|
Player.createPyFuncs();
|
||||||
|
// MOBS
|
||||||
|
Scraveller.createPyFuncs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
31
src/jython/forlorn_hope_jython_imports.py
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
from core.input import MouseInput
|
||||||
|
from core import Main
|
||||||
|
|
||||||
|
from ui.inventory.ItemIDs import *
|
||||||
|
|
||||||
|
from player import Player
|
||||||
|
from player.gun.PlayerBulletDamages import *
|
||||||
|
from textures.player import PlayerTextures
|
||||||
|
|
||||||
|
from player.gun.bullets import PlayerBullet
|
||||||
|
from player.gun.bullets import DefaultBullet
|
||||||
|
from player.gun import PlayerGun
|
||||||
|
|
||||||
|
from tiles import Tile
|
||||||
|
|
||||||
|
from worldgen import WorldGenerator
|
||||||
|
|
||||||
|
### MOBS
|
||||||
|
import mobs.MobDamages
|
||||||
|
import mobs.MobHealths
|
||||||
|
import mobs.MobSpeeds
|
||||||
|
from mobs.MobDamages import *
|
||||||
|
from mobs.MobHealths import *
|
||||||
|
from mobs.MobSpeeds import *
|
||||||
|
|
||||||
|
from mobs.scraveller import Scraveller
|
||||||
|
|
||||||
|
|
||||||
|
## IMPORT JMP3
|
||||||
|
from jmp3 import MP3Player
|
||||||
|
from jmp3 import AdvancedMP3Player
|
||||||
8
src/mobs/MobDamages.java
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
package mobs;
|
||||||
|
|
||||||
|
public interface MobDamages {
|
||||||
|
|
||||||
|
public static final float SCRAVELLER_DAMAGE = 5;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
9
src/mobs/MobHealths.java
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
package mobs;
|
||||||
|
|
||||||
|
public interface MobHealths {
|
||||||
|
|
||||||
|
|
||||||
|
public static final int SCRAVELLER_HEALTH = 6;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
7
src/mobs/MobSpeeds.java
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
package mobs;
|
||||||
|
|
||||||
|
public interface MobSpeeds {
|
||||||
|
|
||||||
|
public static final float SCRAVELLER_SPEED = 0.175f;
|
||||||
|
|
||||||
|
}
|
||||||
108
src/mobs/scraveller/Scraveller.java
Executable file
@@ -0,0 +1,108 @@
|
|||||||
|
package mobs.scraveller;
|
||||||
|
|
||||||
|
import static sjgs.core.jython.Jython.pi;
|
||||||
|
import static sjgs.utils.pyutils.PyUtils.java2py;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import org.python.core.PyBoolean;
|
||||||
|
import org.python.core.PyFloat;
|
||||||
|
import org.python.core.PyFunction;
|
||||||
|
import org.python.core.PyObject;
|
||||||
|
import core.Main;
|
||||||
|
import jmp3.MP3Player;
|
||||||
|
import mobs.MobDamages;
|
||||||
|
import mobs.MobHealths;
|
||||||
|
import mobs.MobSpeeds;
|
||||||
|
import sjgs.base_objects.Bullet;
|
||||||
|
import sjgs.base_objects.Mob;
|
||||||
|
import sjgs.graphics.Animation;
|
||||||
|
import sjgs.utils.data_structures.Stack;
|
||||||
|
import sjgs.utils.data_structures.shapes.Rectangle;
|
||||||
|
import textures.mobs.ScravellerTextures;
|
||||||
|
|
||||||
|
public class Scraveller extends Mob {
|
||||||
|
|
||||||
|
/******* SOUNDS ************************************/
|
||||||
|
public static final String deathSound = "/splat.mp3", walkSound = "???";
|
||||||
|
/***************************************************/
|
||||||
|
|
||||||
|
private static PyFloat speed = new PyFloat(MobSpeeds.SCRAVELLER_SPEED);
|
||||||
|
|
||||||
|
public static final int WIDTH = 4, HEIGHT = 4;
|
||||||
|
public Rectangle territory;
|
||||||
|
private final PyObject _territory;
|
||||||
|
public int pointsIndex;
|
||||||
|
public boolean clockWise;
|
||||||
|
|
||||||
|
/** @hitBullets: all the bullets that have already hit the mob as to not
|
||||||
|
* calc damage on them every tick if they are in the stack */
|
||||||
|
public final Stack<Bullet> hitBullets;
|
||||||
|
|
||||||
|
public Scraveller(final Rectangle territory, final boolean clockWise) {
|
||||||
|
super(territory.pos.x, territory.pos.y - HEIGHT, WIDTH, HEIGHT);
|
||||||
|
self = java2py(this);
|
||||||
|
move = ScravellerTextures.move.clone();
|
||||||
|
moveFlipped = ScravellerTextures.moveFlipped.clone();
|
||||||
|
rotatedRight = ScravellerTextures.rotatedRight;
|
||||||
|
rotatedLeft = ScravellerTextures.rotatedLeft;
|
||||||
|
this.territory = territory;
|
||||||
|
this.clockWise = clockWise;
|
||||||
|
health = MobHealths.SCRAVELLER_HEALTH;
|
||||||
|
damage = MobDamages.SCRAVELLER_DAMAGE;
|
||||||
|
hitBullets = new Stack<Bullet>();
|
||||||
|
_territory = java2py(territory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
ai.__call__(self, _territory, speed, new PyBoolean(clockWise));
|
||||||
|
scravellerCollision.__call__(self);
|
||||||
|
updatePosition();
|
||||||
|
runAnimations.__call__(self);
|
||||||
|
checkIfAlive();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(final Graphics2D g2d) {
|
||||||
|
final float vx = getVelX();
|
||||||
|
final float vy = getVelY();
|
||||||
|
if(clockWise) {
|
||||||
|
if(vx < 0) moveFlipped.drawAnimation(g2d, getBounds());
|
||||||
|
else if(vx > 0) move.drawAnimation(g2d, getBounds());
|
||||||
|
else if(vy > 0) rotatedRight.drawAnimation(g2d, getBounds());
|
||||||
|
else if(vy < 0) rotatedLeft.drawAnimation(g2d, getBounds());
|
||||||
|
} else {
|
||||||
|
if(vx < 0) move.drawAnimation(g2d, getBounds());
|
||||||
|
else if(vx > 0) moveFlipped.drawAnimation(g2d, getBounds());
|
||||||
|
else if(vy > 0) rotatedLeft.drawAnimation(g2d, getBounds());
|
||||||
|
else if(vy < 0) rotatedRight.drawAnimation(g2d, getBounds());
|
||||||
|
}
|
||||||
|
// g2d.setColor(red);
|
||||||
|
// territory.draw(g2d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void destroy() {
|
||||||
|
hitBullets.clear();
|
||||||
|
removeFromHandler();
|
||||||
|
final float distance = getCenter().distance(Main.player.getCenter());
|
||||||
|
final float gain = -(distance / Main.TILE_DIAGONAL)*3;
|
||||||
|
if (gain > -65) MP3Player.play(deathSound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------- ANIMATIONS ------------------------------------------------------------------------------------------------- //
|
||||||
|
public final Animation move, moveFlipped, rotatedRight, rotatedLeft;
|
||||||
|
// ------------------------------------ PYTHON -------------------------------------------------------------------------------------------------- //
|
||||||
|
private static PyFunction ai, runAnimations, scravellerCollision; private final PyObject self;
|
||||||
|
public static void createPyFuncs() {
|
||||||
|
ai = pi.get("mob_travel_around_rectangle_ai", PyFunction.class);
|
||||||
|
runAnimations = pi.get("scraveller_run_animations", PyFunction.class);
|
||||||
|
scravellerCollision = pi.get("scraveller_collision", PyFunction.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reverseDirection() { clockWise = !clockWise; }
|
||||||
|
public void setClockwise(final boolean clockWise) { this.clockWise = clockWise; }
|
||||||
|
|
||||||
|
}
|
||||||
42
src/mobs/scraveller/scraveller_ai.py
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
def scraveller_collision(s):
|
||||||
|
response = s.getCollidedObjects()
|
||||||
|
|
||||||
|
bullets = response.collided_bullets;
|
||||||
|
|
||||||
|
for b in bullets:
|
||||||
|
if not s.hitBullets.contains(b):
|
||||||
|
s.hitBullets.add(b)
|
||||||
|
|
||||||
|
# IF IS A PLAYER BULLET
|
||||||
|
if isinstance(b, PlayerBullet):
|
||||||
|
# IF IS THE DEFAULT BULLET
|
||||||
|
if isinstance(b, DefaultBullet):
|
||||||
|
s.setHealth(s.getHealth() - DEFAULT_GUN_DAMAGE)
|
||||||
|
|
||||||
|
players = response.collided_players;
|
||||||
|
|
||||||
|
|
||||||
|
bullets.clear()
|
||||||
|
players.clear()
|
||||||
|
response.discard()
|
||||||
|
|
||||||
|
#def scraveller_walk_sound(s):
|
||||||
|
#d = s.getCenter().distance(Main.player.getCenter())
|
||||||
|
#gain = -(d / Main.TILE_DIAGONAL)*3
|
||||||
|
#if gain < -60: return
|
||||||
|
#SoundPlayer.play(s.walkSound, gain)
|
||||||
|
|
||||||
|
def scraveller_run_animations(s):
|
||||||
|
vx = s.getVelX()
|
||||||
|
vy = s.getVelY()
|
||||||
|
if s.clockWise:
|
||||||
|
if vx < 0: s.moveFlipped.runAnimation()
|
||||||
|
elif vx > 0: s.move.runAnimation()
|
||||||
|
elif vy > 0: s.rotatedRight.runAnimation()
|
||||||
|
elif vy < 0: s.rotatedLeft.runAnimation()
|
||||||
|
else:
|
||||||
|
if vx < 0: s.move.runAnimation()
|
||||||
|
elif vx > 0: s.moveFlipped.runAnimation()
|
||||||
|
elif vy > 0: s.rotatedLeft.runAnimation()
|
||||||
|
elif vy < 0: s.rotatedRight.runAnimation()
|
||||||
|
|
||||||
62
src/player/Player.java
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
package player;
|
||||||
|
|
||||||
|
import static sjgs.core.jython.Jython.pi;
|
||||||
|
import static sjgs.utils.pyutils.PyUtils.java2py;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import org.python.core.PyFunction;
|
||||||
|
import org.python.core.PyObject;
|
||||||
|
import core.Main;
|
||||||
|
import jmp3.MP3Player;
|
||||||
|
import sjgs.base_objects.PlayerBase;
|
||||||
|
import sjgs.physics.structs.CollisionResponse;
|
||||||
|
|
||||||
|
public class Player extends PlayerBase {
|
||||||
|
|
||||||
|
public static final float WALKING_SPEED = Main.TILE_SIZE/6, JUMPING_SPEED = -Main.TILE_SIZE/2;
|
||||||
|
public static final float WIDTH = Main.TILE_SIZE, HEIGHT = Main.TILE_SIZE;
|
||||||
|
|
||||||
|
private boolean prone, lookingUp;
|
||||||
|
private final PyObject self;
|
||||||
|
private final int playerMaxHealth;
|
||||||
|
|
||||||
|
public Player(final float x, final float y) {
|
||||||
|
super(x, y, WIDTH, HEIGHT);
|
||||||
|
self = java2py(this);
|
||||||
|
playerMaxHealth = 7;
|
||||||
|
setHealth(playerMaxHealth);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
final CollisionResponse response = applyPhysics();
|
||||||
|
response.discard();
|
||||||
|
manageJumping();
|
||||||
|
runAnimations.__call__(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(final Graphics2D g2d) { PlayerRenderer.render(this, g2d); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void destroy() { removeFromHandler(); }
|
||||||
|
|
||||||
|
// ------------------------- GETTERS AND SETTERS ------------------------------------------------------------------------------//
|
||||||
|
public boolean getProne() { return prone; }
|
||||||
|
public boolean getLookingUp() { return lookingUp; }
|
||||||
|
public void setProne(final boolean prone) { this.prone = prone; }
|
||||||
|
public void setLookingUp(final boolean lookingUp) { this.lookingUp = lookingUp; }
|
||||||
|
public PyObject getSelf() { return self; }
|
||||||
|
// ------------------------ END GETTERS AND SETTERS ---------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
public void jump() {
|
||||||
|
setVelY(Player.JUMPING_SPEED); setJumping(true);
|
||||||
|
MP3Player.play("/jump_sound.mp3");
|
||||||
|
}
|
||||||
|
public float getPlayerMaxHealth() { return playerMaxHealth; }
|
||||||
|
|
||||||
|
private static PyFunction runAnimations;
|
||||||
|
public static void createPyFuncs() { runAnimations = pi.get("run_player_animations", PyFunction.class); }
|
||||||
|
}
|
||||||
177
src/player/PlayerRenderer.java
Executable file
@@ -0,0 +1,177 @@
|
|||||||
|
package player;
|
||||||
|
|
||||||
|
import static textures.player.PlayerTextures.*;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
|
||||||
|
class PlayerRenderer {
|
||||||
|
|
||||||
|
private static final float _white = 0.70f,
|
||||||
|
_gray = 0.50f,
|
||||||
|
_pale_green = 0.30f,
|
||||||
|
_green = 0.10f;
|
||||||
|
|
||||||
|
private final static int offset = 2; // NOTE YOU DO NEED THIS!
|
||||||
|
|
||||||
|
static void render(final Player player, final Graphics2D g2d) {
|
||||||
|
|
||||||
|
final boolean right = player.facingRight();
|
||||||
|
final boolean lookingUp = player.getLookingUp();
|
||||||
|
final boolean jumping = player.getJumping();
|
||||||
|
final boolean falling = player.getFalling();
|
||||||
|
final boolean prone = player.getProne();
|
||||||
|
final boolean stopped = player.stopped();
|
||||||
|
final boolean white = player.getHealth() >= player.getPlayerMaxHealth() * _white;
|
||||||
|
final boolean gray = player.getHealth() >= player.getPlayerMaxHealth() * _gray;
|
||||||
|
final boolean pale_green = player.getHealth() >= player.getPlayerMaxHealth() * _pale_green;
|
||||||
|
final boolean green = player.getHealth() >= player.getPlayerMaxHealth() * _green;
|
||||||
|
final int x = (int)player.getX();
|
||||||
|
final int y = (int)player.getY();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(white) {
|
||||||
|
if(prone) {
|
||||||
|
if(falling || jumping) g2d.drawImage(right ? playerLookingDownRight : playerLookingDownLeft, x - offset, y - offset, null);
|
||||||
|
else g2d.drawImage(right ? playerProneRight : playerProneLeft, x - offset, y - offset, null);
|
||||||
|
} else if(!lookingUp) {
|
||||||
|
if(falling) g2d.drawImage(right ? playerFallingRight : playerFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? playerJumpingRight : playerJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) playerIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else playerIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) playerWalkRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else playerWalkLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(falling) g2d.drawImage(right ? playerLookingUpFallingRight : playerLookingUpFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? playerLookingUpJumpingRight : playerLookingUpJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) playerLookingUpIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else playerLookingUpIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) playerLookingUpRunningRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else playerLookingUpRunningLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
else if(gray) {
|
||||||
|
if(prone) {
|
||||||
|
if(falling || jumping) g2d.drawImage(right ? GRAYplayerLookingDownRight : GRAYplayerLookingDownLeft, x - offset, y - offset, null);
|
||||||
|
else g2d.drawImage(right ? GRAYplayerProneRight : GRAYplayerProneLeft, x - offset, y - offset, null);
|
||||||
|
} else if(!lookingUp) {
|
||||||
|
if(falling) g2d.drawImage(right ? GRAYplayerFallingRight : GRAYplayerFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? GRAYplayerJumpingRight : GRAYplayerJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) GRAYplayerIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GRAYplayerIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) GRAYplayerWalkRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GRAYplayerWalkLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(falling) g2d.drawImage(right ? GRAYplayerLookingUpFallingRight : GRAYplayerLookingUpFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? GRAYplayerLookingUpJumpingRight : GRAYplayerLookingUpJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) GRAYplayerLookingUpIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GRAYplayerLookingUpIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) GRAYplayerLookingUpRunningRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GRAYplayerLookingUpRunningLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
else if(pale_green) {
|
||||||
|
if(prone) {
|
||||||
|
if(falling || jumping) g2d.drawImage(right ? PALE_GREENplayerLookingDownRight : PALE_GREENplayerLookingDownLeft, x - offset, y - offset, null);
|
||||||
|
else g2d.drawImage(right ? PALE_GREENplayerProneRight : PALE_GREENplayerProneLeft, x - offset, y - offset, null);
|
||||||
|
} else if(!lookingUp) {
|
||||||
|
if(falling) g2d.drawImage(right ? PALE_GREENplayerFallingRight : PALE_GREENplayerFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? PALE_GREENplayerJumpingRight : PALE_GREENplayerJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) PALE_GREENplayerIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else PALE_GREENplayerIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) PALE_GREENplayerWalkRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else PALE_GREENplayerWalkLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(falling) g2d.drawImage(right ? PALE_GREENplayerLookingUpFallingRight : PALE_GREENplayerLookingUpFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? PALE_GREENplayerLookingUpJumpingRight : PALE_GREENplayerLookingUpJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) PALE_GREENplayerLookingUpIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else PALE_GREENplayerLookingUpIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) PALE_GREENplayerLookingUpRunningRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else PALE_GREENplayerLookingUpRunningLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
else if(green) {
|
||||||
|
if(prone) {
|
||||||
|
if(falling || jumping) g2d.drawImage(right ? GREENplayerLookingDownRight : GREENplayerLookingDownLeft, x - offset, y - offset, null);
|
||||||
|
else g2d.drawImage(right ? GREENplayerProneRight : GREENplayerProneLeft, x - offset, y - offset, null);
|
||||||
|
} else if(!lookingUp) {
|
||||||
|
if(falling) g2d.drawImage(right ? GREENplayerFallingRight : GREENplayerFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? GREENplayerJumpingRight : GREENplayerJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) GREENplayerIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GREENplayerIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) GREENplayerWalkRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GREENplayerWalkLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(falling) g2d.drawImage(right ? GREENplayerLookingUpFallingRight : GREENplayerLookingUpFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? GREENplayerLookingUpJumpingRight : GREENplayerLookingUpJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) GREENplayerLookingUpIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GREENplayerLookingUpIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) GREENplayerLookingUpRunningRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else GREENplayerLookingUpRunningLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// BROWN --- below 10% health
|
||||||
|
else {
|
||||||
|
if(prone) {
|
||||||
|
if(falling || jumping) g2d.drawImage(right ? BROWNplayerLookingDownRight : BROWNplayerLookingDownLeft, x - offset, y - offset, null);
|
||||||
|
else g2d.drawImage(right ? BROWNplayerProneRight : BROWNplayerProneLeft, x - offset, y - offset, null);
|
||||||
|
} else if(!lookingUp) {
|
||||||
|
if(falling) g2d.drawImage(right ? BROWNplayerFallingRight : BROWNplayerFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? BROWNplayerJumpingRight : BROWNplayerJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) BROWNplayerIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else BROWNplayerIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) BROWNplayerWalkRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else BROWNplayerWalkLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(falling) g2d.drawImage(right ? BROWNplayerLookingUpFallingRight : BROWNplayerLookingUpFallingLeft, x - offset, y - offset, null);
|
||||||
|
else if(jumping) g2d.drawImage(right ? BROWNplayerLookingUpJumpingRight : BROWNplayerLookingUpJumpingLeft, x - offset, y - offset, null);
|
||||||
|
else if(stopped) {
|
||||||
|
if(right) BROWNplayerLookingUpIdleRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else BROWNplayerLookingUpIdleLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
} else {
|
||||||
|
if(right) BROWNplayerLookingUpRunningRight.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
else BROWNplayerLookingUpRunningLeft.drawAnimation(g2d, x - offset, y - offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
8
src/player/gun/PlayerBulletDamages.java
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
package player.gun;
|
||||||
|
|
||||||
|
public interface PlayerBulletDamages {
|
||||||
|
|
||||||
|
|
||||||
|
public static float DEFAULT_GUN_DAMAGE = 3;
|
||||||
|
|
||||||
|
}
|
||||||
28
src/player/gun/PlayerGun.java
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
package player.gun;
|
||||||
|
|
||||||
|
import static sjgs.core.jython.Jython.pi;
|
||||||
|
import org.python.core.PyFunction;
|
||||||
|
import player.Player;
|
||||||
|
|
||||||
|
public class PlayerGun {
|
||||||
|
|
||||||
|
private static long then;
|
||||||
|
|
||||||
|
public static void shoot(final Player player) {
|
||||||
|
|
||||||
|
if(System.currentTimeMillis() - then > 175) {
|
||||||
|
shoot.__call__(player.getSelf());
|
||||||
|
then = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* uncomment for interactive scripting */
|
||||||
|
// pi.exec(readTextFileAsString("/player/gun/player_gun.py"));
|
||||||
|
// initPyFuncs();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PyFunction shoot;
|
||||||
|
public static void initPyFuncs() {
|
||||||
|
shoot = pi.get("player_shoot", PyFunction.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
76
src/player/gun/bullets/DefaultBullet.java
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
package player.gun.bullets;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.isPositive;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import core.Main;
|
||||||
|
import sjgs.enums.Facing;
|
||||||
|
import sjgs.graphics.Animation;
|
||||||
|
import sjgs.physics.structs.CollisionResponse;
|
||||||
|
import sjgs.utils.data_structures.vectors.Point2f;
|
||||||
|
import textures.player.PlayerGunTextures;
|
||||||
|
|
||||||
|
public class DefaultBullet extends PlayerBullet {
|
||||||
|
|
||||||
|
public static final String sound = "/tir.mp3";
|
||||||
|
|
||||||
|
private static final int w = 8, h = 1, health_timer = 18;
|
||||||
|
private final Animation animation;
|
||||||
|
private final Point2f p;
|
||||||
|
private final Facing facing;
|
||||||
|
|
||||||
|
/** @constructor: velX / velY are the player's velocity at initial shot */
|
||||||
|
public DefaultBullet(final Point2f p, final Facing facing, final float velX, final float velY) {
|
||||||
|
// note the +2 and +1, leave them!
|
||||||
|
super(p.x + 2, p.y + 1, facing == Facing.RIGHT || facing == Facing.LEFT ? w : h, facing == Facing.RIGHT || facing == Facing.LEFT ? h : w, velX, velY, 0, health_timer);
|
||||||
|
this.p = p; this.facing = facing;
|
||||||
|
switch(facing) {
|
||||||
|
case RIGHT: animation = PlayerGunTextures.default_gun_right.clone(); break;
|
||||||
|
case LEFT: animation = PlayerGunTextures.default_gun_left.clone(); break;
|
||||||
|
case ABOVE: animation = PlayerGunTextures.default_gun_up.clone(); break;
|
||||||
|
default: animation = PlayerGunTextures.default_gun_down.clone(); break; // (down)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
final CollisionResponse response = getCollidedObjects();
|
||||||
|
|
||||||
|
// do collision stuff here
|
||||||
|
|
||||||
|
response.discard();
|
||||||
|
|
||||||
|
animation.playAnimationOnce();
|
||||||
|
|
||||||
|
if(isMoving()) {
|
||||||
|
// if player changed directions since last shot, set the bullet velocity to zero
|
||||||
|
final float pvx = Main.player.getVelX(), pvy = Main.player.getVelY(), vx = getVelX(), vy = getVelY();
|
||||||
|
if(pvx == 0 || isPositive(vx) ^ isPositive(pvx)) setVelX(0);
|
||||||
|
if(pvy == 0 || isPositive(vy) ^ isPositive(pvy)) setVelY(0);
|
||||||
|
// update animation position
|
||||||
|
p.x += getVelX();
|
||||||
|
p.y += getVelY();
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE YOU DO NEED THIS, it updates the bounds pos when running to match animation
|
||||||
|
updatePosition();
|
||||||
|
|
||||||
|
if(timer.tick()) destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(final Graphics2D g2d) {
|
||||||
|
if(animation != null) animation.drawAnimation(g2d, p);
|
||||||
|
|
||||||
|
// g2d.setColor(Color.blue);
|
||||||
|
// getFullBounds().draw(g2d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void destroy() {
|
||||||
|
removeFromHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
21
src/player/gun/bullets/PlayerBullet.java
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
package player.gun.bullets;
|
||||||
|
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import sjgs.base_objects.Bullet;
|
||||||
|
|
||||||
|
public abstract class PlayerBullet extends Bullet {
|
||||||
|
|
||||||
|
public PlayerBullet(final float x, final float y, final float w, final float h, final float velX, final float velY, final int elasticity, final int health_timer) {
|
||||||
|
super(x, y, w, h, velX, velY, elasticity, health_timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected abstract void init();
|
||||||
|
@Override
|
||||||
|
public abstract void tick();
|
||||||
|
@Override
|
||||||
|
public abstract void render(Graphics2D g2d);
|
||||||
|
@Override
|
||||||
|
protected abstract void destroy();
|
||||||
|
|
||||||
|
}
|
||||||
136
src/player/gun/player_gun.py
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
# DIFFERENT BULLETS:
|
||||||
|
DEFAULT_GUN = 1
|
||||||
|
|
||||||
|
import textures.player.PlayerTextures as PlayerTextures
|
||||||
|
|
||||||
|
# creates the bullet for gun to shoot
|
||||||
|
def player_shoot(player):
|
||||||
|
p = getPlayerGunPositionPoint(player)
|
||||||
|
dir = getPlayerBulletDirection(player)
|
||||||
|
b = whichPlayerBullet(player)
|
||||||
|
|
||||||
|
# create the bullet
|
||||||
|
if b == DEFAULT_GUN:
|
||||||
|
down_multiplier = 1/3
|
||||||
|
if dir == Facing.BELOW or dir == Facing.ABOVE: DefaultBullet(p, dir, 0, player.getVelY() * down_multiplier)
|
||||||
|
elif (dir == Facing.RIGHT or dir == Facing.LEFT) or dir == Facing.ABOVE and player.getVelX() != 0: DefaultBullet(p, dir, player.getVelX(), 0)
|
||||||
|
else: DefaultBullet(p, dir, 0, 0)
|
||||||
|
|
||||||
|
# play shooting sound
|
||||||
|
playerBulletSound(b)
|
||||||
|
|
||||||
|
# gets the position of the gun barrel location
|
||||||
|
# NOTE: use (int) as graphics cannot be floating points!
|
||||||
|
def getPlayerGunPositionPoint(player):
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
|
||||||
|
# get variables for clarity
|
||||||
|
right = player.getFacing() == Facing.RIGHT
|
||||||
|
left = not right
|
||||||
|
jumping = player.getJumping()
|
||||||
|
falling = player.getFalling()
|
||||||
|
up = player.getLookingUp()
|
||||||
|
down = player.getProne() and (player.getFalling() or player.getJumping())
|
||||||
|
moving = player.getVelX() != 0 or player.getVelY() != 0
|
||||||
|
prone = player.getProne() and not (player.getFalling() or player.getJumping()) and not moving
|
||||||
|
|
||||||
|
cx = int(player.getCenterX())
|
||||||
|
cy = int(player.getCenterY())
|
||||||
|
|
||||||
|
idle = not falling and not jumping and not up and not down and not prone and not moving
|
||||||
|
idleUp = not falling and not jumping and up and not down and not prone and not moving
|
||||||
|
running = not falling and not jumping and not up and not down and not prone and moving
|
||||||
|
runningUp = not falling and not jumping and up and not down and not prone and moving
|
||||||
|
jumping = (jumping or falling) and not up
|
||||||
|
jumpingUp = (jumping or falling or player.getVelY() < 0) and up
|
||||||
|
|
||||||
|
############ IF FACING RIGHT ############################################################################
|
||||||
|
if right:
|
||||||
|
if idle:
|
||||||
|
x = cx + 4
|
||||||
|
y = cy - 2
|
||||||
|
if PlayerTextures.playerIdleRight.currentFrame == PlayerTextures.playerIdleRight.size() - 1: y += 1
|
||||||
|
elif idleUp:
|
||||||
|
x = cx - 1
|
||||||
|
y = cy - 14
|
||||||
|
if PlayerTextures.playerLookingUpIdleRight.currentFrame == PlayerTextures.playerLookingUpIdleRight.size() - 1: y += 1
|
||||||
|
elif running:
|
||||||
|
x = cx + 4
|
||||||
|
y = cy - 2
|
||||||
|
if PlayerTextures.playerWalkRight.currentFrame % 2 == 0: y -= 1
|
||||||
|
if PlayerTextures.playerWalkRight.currentFrame == 1: x += 1
|
||||||
|
if PlayerTextures.playerWalkRight.currentFrame == 3: x -= 1
|
||||||
|
elif runningUp:
|
||||||
|
x = cx
|
||||||
|
y = cy - 14
|
||||||
|
if PlayerTextures.playerLookingUpRunningRight.currentFrame % 2 == 0: y -= 1
|
||||||
|
if PlayerTextures.playerLookingUpRunningRight.currentFrame == 1: x += 1
|
||||||
|
if PlayerTextures.playerLookingUpRunningRight.currentFrame == 3: x -= 1
|
||||||
|
elif prone:
|
||||||
|
x = cx + 5
|
||||||
|
y = cy
|
||||||
|
elif down:
|
||||||
|
x = cx - 2
|
||||||
|
y = cy + 5
|
||||||
|
elif jumping:
|
||||||
|
x = cx + 4
|
||||||
|
y = cy - 1
|
||||||
|
elif jumpingUp:
|
||||||
|
x = cx - 1
|
||||||
|
y = cy - 9
|
||||||
|
################## IF FACING LEFT #######################################################################
|
||||||
|
else:
|
||||||
|
if idle:
|
||||||
|
x = cx - 13
|
||||||
|
y = cy - 2
|
||||||
|
if PlayerTextures.playerIdleLeft.currentFrame == PlayerTextures.playerIdleLeft.size() - 1: y += 1
|
||||||
|
elif idleUp:
|
||||||
|
x = cx - 2
|
||||||
|
y = cy - 14
|
||||||
|
if PlayerTextures.playerLookingUpIdleLeft.currentFrame == PlayerTextures.playerLookingUpIdleLeft.size() - 1: y += 1
|
||||||
|
elif running:
|
||||||
|
x = cx - 13
|
||||||
|
y = cy - 2
|
||||||
|
if PlayerTextures.playerWalkLeft.currentFrame % 2 == 0: y -= 1
|
||||||
|
if PlayerTextures.playerWalkLeft.currentFrame == 1: x -= 1
|
||||||
|
if PlayerTextures.playerWalkLeft.currentFrame == 3: x += 1
|
||||||
|
elif runningUp:
|
||||||
|
x = cx - 2
|
||||||
|
y = cy - 14
|
||||||
|
if PlayerTextures.playerLookingUpRunningLeft.currentFrame % 2 == 0: y -= 1
|
||||||
|
if PlayerTextures.playerLookingUpRunningLeft.currentFrame == 1: x -= 1
|
||||||
|
if PlayerTextures.playerLookingUpRunningLeft.currentFrame == 3: x += 1
|
||||||
|
elif prone:
|
||||||
|
x = cx - 14
|
||||||
|
y = cy
|
||||||
|
elif down:
|
||||||
|
x = cx - 1
|
||||||
|
y = cy + 7
|
||||||
|
elif jumping:
|
||||||
|
x = cx - 12
|
||||||
|
y = cy - 1
|
||||||
|
elif jumpingUp:
|
||||||
|
x = cx - 2
|
||||||
|
y = cy - 9
|
||||||
|
##################################################################################################################
|
||||||
|
return Point2f(x, y)
|
||||||
|
|
||||||
|
def playerBulletSound(b):
|
||||||
|
if b == DEFAULT_GUN: MP3Player.play(DefaultBullet.sound)
|
||||||
|
|
||||||
|
def getPlayerBulletDirection(player):
|
||||||
|
right = player.getFacing() == Facing.RIGHT
|
||||||
|
left = not right
|
||||||
|
prone = player.getProne() and not (player.getFalling() or player.getJumping())
|
||||||
|
up = player.getLookingUp()
|
||||||
|
down = player.getProne() and (player.getFalling() or player.getJumping())
|
||||||
|
|
||||||
|
if right and not down and not up: return Facing.RIGHT
|
||||||
|
elif left and not down and not up: return Facing.LEFT
|
||||||
|
elif down: return Facing.BELOW
|
||||||
|
elif up: return Facing.ABOVE
|
||||||
|
|
||||||
|
# determines which kind of bullet to shoot
|
||||||
|
def whichPlayerBullet(player):
|
||||||
|
return DEFAULT_GUN
|
||||||
60
src/player/player_animations.py
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
### NOTE we run them all here as its the easiest way to get them sync'd up, and
|
||||||
|
# with my animation implementation its only incrementing an int, so its not resource intensive.
|
||||||
|
|
||||||
|
def run_player_animations(p):
|
||||||
|
# IF RUNNING NORMALLY
|
||||||
|
if not p.getProne() and not p.getFalling() and not p.getLookingUp() and not p.stopped():
|
||||||
|
if p.facingRight():
|
||||||
|
PlayerTextures.playerWalkRight.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerWalkRight.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerWalkRight.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerWalkRight.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerWalkRight.runAnimation()
|
||||||
|
else:
|
||||||
|
PlayerTextures.playerWalkLeft.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerWalkLeft.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerWalkLeft.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerWalkLeft.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerWalkLeft.runAnimation()
|
||||||
|
# IF RUNNING LOOKING UP
|
||||||
|
elif not p.getProne() and not p.getFalling() and not p.stopped():
|
||||||
|
if p.facingRight():
|
||||||
|
PlayerTextures.playerLookingUpRunningRight.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerLookingUpRunningRight.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerLookingUpRunningRight.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerLookingUpRunningRight.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerLookingUpRunningRight.runAnimation()
|
||||||
|
else:
|
||||||
|
PlayerTextures.playerLookingUpRunningLeft.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerLookingUpRunningLeft.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerLookingUpRunningLeft.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerLookingUpRunningLeft.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerLookingUpRunningLeft.runAnimation()
|
||||||
|
# IF IDLE NORMAL
|
||||||
|
elif not p.getProne() and not p.getFalling() and not p.getLookingUp():
|
||||||
|
if p.facingRight():
|
||||||
|
PlayerTextures.playerIdleRight.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerIdleRight.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerIdleRight.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerIdleRight.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerIdleRight.runAnimation()
|
||||||
|
else:
|
||||||
|
PlayerTextures.playerIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerIdleLeft.runAnimation()
|
||||||
|
# IF IDLE LOOKING UP
|
||||||
|
elif not p.getProne() and not p.getFalling() and p.stopped() and p.getLookingUp():
|
||||||
|
if p.facingRight():
|
||||||
|
PlayerTextures.playerLookingUpIdleRight.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerLookingUpIdleRight.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerLookingUpIdleRight.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerLookingUpIdleRight.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerLookingUpIdleRight.runAnimation()
|
||||||
|
else:
|
||||||
|
PlayerTextures.playerLookingUpIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.GRAYplayerLookingUpIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.PALE_GREENplayerLookingUpIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.GREENplayerLookingUpIdleLeft.runAnimation()
|
||||||
|
PlayerTextures.BROWNplayerLookingUpIdleLeft.runAnimation()
|
||||||
31
src/tiles/Tile.java
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
package tiles;
|
||||||
|
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import sjgs.base_objects.BaseTile;
|
||||||
|
import textures.tiles.TileTextures;
|
||||||
|
|
||||||
|
public class Tile extends BaseTile {
|
||||||
|
|
||||||
|
public Tile(final int x, final int y, final int w, final int h, final float startingHeightPercentage, final float endingHeightPercentage) {
|
||||||
|
super(x, y, w, h, startingHeightPercentage, endingHeightPercentage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// no args = not angled
|
||||||
|
public Tile(final int x, final int y, final int w, final int h) { super(x, y, w, h, 0, 0); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(final Graphics2D g2d) {
|
||||||
|
g2d.drawImage(TileTextures.tile1, (int)getX(), (int)getY(), null); // NOTE YOU NEED THE +2!!!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() { removeFromHandler(); }
|
||||||
|
|
||||||
|
}
|
||||||
3
src/ui/HUD.java
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
package ui;
|
||||||
|
|
||||||
|
public class HUD {}
|
||||||
48
src/ui/inventory/Inventory.java
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
package ui.inventory;
|
||||||
|
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import sjgs.graphics.ui.InventorySystem;
|
||||||
|
import sjgs.graphics.ui.InventorySystemSlot;
|
||||||
|
|
||||||
|
public class Inventory extends InventorySystem {
|
||||||
|
|
||||||
|
public Inventory(final float x, final float y, final float width, final float height) {
|
||||||
|
super(x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLeftClick() {
|
||||||
|
baseOnLeftClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getStackableAmount(final int itemId) { return 0; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isStackable(final int itemId) { return false; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(final Graphics2D g2d) {
|
||||||
|
for(final InventorySystemSlot slot : getSlots()) slot.render(g2d);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
for(final InventorySystemSlot slot : getSlots()) slot.tick();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void swapSlots(final InventorySystemSlot a, final InventorySystemSlot b) {
|
||||||
|
baseSwapSlots(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {}
|
||||||
|
|
||||||
|
}
|
||||||
35
src/ui/inventory/InventorySlot.java
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
package ui.inventory;
|
||||||
|
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import sjgs.graphics.ui.InventorySystemSlot;
|
||||||
|
|
||||||
|
public class InventorySlot extends InventorySystemSlot {
|
||||||
|
|
||||||
|
|
||||||
|
public InventorySlot(final float x, final float y, final float w, final float h, final int slotNumber) {
|
||||||
|
super(x, y, w, h, slotNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(final Graphics2D g2d) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reset() {
|
||||||
|
baseReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
17
src/ui/inventory/ItemIDs.java
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
package ui.inventory;
|
||||||
|
|
||||||
|
public interface ItemIDs {
|
||||||
|
|
||||||
|
|
||||||
|
public static final int UPGRADED_DEFAULT_GUN = 1,
|
||||||
|
DOUBLE_JUMP = 2,
|
||||||
|
NIGHT_VISION = 3,
|
||||||
|
DASH_BOOSTER = 4,
|
||||||
|
LAVA_SUIT = 5,
|
||||||
|
WATER_SUIT = 6,
|
||||||
|
MAP = 7,
|
||||||
|
DEFAULT_GUN = 8;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
59
src/worldgen/TestMapCreator.java
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
package worldgen;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.COIN_FLIP;
|
||||||
|
import static sjgs.utils.Utils.loadImage;
|
||||||
|
import static sjgs.utils.Utils.unpackBlue;
|
||||||
|
import static sjgs.utils.Utils.unpackGreen;
|
||||||
|
import static sjgs.utils.Utils.unpackRed;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import core.Main;
|
||||||
|
import mobs.scraveller.Scraveller;
|
||||||
|
import sjgs.utils.data_structures.shapes.Rectangle;
|
||||||
|
import sjgs.utils.data_structures.vectors.Point2f;
|
||||||
|
import sjgs.utils.multithreading.Runner;
|
||||||
|
import tiles.Tile;
|
||||||
|
|
||||||
|
public class TestMapCreator {
|
||||||
|
|
||||||
|
public static void createTestMap() {
|
||||||
|
|
||||||
|
final int TILE_SIZE = Main.TILE_SIZE;
|
||||||
|
|
||||||
|
final BufferedImage map = loadImage("/map.png");
|
||||||
|
Main.camera.setLimitsWithRect(0, 0, map.getWidth()*6, map.getHeight()*6);
|
||||||
|
|
||||||
|
for (int i = 0; i < map.getHeight(); i++) {
|
||||||
|
for (int j = 0; j < map.getWidth(); j++) {
|
||||||
|
final int col = i, row = j;
|
||||||
|
new Runner(() -> {
|
||||||
|
|
||||||
|
final int pixel = map.getRGB(col, row);
|
||||||
|
final int r = unpackRed(pixel);
|
||||||
|
final int g = unpackGreen(pixel);
|
||||||
|
final int b = unpackBlue(pixel);
|
||||||
|
|
||||||
|
if(r == 64 && g == 64 && b == 64) new Tile(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE);
|
||||||
|
else if(r == 0 && g == 0 && b == 255) Main.player.setLocation(col * TILE_SIZE, row * TILE_SIZE);
|
||||||
|
else if(r == 255 && g == 0 && b == 0) {
|
||||||
|
new Tile(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE);
|
||||||
|
new Scraveller( new Rectangle( new Point2f(col * TILE_SIZE, row * TILE_SIZE), 2*TILE_SIZE, TILE_SIZE ), COIN_FLIP() );
|
||||||
|
}
|
||||||
|
else if(r == 255 && g == 255 && b == 255) {
|
||||||
|
new Tile(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE);
|
||||||
|
new Scraveller( new Rectangle( new Point2f(col * TILE_SIZE, row * TILE_SIZE), 3*TILE_SIZE, TILE_SIZE ), COIN_FLIP() );
|
||||||
|
}
|
||||||
|
else if(r == 255 && g == 200 && b == 0) {
|
||||||
|
new Tile(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE);
|
||||||
|
new Scraveller( new Rectangle( new Point2f(col * TILE_SIZE, row * TILE_SIZE), TILE_SIZE, TILE_SIZE ), COIN_FLIP() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} ).run();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
36
src/worldgen/WorldGenerator.java
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
package worldgen;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.loadImage;
|
||||||
|
import core.Main;
|
||||||
|
import player.Player;
|
||||||
|
import sjgs.core.Handler;
|
||||||
|
import sjgs.graphics.backgrounds.Background;
|
||||||
|
import sjgs.graphics.backgrounds.ParallaxBackground;
|
||||||
|
|
||||||
|
public class WorldGenerator {
|
||||||
|
|
||||||
|
public static ParallaxBackground currentBackground;
|
||||||
|
|
||||||
|
public static void generateWorld() {
|
||||||
|
Handler.clearAll();
|
||||||
|
Main.player = new Player(0, 0);
|
||||||
|
TestMapCreator.createTestMap();
|
||||||
|
|
||||||
|
final int startX = 0, startY = 0;
|
||||||
|
|
||||||
|
final Background background = new Background(loadImage("/background.png"), startX, startY, 100, 0, true);
|
||||||
|
final Background midground = new Background(loadImage("/midground.png"), startX, startY, 50, 100, true);
|
||||||
|
final Background foreground = new Background(loadImage("/foreground.png"), startX, startY, 80, 0, true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
currentBackground = new ParallaxBackground(background, midground, foreground);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// currentBackground = new ParallaxBackground(midground);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
7
textures/textures/Texture.java
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
package textures;
|
||||||
|
|
||||||
|
public interface Texture {
|
||||||
|
|
||||||
|
abstract void getTextures();
|
||||||
|
|
||||||
|
}
|
||||||
25
textures/textures/TextureLoader.java
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
package textures;
|
||||||
|
|
||||||
|
import sjgs.utils.multithreading.Runner;
|
||||||
|
import textures.mobs.ScravellerTextures;
|
||||||
|
import textures.player.PlayerGunTextures;
|
||||||
|
import textures.player.PlayerTextures;
|
||||||
|
import textures.tiles.TileTextures;
|
||||||
|
|
||||||
|
public final class TextureLoader {
|
||||||
|
|
||||||
|
|
||||||
|
public static void getTextures() {
|
||||||
|
// PLAYER STUFF
|
||||||
|
new Runner(() -> new PlayerTextures().getTextures() ).run();
|
||||||
|
new Runner(() -> new PlayerGunTextures().getTextures() ).run();
|
||||||
|
|
||||||
|
new Runner(() -> new TileTextures().getTextures() ).run();
|
||||||
|
//MOBS
|
||||||
|
new Runner(() -> new ScravellerTextures().getTextures() ).run();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
27
textures/textures/mobs/ScravellerTextures.java
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
package textures.mobs;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.grabSprite;
|
||||||
|
import static sjgs.utils.Utils.loadImage;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import sjgs.graphics.Animation;
|
||||||
|
import textures.Texture;
|
||||||
|
|
||||||
|
public class ScravellerTextures implements Texture {
|
||||||
|
|
||||||
|
public static Animation move, moveFlipped, rotatedRight, rotatedLeft;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getTextures() {
|
||||||
|
final int MOVE_SPEED = 15;
|
||||||
|
final int width = 5, height = 4;
|
||||||
|
final BufferedImage ss = loadImage("/scraveller.png");
|
||||||
|
|
||||||
|
move = new Animation(MOVE_SPEED,
|
||||||
|
grabSprite(ss, 0, 0, width, height),
|
||||||
|
grabSprite(ss, 1, 0, width, height)
|
||||||
|
);
|
||||||
|
moveFlipped = move.getInverted();
|
||||||
|
rotatedRight = move.getRotatedRight();
|
||||||
|
rotatedLeft = move.getRotatedLeft();
|
||||||
|
}
|
||||||
|
}
|
||||||
34
textures/textures/player/PlayerGunTextures.java
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
package textures.player;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.grabSprite;
|
||||||
|
import static sjgs.utils.Utils.loadImage;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import sjgs.graphics.Animation;
|
||||||
|
import textures.Texture;
|
||||||
|
|
||||||
|
public class PlayerGunTextures implements Texture {
|
||||||
|
|
||||||
|
public static Animation default_gun_right, default_gun_left, default_gun_up, default_gun_down;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getTextures() {
|
||||||
|
final int default_gun_speed = 2;
|
||||||
|
final BufferedImage default_gun_ss = loadImage("/default_gun.png");
|
||||||
|
final int default_gun_width = 11, default_gun_height = 5;
|
||||||
|
|
||||||
|
default_gun_right = new Animation(default_gun_speed,
|
||||||
|
grabSprite(default_gun_ss, 0, 0, default_gun_width, default_gun_height),
|
||||||
|
grabSprite(default_gun_ss, 1, 0, default_gun_width, default_gun_height),
|
||||||
|
grabSprite(default_gun_ss, 2, 0, default_gun_width, default_gun_height),
|
||||||
|
grabSprite(default_gun_ss, 3, 0, default_gun_width, default_gun_height),
|
||||||
|
grabSprite(default_gun_ss, 4, 0, default_gun_width, default_gun_height));
|
||||||
|
default_gun_left = default_gun_right.getReverse();
|
||||||
|
default_gun_up = default_gun_right.getRotatedLeft();
|
||||||
|
default_gun_down = default_gun_right.getRotatedRight();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
299
textures/textures/player/PlayerTextures.java
Executable file
@@ -0,0 +1,299 @@
|
|||||||
|
package textures.player;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.grabSprite;
|
||||||
|
import static sjgs.utils.Utils.loadImage;
|
||||||
|
import static sjgs.utils.Utils.reverseImage;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import sjgs.graphics.Animation;
|
||||||
|
import textures.Texture;
|
||||||
|
|
||||||
|
public class PlayerTextures implements Texture {
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------- WHITE EYE ----------------------------------------------------------------- //
|
||||||
|
public static Animation playerWalkRight, playerWalkLeft, playerIdleLeft, playerIdleRight,
|
||||||
|
playerLookingUpRunningRight, playerLookingUpRunningLeft, playerLookingUpIdleRight,
|
||||||
|
playerLookingUpIdleLeft;
|
||||||
|
public static BufferedImage playerJumpingRight, playerJumpingLeft, playerFallingRight, playerFallingLeft,
|
||||||
|
playerLookingDownRight, playerLookingDownLeft, playerProneRight, playerProneLeft, playerLookingUpJumpingRight,
|
||||||
|
playerLookingUpJumpingLeft, playerLookingUpFallingRight, playerLookingUpFallingLeft;
|
||||||
|
// ------------------ END WHITE EYE -------------------------------------------------------------- //
|
||||||
|
|
||||||
|
// ------------------- GRAY EYE ----------------------------------------------------------------- //
|
||||||
|
public static Animation GRAYplayerWalkRight, GRAYplayerWalkLeft, GRAYplayerIdleLeft, GRAYplayerIdleRight,
|
||||||
|
GRAYplayerLookingUpRunningRight, GRAYplayerLookingUpRunningLeft, GRAYplayerLookingUpIdleRight, GRAYplayerLookingUpIdleLeft;
|
||||||
|
public static BufferedImage GRAYplayerJumpingRight, GRAYplayerJumpingLeft, GRAYplayerFallingRight, GRAYplayerFallingLeft,
|
||||||
|
GRAYplayerLookingDownRight, GRAYplayerLookingDownLeft, GRAYplayerProneRight, GRAYplayerProneLeft,
|
||||||
|
GRAYplayerLookingUpJumpingRight, GRAYplayerLookingUpJumpingLeft, GRAYplayerLookingUpFallingRight,
|
||||||
|
GRAYplayerLookingUpFallingLeft;
|
||||||
|
// ------------------ END GRAY EYE -------------------------------------------------------------- //
|
||||||
|
// ------------------- PALE GREEN EYE ----------------------------------------------------------------- //
|
||||||
|
public static Animation PALE_GREENplayerWalkRight, PALE_GREENplayerWalkLeft, PALE_GREENplayerIdleLeft, PALE_GREENplayerIdleRight,
|
||||||
|
PALE_GREENplayerLookingUpRunningRight, PALE_GREENplayerLookingUpRunningLeft, PALE_GREENplayerLookingUpIdleRight, PALE_GREENplayerLookingUpIdleLeft;
|
||||||
|
public static BufferedImage PALE_GREENplayerJumpingRight, PALE_GREENplayerJumpingLeft, PALE_GREENplayerFallingRight, PALE_GREENplayerFallingLeft,
|
||||||
|
PALE_GREENplayerLookingDownRight, PALE_GREENplayerLookingDownLeft, PALE_GREENplayerProneRight, PALE_GREENplayerProneLeft,
|
||||||
|
PALE_GREENplayerLookingUpJumpingRight, PALE_GREENplayerLookingUpJumpingLeft, PALE_GREENplayerLookingUpFallingRight,
|
||||||
|
PALE_GREENplayerLookingUpFallingLeft;
|
||||||
|
// ------------------ END PALE GREEN EYE -------------------------------------------------------------- //
|
||||||
|
// ------------------- GREEN EYE ----------------------------------------------------------------- //
|
||||||
|
public static Animation GREENplayerWalkRight, GREENplayerWalkLeft, GREENplayerIdleLeft, GREENplayerIdleRight,
|
||||||
|
GREENplayerLookingUpRunningRight, GREENplayerLookingUpRunningLeft, GREENplayerLookingUpIdleRight, GREENplayerLookingUpIdleLeft;
|
||||||
|
public static BufferedImage GREENplayerJumpingRight, GREENplayerJumpingLeft, GREENplayerFallingRight, GREENplayerFallingLeft,
|
||||||
|
GREENplayerLookingDownRight, GREENplayerLookingDownLeft, GREENplayerProneRight, GREENplayerProneLeft,
|
||||||
|
GREENplayerLookingUpJumpingRight, GREENplayerLookingUpJumpingLeft, GREENplayerLookingUpFallingRight,
|
||||||
|
GREENplayerLookingUpFallingLeft;
|
||||||
|
// ------------------ END GREEN EYE -------------------------------------------------------------- //
|
||||||
|
// ------------------- BROWN EYE ----------------------------------------------------------------- //
|
||||||
|
public static Animation BROWNplayerWalkRight, BROWNplayerWalkLeft, BROWNplayerIdleLeft, BROWNplayerIdleRight,
|
||||||
|
BROWNplayerLookingUpRunningRight, BROWNplayerLookingUpRunningLeft, BROWNplayerLookingUpIdleRight, BROWNplayerLookingUpIdleLeft;
|
||||||
|
public static BufferedImage BROWNplayerJumpingRight, BROWNplayerJumpingLeft, BROWNplayerFallingRight, BROWNplayerFallingLeft,
|
||||||
|
BROWNplayerLookingDownRight, BROWNplayerLookingDownLeft, BROWNplayerProneRight, BROWNplayerProneLeft,
|
||||||
|
BROWNplayerLookingUpJumpingRight, BROWNplayerLookingUpJumpingLeft, BROWNplayerLookingUpFallingRight,
|
||||||
|
BROWNplayerLookingUpFallingLeft;
|
||||||
|
// ------------------ END BROWN EYE -------------------------------------------------------------- //
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getTextures() {
|
||||||
|
// WHITE EYE
|
||||||
|
final int w = 12, h = 12;
|
||||||
|
final int RUNNING_SPEED = 8, IDLE_SPEED = 20;
|
||||||
|
BufferedImage ss = loadImage("/Player1.png");
|
||||||
|
playerWalkRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 0, w, h),
|
||||||
|
grabSprite(ss, 1, 0, w, h),
|
||||||
|
grabSprite(ss, 2, 0, w, h),
|
||||||
|
grabSprite(ss, 3, 0, w, h)
|
||||||
|
);
|
||||||
|
playerWalkLeft = playerWalkRight.getReverse();
|
||||||
|
|
||||||
|
playerIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 1, w, h),
|
||||||
|
grabSprite(ss, 1, 1, w, h)
|
||||||
|
);
|
||||||
|
playerIdleLeft = playerIdleRight.getReverse();
|
||||||
|
|
||||||
|
playerJumpingRight = grabSprite(ss, 2, 1, w, h);
|
||||||
|
playerJumpingLeft = reverseImage(playerJumpingRight);
|
||||||
|
|
||||||
|
playerFallingRight = grabSprite(ss, 3, 1, w, h);
|
||||||
|
playerFallingLeft = reverseImage(playerFallingRight);
|
||||||
|
|
||||||
|
playerLookingUpJumpingRight = grabSprite(ss, 4, 0, w, h);
|
||||||
|
playerLookingUpJumpingLeft = reverseImage(playerLookingUpJumpingRight);
|
||||||
|
|
||||||
|
playerLookingUpFallingRight = grabSprite(ss, 4, 1, w, h);
|
||||||
|
playerLookingUpFallingLeft = reverseImage(playerLookingUpFallingRight);
|
||||||
|
|
||||||
|
playerLookingUpIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 2, w, h),
|
||||||
|
grabSprite(ss, 1, 2, w, h)
|
||||||
|
);
|
||||||
|
playerLookingUpIdleLeft = playerLookingUpIdleRight.getReverse();
|
||||||
|
|
||||||
|
playerProneRight = grabSprite(ss, 2, 2, w, h);
|
||||||
|
playerProneLeft = reverseImage(playerProneRight);
|
||||||
|
|
||||||
|
playerLookingDownRight = grabSprite(ss, 3, 2, w, h);
|
||||||
|
playerLookingDownLeft = reverseImage(playerLookingDownRight);
|
||||||
|
|
||||||
|
playerLookingUpRunningRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 3, w, h),
|
||||||
|
grabSprite(ss, 1, 3, w, h),
|
||||||
|
grabSprite(ss, 2, 3, w, h),
|
||||||
|
grabSprite(ss, 3, 3, w, h)
|
||||||
|
);
|
||||||
|
playerLookingUpRunningLeft = playerLookingUpRunningRight.getReverse();
|
||||||
|
|
||||||
|
|
||||||
|
// GRAY EYE
|
||||||
|
ss = loadImage("/Player2.png");
|
||||||
|
GRAYplayerWalkRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 0, w, h),
|
||||||
|
grabSprite(ss, 1, 0, w, h),
|
||||||
|
grabSprite(ss, 2, 0, w, h),
|
||||||
|
grabSprite(ss, 3, 0, w, h)
|
||||||
|
);
|
||||||
|
GRAYplayerWalkLeft = GRAYplayerWalkRight.getReverse();
|
||||||
|
|
||||||
|
GRAYplayerIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 1, w, h),
|
||||||
|
grabSprite(ss, 1, 1, w, h)
|
||||||
|
);
|
||||||
|
GRAYplayerIdleLeft = GRAYplayerIdleRight.getReverse();
|
||||||
|
|
||||||
|
GRAYplayerJumpingRight = grabSprite(ss, 2, 1, w, h);
|
||||||
|
GRAYplayerJumpingLeft = reverseImage(GRAYplayerJumpingRight);
|
||||||
|
|
||||||
|
GRAYplayerFallingRight = grabSprite(ss, 3, 1, w, h);
|
||||||
|
GRAYplayerFallingLeft = reverseImage(GRAYplayerFallingRight);
|
||||||
|
|
||||||
|
GRAYplayerLookingUpJumpingRight = grabSprite(ss, 4, 0, w, h);
|
||||||
|
GRAYplayerLookingUpJumpingLeft = reverseImage(GRAYplayerLookingUpJumpingRight);
|
||||||
|
|
||||||
|
GRAYplayerLookingUpFallingRight = grabSprite(ss, 4, 1, w, h);
|
||||||
|
GRAYplayerLookingUpFallingLeft = reverseImage(GRAYplayerLookingUpFallingRight);
|
||||||
|
|
||||||
|
GRAYplayerLookingUpIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 2, w, h),
|
||||||
|
grabSprite(ss, 1, 2, w, h)
|
||||||
|
);
|
||||||
|
GRAYplayerLookingUpIdleLeft = GRAYplayerLookingUpIdleRight.getReverse();
|
||||||
|
|
||||||
|
GRAYplayerProneRight = grabSprite(ss, 2, 2, w, h);
|
||||||
|
GRAYplayerProneLeft = reverseImage(GRAYplayerProneRight);
|
||||||
|
|
||||||
|
GRAYplayerLookingDownRight = grabSprite(ss, 3, 2, w, h);
|
||||||
|
GRAYplayerLookingDownLeft = reverseImage(GRAYplayerLookingDownRight);
|
||||||
|
|
||||||
|
GRAYplayerLookingUpRunningRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 3, w, h),
|
||||||
|
grabSprite(ss, 1, 3, w, h),
|
||||||
|
grabSprite(ss, 2, 3, w, h),
|
||||||
|
grabSprite(ss, 3, 3, w, h)
|
||||||
|
);
|
||||||
|
GRAYplayerLookingUpRunningLeft = playerLookingUpRunningRight.getReverse();
|
||||||
|
// PALE GREEN EYE
|
||||||
|
ss = loadImage("/Player3.png");
|
||||||
|
PALE_GREENplayerWalkRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 0, w, h),
|
||||||
|
grabSprite(ss, 1, 0, w, h),
|
||||||
|
grabSprite(ss, 2, 0, w, h),
|
||||||
|
grabSprite(ss, 3, 0, w, h)
|
||||||
|
);
|
||||||
|
PALE_GREENplayerWalkLeft = PALE_GREENplayerWalkRight.getReverse();
|
||||||
|
|
||||||
|
PALE_GREENplayerIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 1, w, h),
|
||||||
|
grabSprite(ss, 1, 1, w, h)
|
||||||
|
);
|
||||||
|
PALE_GREENplayerIdleLeft = PALE_GREENplayerIdleRight.getReverse();
|
||||||
|
|
||||||
|
PALE_GREENplayerJumpingRight = grabSprite(ss, 2, 1, w, h);
|
||||||
|
PALE_GREENplayerJumpingLeft = reverseImage(PALE_GREENplayerJumpingRight);
|
||||||
|
|
||||||
|
PALE_GREENplayerFallingRight = grabSprite(ss, 3, 1, w, h);
|
||||||
|
PALE_GREENplayerFallingLeft = reverseImage(PALE_GREENplayerFallingRight);
|
||||||
|
|
||||||
|
PALE_GREENplayerLookingUpJumpingRight = grabSprite(ss, 4, 0, w, h);
|
||||||
|
PALE_GREENplayerLookingUpJumpingLeft = reverseImage(PALE_GREENplayerLookingUpJumpingRight);
|
||||||
|
|
||||||
|
PALE_GREENplayerLookingUpFallingRight = grabSprite(ss, 4, 1, w, h);
|
||||||
|
PALE_GREENplayerLookingUpFallingLeft = reverseImage(PALE_GREENplayerLookingUpFallingRight);
|
||||||
|
|
||||||
|
PALE_GREENplayerLookingUpIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 2, w, h),
|
||||||
|
grabSprite(ss, 1, 2, w, h)
|
||||||
|
);
|
||||||
|
PALE_GREENplayerLookingUpIdleLeft = PALE_GREENplayerLookingUpIdleRight.getReverse();
|
||||||
|
|
||||||
|
PALE_GREENplayerProneRight = grabSprite(ss, 2, 2, w, h);
|
||||||
|
PALE_GREENplayerProneLeft = reverseImage(PALE_GREENplayerProneRight);
|
||||||
|
|
||||||
|
PALE_GREENplayerLookingDownRight = grabSprite(ss, 3, 2, w, h);
|
||||||
|
PALE_GREENplayerLookingDownLeft = reverseImage(PALE_GREENplayerLookingDownRight);
|
||||||
|
|
||||||
|
PALE_GREENplayerLookingUpRunningRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 3, w, h),
|
||||||
|
grabSprite(ss, 1, 3, w, h),
|
||||||
|
grabSprite(ss, 2, 3, w, h),
|
||||||
|
grabSprite(ss, 3, 3, w, h)
|
||||||
|
);
|
||||||
|
PALE_GREENplayerLookingUpRunningLeft = PALE_GREENplayerLookingUpRunningRight.getReverse();
|
||||||
|
// GREEN EYE
|
||||||
|
ss = loadImage("/Player4.png");
|
||||||
|
GREENplayerWalkRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 0, w, h),
|
||||||
|
grabSprite(ss, 1, 0, w, h),
|
||||||
|
grabSprite(ss, 2, 0, w, h),
|
||||||
|
grabSprite(ss, 3, 0, w, h)
|
||||||
|
);
|
||||||
|
GREENplayerWalkLeft = GREENplayerWalkRight.getReverse();
|
||||||
|
|
||||||
|
GREENplayerIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 1, w, h),
|
||||||
|
grabSprite(ss, 1, 1, w, h)
|
||||||
|
);
|
||||||
|
GREENplayerIdleLeft = GREENplayerIdleRight.getReverse();
|
||||||
|
|
||||||
|
GREENplayerJumpingRight = grabSprite(ss, 2, 1, w, h);
|
||||||
|
GREENplayerJumpingLeft = reverseImage(GREENplayerJumpingRight);
|
||||||
|
|
||||||
|
GREENplayerFallingRight = grabSprite(ss, 3, 1, w, h);
|
||||||
|
GREENplayerFallingLeft = reverseImage(GREENplayerFallingRight);
|
||||||
|
|
||||||
|
GREENplayerLookingUpJumpingRight = grabSprite(ss, 4, 0, w, h);
|
||||||
|
GREENplayerLookingUpJumpingLeft = reverseImage(GREENplayerLookingUpJumpingRight);
|
||||||
|
|
||||||
|
GREENplayerLookingUpFallingRight = grabSprite(ss, 4, 1, w, h);
|
||||||
|
GREENplayerLookingUpFallingLeft = reverseImage(GREENplayerLookingUpFallingRight);
|
||||||
|
|
||||||
|
GREENplayerLookingUpIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 2, w, h),
|
||||||
|
grabSprite(ss, 1, 2, w, h)
|
||||||
|
);
|
||||||
|
GREENplayerLookingUpIdleLeft = GREENplayerLookingUpIdleRight.getReverse();
|
||||||
|
|
||||||
|
GREENplayerProneRight = grabSprite(ss, 2, 2, w, h);
|
||||||
|
GREENplayerProneLeft = reverseImage(GREENplayerProneRight);
|
||||||
|
|
||||||
|
GREENplayerLookingDownRight = grabSprite(ss, 3, 2, w, h);
|
||||||
|
GREENplayerLookingDownLeft = reverseImage(GREENplayerLookingDownRight);
|
||||||
|
|
||||||
|
GREENplayerLookingUpRunningRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 3, w, h),
|
||||||
|
grabSprite(ss, 1, 3, w, h),
|
||||||
|
grabSprite(ss, 2, 3, w, h),
|
||||||
|
grabSprite(ss, 3, 3, w, h)
|
||||||
|
);
|
||||||
|
GREENplayerLookingUpRunningLeft = GREENplayerLookingUpRunningRight.getReverse();
|
||||||
|
// BROWN EYE
|
||||||
|
ss = loadImage("/Player5.png");
|
||||||
|
BROWNplayerWalkRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 0, w, h),
|
||||||
|
grabSprite(ss, 1, 0, w, h),
|
||||||
|
grabSprite(ss, 2, 0, w, h),
|
||||||
|
grabSprite(ss, 3, 0, w, h)
|
||||||
|
);
|
||||||
|
BROWNplayerWalkLeft = BROWNplayerWalkRight.getReverse();
|
||||||
|
|
||||||
|
BROWNplayerIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 1, w, h),
|
||||||
|
grabSprite(ss, 1, 1, w, h)
|
||||||
|
);
|
||||||
|
BROWNplayerIdleLeft = BROWNplayerIdleRight.getReverse();
|
||||||
|
|
||||||
|
BROWNplayerJumpingRight = grabSprite(ss, 2, 1, w, h);
|
||||||
|
BROWNplayerJumpingLeft = reverseImage(BROWNplayerJumpingRight);
|
||||||
|
|
||||||
|
BROWNplayerFallingRight = grabSprite(ss, 3, 1, w, h);
|
||||||
|
BROWNplayerFallingLeft = reverseImage(BROWNplayerFallingRight);
|
||||||
|
|
||||||
|
BROWNplayerLookingUpJumpingRight = grabSprite(ss, 4, 0, w, h);
|
||||||
|
BROWNplayerLookingUpJumpingLeft = reverseImage(BROWNplayerLookingUpJumpingRight);
|
||||||
|
|
||||||
|
BROWNplayerLookingUpFallingRight = grabSprite(ss, 4, 1, w, h);
|
||||||
|
BROWNplayerLookingUpFallingLeft = reverseImage(BROWNplayerLookingUpFallingRight);
|
||||||
|
|
||||||
|
BROWNplayerLookingUpIdleRight = new Animation(IDLE_SPEED,
|
||||||
|
grabSprite(ss, 0, 2, w, h),
|
||||||
|
grabSprite(ss, 1, 2, w, h)
|
||||||
|
);
|
||||||
|
BROWNplayerLookingUpIdleLeft = BROWNplayerLookingUpIdleRight.getReverse();
|
||||||
|
|
||||||
|
BROWNplayerProneRight = grabSprite(ss, 2, 2, w, h);
|
||||||
|
BROWNplayerProneLeft = reverseImage(BROWNplayerProneRight);
|
||||||
|
|
||||||
|
BROWNplayerLookingDownRight = grabSprite(ss, 3, 2, w, h);
|
||||||
|
BROWNplayerLookingDownLeft = reverseImage(BROWNplayerLookingDownRight);
|
||||||
|
|
||||||
|
BROWNplayerLookingUpRunningRight = new Animation(RUNNING_SPEED,
|
||||||
|
grabSprite(ss, 0, 3, w, h),
|
||||||
|
grabSprite(ss, 1, 3, w, h),
|
||||||
|
grabSprite(ss, 2, 3, w, h),
|
||||||
|
grabSprite(ss, 3, 3, w, h)
|
||||||
|
);
|
||||||
|
BROWNplayerLookingUpRunningLeft = BROWNplayerLookingUpRunningRight.getReverse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
19
textures/textures/tiles/TileTextures.java
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
package textures.tiles;
|
||||||
|
|
||||||
|
import static sjgs.utils.Utils.grabSprite;
|
||||||
|
import static sjgs.utils.Utils.loadImage;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import textures.Texture;
|
||||||
|
|
||||||
|
public class TileTextures implements Texture {
|
||||||
|
|
||||||
|
public static BufferedImage tile1;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getTextures() {
|
||||||
|
final BufferedImage image = loadImage("/tile.png");
|
||||||
|
final int width = 6, height = 6;
|
||||||
|
tile1 = grabSprite(image, 0, 0, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||