Added Game Over
This commit is contained in:
parent
224c3b824c
commit
38245db9db
5 changed files with 186 additions and 20 deletions
|
@ -68,7 +68,7 @@ public class EnemyShip extends AnimatedSprite {
|
||||||
System.out.println("GOT HIT " + hitsToDestroy);
|
System.out.println("GOT HIT " + hitsToDestroy);
|
||||||
}
|
}
|
||||||
public boolean isDead() {
|
public boolean isDead() {
|
||||||
return hitsToDestroy == 0;
|
return hitsToDestroy <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDone(){
|
public boolean isDone(){
|
||||||
|
|
|
@ -14,6 +14,8 @@ public class Player extends AnimatedSprite {
|
||||||
private int fireDelay;
|
private int fireDelay;
|
||||||
private double imortalPulse = 0.2;
|
private double imortalPulse = 0.2;
|
||||||
private long lastFired, lastDrawn, created;
|
private long lastFired, lastDrawn, created;
|
||||||
|
private int startX, startY;
|
||||||
|
private boolean isGameOver;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,6 +32,25 @@ public class Player extends AnimatedSprite {
|
||||||
setImageDimensions();
|
setImageDimensions();
|
||||||
isMortal = false;
|
isMortal = false;
|
||||||
toDraw = true;
|
toDraw = true;
|
||||||
|
startX = locX;
|
||||||
|
startY = locY;
|
||||||
|
isGameOver = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isGameOver() {
|
||||||
|
return isGameOver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGameOver(boolean gameOver) {
|
||||||
|
isGameOver = gameOver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetPlayer(){
|
||||||
|
locX = startX;
|
||||||
|
locY = startY;
|
||||||
|
isMortal = false;
|
||||||
|
lastDrawn = System.currentTimeMillis();
|
||||||
|
created = lastDrawn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,6 +89,10 @@ public class Player extends AnimatedSprite {
|
||||||
locY = pHeight - animations.get(currentAnimation).getCurrentFrame().getHeight() - PADDING_BOTTOM;
|
locY = pHeight - animations.get(currentAnimation).getCurrentFrame().getHeight() - PADDING_BOTTOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isGameOver){
|
||||||
|
//System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,13 +23,14 @@ import java.util.Vector;
|
||||||
|
|
||||||
|
|
||||||
public class GameEngine {
|
public class GameEngine {
|
||||||
|
private final int CREDIT_TIME = 10;
|
||||||
public boolean gameOn , gameOver, isFirstGame;
|
public boolean gameOn , gameOver, isFirstGame;
|
||||||
private JFrame frame;
|
private JFrame frame;
|
||||||
private int pWidth, pHeight, numOfPlayers; //panel dimensions
|
private int pWidth, pHeight, numOfPlayers; //panel dimensions
|
||||||
private Random r;
|
private Random r;
|
||||||
private Stage stage;
|
private Stage stage;
|
||||||
private Vector<Scene> scenes;
|
private Vector<Scene> scenes;
|
||||||
private int currentScene;
|
private int currentScene, p1CreditTime, p2CreditTime, creditTickTime = 1;
|
||||||
public static final int PLAYER_WIDTH = 120, PLAYER_HEIGHT = 120;
|
public static final int PLAYER_WIDTH = 120, PLAYER_HEIGHT = 120;
|
||||||
public static final int UP=0,RIGHT=1,DOWN=2, LEFT=3, FIRE=4, SPECIAL=5;
|
public static final int UP=0,RIGHT=1,DOWN=2, LEFT=3, FIRE=4, SPECIAL=5;
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ public class GameEngine {
|
||||||
|
|
||||||
private int p1Lives, p2Lives, p1Health, p2Health, credits, p1Score, p2Score;
|
private int p1Lives, p2Lives, p1Health, p2Health, credits, p1Score, p2Score;
|
||||||
|
|
||||||
|
private long lastP1CreditTick, lastP2CreditTick;
|
||||||
|
|
||||||
private Font gameFont;
|
private Font gameFont;
|
||||||
|
|
||||||
|
@ -52,7 +53,6 @@ public class GameEngine {
|
||||||
this.pHeight = height;
|
this.pHeight = height;
|
||||||
this.scenes = new Vector<>();
|
this.scenes = new Vector<>();
|
||||||
this.stage = stage;
|
this.stage = stage;
|
||||||
// scenes.add(new Level(width, height, 2)); // Need to be a menu Scene
|
|
||||||
scenes.add(new MainMenuScene(width, height, this));
|
scenes.add(new MainMenuScene(width, height, this));
|
||||||
stage.addKeyListener(scenes.get(currentScene));
|
stage.addKeyListener(scenes.get(currentScene));
|
||||||
stage.addMouseListener(scenes.get(currentScene));
|
stage.addMouseListener(scenes.get(currentScene));
|
||||||
|
@ -71,6 +71,8 @@ public class GameEngine {
|
||||||
resetPlayerHealth(0);
|
resetPlayerHealth(0);
|
||||||
resetPlayerHealth(1);
|
resetPlayerHealth(1);
|
||||||
credits = 3;
|
credits = 3;
|
||||||
|
p1Lives = 1;
|
||||||
|
p2Lives = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -94,6 +96,8 @@ public class GameEngine {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initialize and reset vars and timers to "new game" configuration.
|
* initialize and reset vars and timers to "new game" configuration.
|
||||||
*/
|
*/
|
||||||
|
@ -106,9 +110,14 @@ public class GameEngine {
|
||||||
* Setup all actors in the game to a new game - reset timer
|
* Setup all actors in the game to a new game - reset timer
|
||||||
*/
|
*/
|
||||||
private void initGame(){
|
private void initGame(){
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getP1CreditTime() {
|
||||||
|
return p1CreditTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getP2CreditTime() {
|
||||||
|
return p2CreditTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WaveConfigs getWaveConfigs() {
|
public WaveConfigs getWaveConfigs() {
|
||||||
|
@ -135,6 +144,15 @@ public class GameEngine {
|
||||||
* Update all sprites, including collision handling.
|
* Update all sprites, including collision handling.
|
||||||
*/
|
*/
|
||||||
public void update(){
|
public void update(){
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
if(now - lastP1CreditTick >= creditTickTime * 1000){
|
||||||
|
p1CreditTime--;
|
||||||
|
lastP1CreditTick = now;
|
||||||
|
}
|
||||||
|
if(now - lastP2CreditTick >= creditTickTime * 1000){
|
||||||
|
p2CreditTime--;
|
||||||
|
lastP2CreditTick = now;
|
||||||
|
}
|
||||||
scenes.get(currentScene).update();
|
scenes.get(currentScene).update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,9 +252,34 @@ public class GameEngine {
|
||||||
public void setPlayerHealth(int i, int strike) {
|
public void setPlayerHealth(int i, int strike) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
p1Health += strike;
|
p1Health += strike;
|
||||||
|
if(p1Health <= 0){
|
||||||
|
p1Lives--;
|
||||||
|
if(p1Lives > 0)
|
||||||
|
resetPlayerHealth(i);
|
||||||
|
if(p1Lives <= 0){
|
||||||
|
p1CreditTime = 10;
|
||||||
|
lastP1CreditTick = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
p2Health += strike;
|
p2Health += strike;
|
||||||
|
if(p2Health <= 0){
|
||||||
|
p2Lives--;
|
||||||
|
if(p2Lives > 0)
|
||||||
|
resetPlayerHealth(i);
|
||||||
|
if(p2Health <= 0){
|
||||||
|
p2CreditTime = 10;
|
||||||
|
lastP2CreditTick = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setGameOver(boolean gameOver) {
|
||||||
|
if(gameOver){
|
||||||
|
changeScene(0);
|
||||||
|
this.gameOver = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -24,14 +24,14 @@ public class FirstStage extends Level{
|
||||||
switch (currentWave){
|
switch (currentWave){
|
||||||
case 0:
|
case 0:
|
||||||
numOfEnemies = 5;
|
numOfEnemies = 5;
|
||||||
fireDelay = 0.2;
|
fireDelay = 0.1;
|
||||||
launchDelay = 0.5;
|
launchDelay = 0.5;
|
||||||
numOfHits = 1;
|
numOfHits = 1;
|
||||||
wc = engine.getWaveConfigs().getWaveConfig(WaveConfigs.DEMO);
|
wc = engine.getWaveConfigs().getWaveConfig(WaveConfigs.DEMO);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
numOfEnemies = 5;
|
numOfEnemies = 5;
|
||||||
fireDelay = 5;
|
fireDelay = 0.1;
|
||||||
launchDelay = 1;
|
launchDelay = 1;
|
||||||
numOfHits = 1;
|
numOfHits = 1;
|
||||||
wc = engine.getWaveConfigs().getWaveConfig(WaveConfigs.DEMO);
|
wc = engine.getWaveConfigs().getWaveConfig(WaveConfigs.DEMO);
|
||||||
|
|
|
@ -21,6 +21,8 @@ import java.util.*;
|
||||||
* Created by sagi on 2/20/16.
|
* Created by sagi on 2/20/16.
|
||||||
*/
|
*/
|
||||||
public abstract class Level extends Scene {
|
public abstract class Level extends Scene {
|
||||||
|
protected final double PRESS_START_PULE = 0.3;
|
||||||
|
protected boolean toDrawStart;
|
||||||
protected Vector<Player> players;
|
protected Vector<Player> players;
|
||||||
protected int p1Speed = 10;
|
protected int p1Speed = 10;
|
||||||
protected Vector<Missile> p1Missiles, p2Missiles, enemyMissiles;
|
protected Vector<Missile> p1Missiles, p2Missiles, enemyMissiles;
|
||||||
|
@ -35,7 +37,7 @@ public abstract class Level extends Scene {
|
||||||
protected Map<Integer, Boolean> keys;
|
protected Map<Integer, Boolean> keys;
|
||||||
protected String title;
|
protected String title;
|
||||||
protected JLabel stageTitle;
|
protected JLabel stageTitle;
|
||||||
protected long lastWaveTime;
|
protected long lastWaveTime, lastPulseTime;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,6 +70,8 @@ public abstract class Level extends Scene {
|
||||||
|
|
||||||
setupKeys();
|
setupKeys();
|
||||||
Utils.playSound("jetSound.wav");
|
Utils.playSound("jetSound.wav");
|
||||||
|
lastPulseTime = System.currentTimeMillis();
|
||||||
|
toDrawStart = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupKeys() {
|
private void setupKeys() {
|
||||||
|
@ -87,7 +91,7 @@ public abstract class Level extends Scene {
|
||||||
public void update() {
|
public void update() {
|
||||||
bg.update();
|
bg.update();
|
||||||
movePlayers();
|
movePlayers();
|
||||||
Vector <Wave> wavesToRemove = new Vector<Wave>();
|
Vector <Wave> wavesToRemove = new Vector<>();
|
||||||
|
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
if(currentWave < waveDelay.length && now - lastWaveTime >= waveDelay[currentWave] * 1000){
|
if(currentWave < waveDelay.length && now - lastWaveTime >= waveDelay[currentWave] * 1000){
|
||||||
|
@ -101,7 +105,6 @@ public abstract class Level extends Scene {
|
||||||
if(players.get(0).getLocY() > yAxisStartingAnimation[startingAnimationIndex] && startingAnimationIndex == 1){
|
if(players.get(0).getLocY() > yAxisStartingAnimation[startingAnimationIndex] && startingAnimationIndex == 1){
|
||||||
for(int i = 0 ; i < players.size() ; i++){
|
for(int i = 0 ; i < players.size() ; i++){
|
||||||
players.get(i).setLocY((int)players.get(i).getLocY() - (p1Speed));
|
players.get(i).setLocY((int)players.get(i).getLocY() - (p1Speed));
|
||||||
// players.get(i).update();
|
|
||||||
}
|
}
|
||||||
if(players.get(0).getLocY() <= yAxisStartingAnimation[startingAnimationIndex]){
|
if(players.get(0).getLocY() <= yAxisStartingAnimation[startingAnimationIndex]){
|
||||||
startingAnimationIndex++;
|
startingAnimationIndex++;
|
||||||
|
@ -110,7 +113,6 @@ public abstract class Level extends Scene {
|
||||||
|
|
||||||
for(int i = 0 ; i < players.size() ; i++){
|
for(int i = 0 ; i < players.size() ; i++){
|
||||||
players.get(i).setLocY((int)players.get(i).getLocY() + (p1Speed - 5));
|
players.get(i).setLocY((int)players.get(i).getLocY() + (p1Speed - 5));
|
||||||
// players.get(i).update();
|
|
||||||
}
|
}
|
||||||
if(players.get(0).getLocY() >= yAxisStartingAnimation[startingAnimationIndex]){
|
if(players.get(0).getLocY() >= yAxisStartingAnimation[startingAnimationIndex]){
|
||||||
startingAnimationIndex++;
|
startingAnimationIndex++;
|
||||||
|
@ -141,10 +143,19 @@ public abstract class Level extends Scene {
|
||||||
waves.removeAll(wavesToRemove);
|
waves.removeAll(wavesToRemove);
|
||||||
}
|
}
|
||||||
checkCollision();
|
checkCollision();
|
||||||
|
engine.setGameOver(isGameOver());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void launchWave(long time);
|
protected abstract void launchWave(long time);
|
||||||
|
|
||||||
|
private boolean isGameOver(){
|
||||||
|
if(numOfPlayers == 1) {
|
||||||
|
return players.get(0).isGameOver();
|
||||||
|
}else{
|
||||||
|
return players.get(0).isGameOver() && players.get(1).isGameOver();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void movePlayers() {
|
private void movePlayers() {
|
||||||
/**
|
/**
|
||||||
* Player 1 Movement:
|
* Player 1 Movement:
|
||||||
|
@ -240,8 +251,6 @@ public abstract class Level extends Scene {
|
||||||
|
|
||||||
//print life bar
|
//print life bar
|
||||||
for(int i=0; i<players.size(); i++){
|
for(int i=0; i<players.size(); i++){
|
||||||
g.setColor(Color.WHITE);
|
|
||||||
g.drawString("Player "+ (i+1) +" - Lives: " + ((i == 0) ? engine.getP1Lives() : engine.getP2Lives())+ ", Score: " + ((i == 0) ? engine.getP1Score() : engine.getP2Score()), 15, 35*(i+1));
|
|
||||||
|
|
||||||
g.drawRect(15,35*(i+1)+10,100,10);
|
g.drawRect(15,35*(i+1)+10,100,10);
|
||||||
g.setColor(Color.GREEN);
|
g.setColor(Color.GREEN);
|
||||||
|
@ -273,7 +282,31 @@ public abstract class Level extends Scene {
|
||||||
enemyMissiles.get(i).drawSprite(g,p);
|
enemyMissiles.get(i).drawSprite(g,p);
|
||||||
}
|
}
|
||||||
for(int i = 0 ; i < players.size() ; i++){
|
for(int i = 0 ; i < players.size() ; i++){
|
||||||
players.get(i).drawSprite(g,p);
|
if(i == 0){
|
||||||
|
if(engine.getP1Health() > 0){
|
||||||
|
players.get(i).drawSprite(g,p);
|
||||||
|
g.setColor(Color.WHITE);
|
||||||
|
g.drawString("Player "+ (i+1) +" - Lives: " + ((i == 0) ? engine.getP1Lives() : engine.getP2Lives())+ ", Score: " + ((i == 0) ? engine.getP1Score() : engine.getP2Score()), 15, 35*(i+1));
|
||||||
|
}else{
|
||||||
|
if(players.get(i).isGameOver()){
|
||||||
|
renderGameOver(g, p, i);
|
||||||
|
}else{
|
||||||
|
renderPressStart(g, p, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(engine.getP2Health() > 0){
|
||||||
|
players.get(i).drawSprite(g,p);
|
||||||
|
g.setColor(Color.WHITE);
|
||||||
|
g.drawString("Player "+ (i+1) +" - Lives: " + ((i == 0) ? engine.getP1Lives() : engine.getP2Lives())+ ", Score: " + ((i == 0) ? engine.getP1Score() : engine.getP2Score()), 15, 35*(i+1));
|
||||||
|
}else{
|
||||||
|
if(players.get(i).isGameOver()){
|
||||||
|
renderGameOver(g, p, i);
|
||||||
|
}else{
|
||||||
|
renderPressStart(g, p, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for(int i = 0 ; i < waves.size() ; i++){
|
for(int i = 0 ; i < waves.size() ; i++){
|
||||||
waves.get(i).render(g,p);
|
waves.get(i).render(g,p);
|
||||||
|
@ -281,6 +314,44 @@ public abstract class Level extends Scene {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void renderPressStart(Graphics g, JPanel p, int i){
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
if(now - lastPulseTime >= PRESS_START_PULE * 1000){
|
||||||
|
toDrawStart = !toDrawStart;
|
||||||
|
lastPulseTime = now;
|
||||||
|
}
|
||||||
|
if(i == 0){
|
||||||
|
g.drawString(engine.getP1CreditTime()+"", 15, 35 * (i + 1));
|
||||||
|
if(engine.getP1CreditTime() <= 0){
|
||||||
|
players.get(i).setGameOver(true);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
g.drawString(engine.getP2CreditTime()+"", 15, 35 * (i + 1));
|
||||||
|
if(engine.getP2CreditTime() <= 0){
|
||||||
|
players.get(i).setGameOver(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(toDrawStart) {
|
||||||
|
g.drawString("PRESS START", 45, 35 * (i + 1));
|
||||||
|
|
||||||
|
}
|
||||||
|
players.get(i).setLocY(-500);
|
||||||
|
players.get(i).setLocX(-500);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void renderGameOver(Graphics g, JPanel p, int i){
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
players.get(i).setGameOver(true);
|
||||||
|
if(now - lastPulseTime >= PRESS_START_PULE * 1000){
|
||||||
|
toDrawStart = !toDrawStart;
|
||||||
|
lastPulseTime = now;
|
||||||
|
}
|
||||||
|
if(toDrawStart) {
|
||||||
|
g.drawString("P" + (i+1) + " GAME OVER", 15, 35 * (i + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void checkCollision() {
|
public void checkCollision() {
|
||||||
Vector<Missile> p1MTR, p2MTR, eMTR;
|
Vector<Missile> p1MTR, p2MTR, eMTR;
|
||||||
eMTR = new Vector<>();
|
eMTR = new Vector<>();
|
||||||
|
@ -293,9 +364,10 @@ public abstract class Level extends Scene {
|
||||||
//player vs. enemy missile
|
//player vs. enemy missile
|
||||||
for (int j = 0; j < enemyMissiles.size(); j++) {
|
for (int j = 0; j < enemyMissiles.size(); j++) {
|
||||||
if(CollisionUtil.collidesWith(players.get(i),enemyMissiles.get(j))){
|
if(CollisionUtil.collidesWith(players.get(i),enemyMissiles.get(j))){
|
||||||
if(players.get(i).isMortal())
|
playerHit(i);
|
||||||
engine.setPlayerHealth(i, -10);
|
if(playerIsAlive(i)) {
|
||||||
eMTR.add(enemyMissiles.get(j));
|
eMTR.add(enemyMissiles.get(j));
|
||||||
|
}
|
||||||
System.out.println("Hit Missile");
|
System.out.println("Hit Missile");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,9 +377,12 @@ public abstract class Level extends Scene {
|
||||||
// Ship hits enemy
|
// Ship hits enemy
|
||||||
for (int k = 0; k < waves.get(j).getEnemies().size(); k++) {
|
for (int k = 0; k < waves.get(j).getEnemies().size(); k++) {
|
||||||
if (CollisionUtil.collidesWith(waves.get(j).getEnemies().get(k), players.get(i))) {
|
if (CollisionUtil.collidesWith(waves.get(j).getEnemies().get(k), players.get(i))) {
|
||||||
if(players.get(i).isMortal())
|
if(!waves.get(j).getEnemies().get(k).isDead()){
|
||||||
engine.setPlayerHealth(i, -10);
|
playerHit(i);
|
||||||
waves.get(j).enemyHit(waves.get(j).getEnemies().get(k));
|
}
|
||||||
|
if(playerIsAlive(i)) {
|
||||||
|
waves.get(j).enemyHit(waves.get(j).getEnemies().get(k));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -358,6 +433,29 @@ public abstract class Level extends Scene {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean playerIsAlive(int i){
|
||||||
|
if(i == 0){
|
||||||
|
return !(engine.getP1Lives() <= 0);
|
||||||
|
}else{
|
||||||
|
return !(engine.getP2Lives() <= 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void playerHit(int i){
|
||||||
|
if(players.get(i).isMortal()){
|
||||||
|
engine.setPlayerHealth(i, -10);
|
||||||
|
if(i == 0){
|
||||||
|
if(engine.getP1Health() == 100){
|
||||||
|
players.get(i).resetPlayer();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(engine.getP2Health() == 100){
|
||||||
|
players.get(i).resetPlayer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void enemyFire(int x, int y, int acc) {
|
public void enemyFire(int x, int y, int acc) {
|
||||||
enemyMissiles.add(new Missile(x, y, acc,"E1-Fire.png", 15));
|
enemyMissiles.add(new Missile(x, y, acc,"E1-Fire.png", 15));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue