Make signs work
parent
07e56c49cf
commit
edc1376084
|
@ -0,0 +1,5 @@
|
||||||
|
200 350 This is a sign
|
||||||
|
300 400 This is also a sign
|
||||||
|
/
|
||||||
|
300 200 This is a different sign
|
||||||
|
400 250 sign sign sign sign
|
|
@ -0,0 +1,5 @@
|
||||||
|
200 350 This is a sign
|
||||||
|
300 400 This is also a sign
|
||||||
|
/
|
||||||
|
300 200 This is a different sign
|
||||||
|
400 250 sign sign sign sign
|
|
@ -0,0 +1,5 @@
|
||||||
|
200 350 This is a sign
|
||||||
|
300 400 This is also a sign
|
||||||
|
/
|
||||||
|
300 200 This is a different sign
|
||||||
|
400 250 sign sign sign sign
|
|
@ -14,6 +14,7 @@ import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.lang.reflect.Array;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -31,6 +32,12 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ
|
||||||
public static final int GAME_HEIGHT = 630;
|
public static final int GAME_HEIGHT = 630;
|
||||||
|
|
||||||
public static final int fireballSpeed = 5;
|
public static final int fireballSpeed = 5;
|
||||||
|
|
||||||
|
public static Font tutorialFont = new Font(Font.MONOSPACED, Font.BOLD, 36);
|
||||||
|
public static Font loreFont = new Font(Font.MONOSPACED, Font.ITALIC + Font.BOLD, 36);
|
||||||
|
public static Color tutorialColor = Color.darkGray;
|
||||||
|
public static Color loreColor = Color.lightGray;
|
||||||
|
|
||||||
public int bombCount;
|
public int bombCount;
|
||||||
|
|
||||||
public transient JPanel gameFrame;
|
public transient JPanel gameFrame;
|
||||||
|
@ -85,6 +92,8 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ
|
||||||
public String lastText;
|
public String lastText;
|
||||||
public boolean isContinue;
|
public boolean isContinue;
|
||||||
public boolean isRunning;
|
public boolean isRunning;
|
||||||
|
public ArrayList<WallSign> tutorialSign = new ArrayList<WallSign>();
|
||||||
|
public ArrayList<WallSign> loreSign = new ArrayList<WallSign>();
|
||||||
|
|
||||||
|
|
||||||
public GamePanel(JPanel gameFrame) throws IOException, SpriteException, UnsupportedAudioFileException, LineUnavailableException {
|
public GamePanel(JPanel gameFrame) throws IOException, SpriteException, UnsupportedAudioFileException, LineUnavailableException {
|
||||||
|
@ -249,10 +258,21 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ
|
||||||
|
|
||||||
//call the draw methods in each class to update positions as things move
|
//call the draw methods in each class to update positions as things move
|
||||||
public void draw(Graphics g, int playerFrame, int enemyFrame) throws IOException, UnsupportedAudioFileException, LineUnavailableException {
|
public void draw(Graphics g, int playerFrame, int enemyFrame) throws IOException, UnsupportedAudioFileException, LineUnavailableException {
|
||||||
|
Color oldColor = g.getColor();
|
||||||
|
Font oldFont = g.getFont();
|
||||||
background.draw(g);
|
background.draw(g);
|
||||||
cloudOneBackground.draw(g);
|
cloudOneBackground.draw(g);
|
||||||
cloudTwoBackground.draw(g);
|
cloudTwoBackground.draw(g);
|
||||||
cloudThreeBackground.draw(g);
|
cloudThreeBackground.draw(g);
|
||||||
|
for (WallSign w: tutorialSign) {
|
||||||
|
w.draw(g, tutorialColor);
|
||||||
|
}
|
||||||
|
for (WallSign w: loreSign) {
|
||||||
|
w.draw(g, loreColor);
|
||||||
|
}
|
||||||
|
// reset graphics color to black and font to system default
|
||||||
|
g.setColor(oldColor);
|
||||||
|
g.setFont(oldFont);
|
||||||
if (isPaused || isDialogue) {
|
if (isPaused || isDialogue) {
|
||||||
// set player frame to 0 to prevent frame from changing when player moves
|
// set player frame to 0 to prevent frame from changing when player moves
|
||||||
playerFrame = 0;
|
playerFrame = 0;
|
||||||
|
@ -323,8 +343,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ
|
||||||
g.drawImage(getImage(filePath),x*Tile.length - (GamePanel.GAME_WIDTH/2)-camera.x,(int)y,Tile.length,Tile.length,null);
|
g.drawImage(getImage(filePath),x*Tile.length - (GamePanel.GAME_WIDTH/2)-camera.x,(int)y,Tile.length,Tile.length,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// g.drawString(camera.x+" "+((camera.x+GAME_WIDTH)/Tile.length)+" "+player.leftMouseDown,100,100);
|
g.drawString(camera.x+" "+player.y,100,100);
|
||||||
// g.drawString(camera.x+" "+((player.mouseX+camera.x+GAME_WIDTH/2)/Tile.length)+" "+player.leftMouseDown,100,200);
|
|
||||||
g.drawImage(bomb.image,20,20,35,35,null);
|
g.drawImage(bomb.image,20,20,35,35,null);
|
||||||
g.drawString("X"+LevelManager.bombs,60,40);
|
g.drawString("X"+LevelManager.bombs,60,40);
|
||||||
if (isPaused) {
|
if (isPaused) {
|
||||||
|
@ -431,7 +450,7 @@ public class GamePanel extends JPanel implements Runnable, KeyListener, Serializ
|
||||||
double delta = 0;
|
double delta = 0;
|
||||||
long now;
|
long now;
|
||||||
int fireballCounter = 0;
|
int fireballCounter = 0;
|
||||||
while(isRunning){ //this is the infinite game loop
|
while(isRunning){ //this is the game loop, terminates on game restart to prevent race conditions
|
||||||
now = System.nanoTime();
|
now = System.nanoTime();
|
||||||
delta = delta + (now-lastTime)/ns;
|
delta = delta + (now-lastTime)/ns;
|
||||||
lastTime = now;
|
lastTime = now;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.sound.sampled.LineUnavailableException;
|
import javax.sound.sampled.LineUnavailableException;
|
||||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||||
|
import java.awt.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -50,6 +51,18 @@ public class LevelManager implements Serializable {
|
||||||
GameFrame.game.dialogueMenu.frameCounter = 0;
|
GameFrame.game.dialogueMenu.frameCounter = 0;
|
||||||
GameFrame.game.isDialogue = true;
|
GameFrame.game.isDialogue = true;
|
||||||
}
|
}
|
||||||
|
// temporary boolean, so only declared here
|
||||||
|
boolean stillTutorial = true;
|
||||||
|
for (String[] sA: MapReader.inputSign(filePath)) {
|
||||||
|
if (sA[0].contains("/")) {
|
||||||
|
stillTutorial = false;
|
||||||
|
} else if (stillTutorial) {
|
||||||
|
System.out.println("" + sA[0] + sA[1]);
|
||||||
|
GameFrame.game.tutorialSign.add(new WallSign(Integer.parseInt(sA[0]), Integer.parseInt(sA[1]), GamePanel.tutorialFont, sA[2]));
|
||||||
|
} else {
|
||||||
|
GameFrame.game.loreSign.add(new WallSign(Integer.parseInt(sA[0]), Integer.parseInt(sA[1]), GamePanel.loreFont, sA[2]));
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (IOException | SpriteException | UnsupportedAudioFileException | LineUnavailableException e) {
|
} catch (IOException | SpriteException | UnsupportedAudioFileException | LineUnavailableException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import javax.sound.sampled.LineUnavailableException;
|
import javax.sound.sampled.LineUnavailableException;
|
||||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class MapReader implements Serializable {
|
public class MapReader implements Serializable {
|
||||||
|
@ -128,6 +129,16 @@ public class MapReader implements Serializable {
|
||||||
return FileManager.readFile(filePath).split("\n");
|
return FileManager.readFile(filePath).split("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ArrayList<String[]> inputSign(String signFilePath) throws IOException {
|
||||||
|
String filePath = signFilePath.replace(".txt", "-signs.txt");
|
||||||
|
String[] temporaryStringArray = FileManager.readFile(filePath).split("\n");
|
||||||
|
ArrayList<String[]> returnArray = new ArrayList<String[]>();
|
||||||
|
for (String s: temporaryStringArray) {
|
||||||
|
returnArray.add(s.split(" ", 3));
|
||||||
|
}
|
||||||
|
return returnArray;
|
||||||
|
}
|
||||||
|
|
||||||
public static void newTile(String filePath) throws IOException, SpriteException {
|
public static void newTile(String filePath) throws IOException, SpriteException {
|
||||||
GameFrame.game.map[x][y]=(new SingleTile(TileX,TileY, new BufferedImageWrapper((filePath))));
|
GameFrame.game.map[x][y]=(new SingleTile(TileX,TileY, new BufferedImageWrapper((filePath))));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
import java.awt.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class WallSign extends TextBox implements Serializable {
|
||||||
|
|
||||||
|
public WallSign(int x, int y, Font font, String text) {
|
||||||
|
super(0, 0, 0, 0, font, text, null);
|
||||||
|
this.newX = x;
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: flip
|
||||||
|
public void draw(Graphics g, Color textColor) {
|
||||||
|
int oldX = this.newX;
|
||||||
|
newX -= GameFrame.game.camera.x;
|
||||||
|
super.draw(g, new Color(0, 0, 0, 0), textColor);
|
||||||
|
newX = oldX;
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue