improved javadoc and enimateMove
This commit is contained in:
parent
490f607986
commit
53f9333ce1
@ -60,7 +60,7 @@ public class Battle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks, if all enemies dies
|
* Checks, if all enemies died
|
||||||
* @return true if all dies
|
* @return true if all dies
|
||||||
*/
|
*/
|
||||||
public boolean checkHealthOfEnemies(){
|
public boolean checkHealthOfEnemies(){
|
||||||
@ -68,7 +68,7 @@ public class Battle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks, if all heroes dies
|
* Checks, if all heroes died
|
||||||
* @return true if all dies
|
* @return true if all dies
|
||||||
*/
|
*/
|
||||||
public boolean checkHealthOfHeroes(){
|
public boolean checkHealthOfHeroes(){
|
||||||
|
|||||||
@ -8,6 +8,9 @@ import java.awt.image.RescaleOp;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* General class for all battle actors
|
||||||
|
*/
|
||||||
public abstract class BattlePerson {
|
public abstract class BattlePerson {
|
||||||
protected int maxHealth;
|
protected int maxHealth;
|
||||||
protected int health;
|
protected int health;
|
||||||
@ -34,6 +37,10 @@ public abstract class BattlePerson {
|
|||||||
strength = str;
|
strength = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses image to be displayed
|
||||||
|
* @param name image file name
|
||||||
|
*/
|
||||||
public void parseImage(String name) {
|
public void parseImage(String name) {
|
||||||
try {
|
try {
|
||||||
image = ImageIO.read(new File("src/main/resources/characters/" + name.substring(0, name.indexOf("-battle")) + "/" + name + ".png"));
|
image = ImageIO.read(new File("src/main/resources/characters/" + name.substring(0, name.indexOf("-battle")) + "/" + name + ".png"));
|
||||||
@ -47,6 +54,10 @@ public abstract class BattlePerson {
|
|||||||
effectCoords(effect);
|
effectCoords(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts timer that is effecting person's coordinates - creates movement effects
|
||||||
|
* @param effect effect name
|
||||||
|
*/
|
||||||
private void effectCoords(String effect) {
|
private void effectCoords(String effect) {
|
||||||
if (effect.equals("hover")) {
|
if (effect.equals("hover")) {
|
||||||
final boolean[] isGoingUp = {true};
|
final boolean[] isGoingUp = {true};
|
||||||
@ -102,6 +113,9 @@ public abstract class BattlePerson {
|
|||||||
if (effectTimer!= null) effectTimer.stop();
|
if (effectTimer!= null) effectTimer.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a flashing effect of getting hurt
|
||||||
|
*/
|
||||||
private void getHurt() {
|
private void getHurt() {
|
||||||
BufferedImage originalImage = image;
|
BufferedImage originalImage = image;
|
||||||
BufferedImage whiteImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
BufferedImage whiteImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
||||||
@ -128,6 +142,9 @@ public abstract class BattlePerson {
|
|||||||
timer.start();
|
timer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a line effect of getting healed
|
||||||
|
*/
|
||||||
protected void getHealed() {
|
protected void getHealed() {
|
||||||
BufferedImage originalImage = image;
|
BufferedImage originalImage = image;
|
||||||
BufferedImage whiteImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
BufferedImage whiteImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
||||||
@ -150,6 +167,10 @@ public abstract class BattlePerson {
|
|||||||
timer.start();
|
timer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays grid effect of dying and removes person from battle
|
||||||
|
* @param battle reference for Battle
|
||||||
|
*/
|
||||||
public void getKilled(Battle battle) {
|
public void getKilled(Battle battle) {
|
||||||
BufferedImage originalImage = image;
|
BufferedImage originalImage = image;
|
||||||
BufferedImage whiteImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
BufferedImage whiteImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
||||||
|
|||||||
@ -11,6 +11,7 @@ public class Enemy extends BattlePerson {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//this constructor is here for of tests
|
||||||
public Enemy(int hp, int lvl, String name, int str, int id) {
|
public Enemy(int hp, int lvl, String name, int str, int id) {
|
||||||
super(hp, lvl, name, str);
|
super(hp, lvl, name, str);
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|||||||
@ -15,6 +15,7 @@ public class Hero extends BattlePerson {
|
|||||||
isBlocking = false;
|
isBlocking = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//this constructor is here for of tests
|
||||||
public Hero(int hp, int lvl, String name, int str, int mana, int defence){
|
public Hero(int hp, int lvl, String name, int str, int mana, int defence){
|
||||||
super(hp, lvl, name, str);
|
super(hp, lvl, name, str);
|
||||||
this.mana = mana;
|
this.mana = mana;
|
||||||
|
|||||||
@ -40,6 +40,12 @@ public class Block extends Cell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param x X position
|
||||||
|
* @param y Y position
|
||||||
|
* @param half is half-block
|
||||||
|
* @return true if Block is upper half-block
|
||||||
|
*/
|
||||||
public boolean isInBlock(int x, int y, boolean half) {
|
public boolean isInBlock(int x, int y, boolean half) {
|
||||||
return (this.getX() == x) && (this.getY() == y) && !(partial.equals("d"));
|
return (this.getX() == x) && (this.getY() == y) && !(partial.equals("d"));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,9 @@ import java.io.FileNotFoundException;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Special type of Interaction cell that holds an inventory
|
||||||
|
*/
|
||||||
public class ChestCell extends InteractionCell {
|
public class ChestCell extends InteractionCell {
|
||||||
private final LinkedList<Item> chestInventory;
|
private final LinkedList<Item> chestInventory;
|
||||||
private boolean showItem;
|
private boolean showItem;
|
||||||
@ -33,6 +36,10 @@ public class ChestCell extends InteractionCell {
|
|||||||
fillChest(inventory);
|
fillChest(inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fills chest with item from file
|
||||||
|
* @param inventory name of inventory file
|
||||||
|
*/
|
||||||
private void fillChest(String inventory) {
|
private void fillChest(String inventory) {
|
||||||
try {
|
try {
|
||||||
File inventoryInfo = new File("src/main/resources/chests/" + inventory + ".txt");
|
File inventoryInfo = new File("src/main/resources/chests/" + inventory + ".txt");
|
||||||
@ -55,6 +62,9 @@ public class ChestCell extends InteractionCell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Puts an item in Players inventory
|
||||||
|
*/
|
||||||
private void putItemToInventory() {
|
private void putItemToInventory() {
|
||||||
if (chestInventory.size() == 0) {
|
if (chestInventory.size() == 0) {
|
||||||
endEvent();
|
endEvent();
|
||||||
|
|||||||
@ -7,6 +7,9 @@ import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
|||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Special type of Interaction cell that can act as a Block or as Empty
|
||||||
|
*/
|
||||||
public class DoorCell extends InteractionCell {
|
public class DoorCell extends InteractionCell {
|
||||||
private boolean isOpen;
|
private boolean isOpen;
|
||||||
private boolean isLocked;
|
private boolean isLocked;
|
||||||
@ -45,6 +48,9 @@ public class DoorCell extends InteractionCell {
|
|||||||
super.useItem(item);
|
super.useItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets sound that is played on interaction
|
||||||
|
*/
|
||||||
private void setSound() {
|
private void setSound() {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
sound = super.getSoundManager().getSoundMap().get("doorOpen");
|
sound = super.getSoundManager().getSoundMap().get("doorOpen");
|
||||||
|
|||||||
@ -5,6 +5,9 @@ import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
|||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cell that moves Player between maps
|
||||||
|
*/
|
||||||
public class EventMoveToCell extends Cell {
|
public class EventMoveToCell extends Cell {
|
||||||
private final Map map;
|
private final Map map;
|
||||||
private final WindowOfFreeMove window;
|
private final WindowOfFreeMove window;
|
||||||
@ -29,6 +32,9 @@ public class EventMoveToCell extends Cell {
|
|||||||
|
|
||||||
public int getDirectionOut() { return directionOut; }
|
public int getDirectionOut() { return directionOut; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves player to map that is linked with this Moveto cell
|
||||||
|
*/
|
||||||
public void moveToMap() {
|
public void moveToMap() {
|
||||||
window.getMapManager().getActualMap().setIdExit(id);
|
window.getMapManager().getActualMap().setIdExit(id);
|
||||||
window.setMapManager(this.map);
|
window.setMapManager(this.map);
|
||||||
@ -39,6 +45,10 @@ public class EventMoveToCell extends Cell {
|
|||||||
WindowOfFreeMove.setCanPersonMove(true);
|
WindowOfFreeMove.setCanPersonMove(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks for active Trigger cells in the directionOut from Door
|
||||||
|
* @return true if there is an active Trigger cell
|
||||||
|
*/
|
||||||
private boolean isActiveTriggerBehindMoveTo() {
|
private boolean isActiveTriggerBehindMoveTo() {
|
||||||
int x = window.getMapManager().getActualMap().getPerson().getX();
|
int x = window.getMapManager().getActualMap().getPerson().getX();
|
||||||
int y = window.getMapManager().getActualMap().getPerson().getY();
|
int y = window.getMapManager().getActualMap().getPerson().getY();
|
||||||
|
|||||||
@ -17,6 +17,9 @@ import java.io.FileNotFoundException;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cell that is interactible by Player
|
||||||
|
*/
|
||||||
public class InteractionCell extends Cell {
|
public class InteractionCell extends Cell {
|
||||||
protected String message;
|
protected String message;
|
||||||
protected Dialog dialog;
|
protected Dialog dialog;
|
||||||
@ -38,6 +41,9 @@ public class InteractionCell extends Cell {
|
|||||||
this.paint = paint;
|
this.paint = paint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts regular event or cut-scene
|
||||||
|
*/
|
||||||
public void startEvent() {
|
public void startEvent() {
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
if (message.contains("cutscene")) {
|
if (message.contains("cutscene")) {
|
||||||
@ -56,6 +62,10 @@ public class InteractionCell extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads event file and passes in on to readNextLine
|
||||||
|
* @param name event file name
|
||||||
|
*/
|
||||||
public void readDialogFile(String name) {
|
public void readDialogFile(String name) {
|
||||||
try {
|
try {
|
||||||
File dialogFile = new File("src/main/resources/dialogs/" + name + ".txt");
|
File dialogFile = new File("src/main/resources/dialogs/" + name + ".txt");
|
||||||
@ -67,6 +77,9 @@ public class InteractionCell extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses line of event text into set of commands
|
||||||
|
*/
|
||||||
public void readNextLine() {
|
public void readNextLine() {
|
||||||
if (scanner.hasNextLine() && !dialog.getTimerIsRunning()) {
|
if (scanner.hasNextLine() && !dialog.getTimerIsRunning()) {
|
||||||
String data = scanner.nextLine();
|
String data = scanner.nextLine();
|
||||||
@ -211,6 +224,9 @@ public class InteractionCell extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ends event and bounds camera
|
||||||
|
*/
|
||||||
public void endEvent() {
|
public void endEvent() {
|
||||||
if (dialog != null) {
|
if (dialog != null) {
|
||||||
dialog.hideText();
|
dialog.hideText();
|
||||||
@ -226,6 +242,11 @@ public class InteractionCell extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses line of cut-scene text into a set of commands if the sequence numbers are equal
|
||||||
|
* @param name text to parse
|
||||||
|
* @param i sequence number
|
||||||
|
*/
|
||||||
public void playCustscene(String name, int i) {
|
public void playCustscene(String name, int i) {
|
||||||
try {
|
try {
|
||||||
File cutsceneFile = new File("src/main/resources/dialogs/cutscenes/" + name + ".txt");
|
File cutsceneFile = new File("src/main/resources/dialogs/cutscenes/" + name + ".txt");
|
||||||
@ -257,7 +278,7 @@ public class InteractionCell extends Cell {
|
|||||||
String[] texts = line.split("<split>");
|
String[] texts = line.split("<split>");
|
||||||
final int[] j = {0};
|
final int[] j = {0};
|
||||||
textTimer = new Timer(100, e -> {
|
textTimer = new Timer(100, e -> {
|
||||||
if (j[0] == texts.length - 1) stopTextTimer();
|
if (j[0] == texts.length - 1) textTimer.stop();
|
||||||
if (!dialog.getTimerIsRunning()) {
|
if (!dialog.getTimerIsRunning()) {
|
||||||
if (texts[j[0]].contains("<br/>")) {
|
if (texts[j[0]].contains("<br/>")) {
|
||||||
texts[j[0]] = "<html>" + texts[j[0]] + "</html>";
|
texts[j[0]] = "<html>" + texts[j[0]] + "</html>";
|
||||||
@ -370,10 +391,10 @@ public class InteractionCell extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopTextTimer() {
|
/**
|
||||||
textTimer.stop();
|
* Uses a selected item
|
||||||
}
|
* @param item item to be used
|
||||||
|
*/
|
||||||
public void useItem(Item item) {
|
public void useItem(Item item) {
|
||||||
InventoryManager.removeItem(item, 1);
|
InventoryManager.removeItem(item, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,9 @@ import java.io.IOException;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Person-like cell that is controlled by application
|
||||||
|
*/
|
||||||
public class Npc extends Person {
|
public class Npc extends Person {
|
||||||
private final MapManager mapManager;
|
private final MapManager mapManager;
|
||||||
private String name;
|
private String name;
|
||||||
@ -41,6 +44,11 @@ public class Npc extends Person {
|
|||||||
this.mapManager = mapManager;
|
this.mapManager = mapManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds closest path from current position to end and moves NPC accordingly
|
||||||
|
* @param endX ending X value
|
||||||
|
* @param endY ending Y value
|
||||||
|
*/
|
||||||
public void move(int endX, int endY) {
|
public void move(int endX, int endY) {
|
||||||
PathFinder pathFinder = new PathFinder(getMap());
|
PathFinder pathFinder = new PathFinder(getMap());
|
||||||
LinkedList<Direction> directions = pathFinder.getWayWithCollision(getX(), getY(), endX, endY);
|
LinkedList<Direction> directions = pathFinder.getWayWithCollision(getX(), getY(), endX, endY);
|
||||||
@ -75,6 +83,11 @@ public class Npc extends Person {
|
|||||||
timer.start();
|
timer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stops NPC's movement and if battle name is not null and there is Player in front of NPC, is starts battle sequence
|
||||||
|
* @param endX ending X value
|
||||||
|
* @param endY ending Y value
|
||||||
|
*/
|
||||||
private void stopNPCMove(int endX, int endY) {
|
private void stopNPCMove(int endX, int endY) {
|
||||||
timer.stop();
|
timer.stop();
|
||||||
if (battle != null && endX == mapManager.getActualMap().getPerson().getX() && endY == mapManager.getActualMap().getPerson().getY()) {
|
if (battle != null && endX == mapManager.getActualMap().getPerson().getX() && endY == mapManager.getActualMap().getPerson().getY()) {
|
||||||
@ -82,30 +95,45 @@ public class Npc extends Person {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves NPC up one cell
|
||||||
|
*/
|
||||||
private void moveUp() {
|
private void moveUp() {
|
||||||
int y = getY() - 1;
|
int y = getY() - 1;
|
||||||
set(getX(), y);
|
set(getX(), y);
|
||||||
direction = 2;
|
direction = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves NPC down one cell
|
||||||
|
*/
|
||||||
private void moveDown() {
|
private void moveDown() {
|
||||||
int y = getY() + 1;
|
int y = getY() + 1;
|
||||||
set(getX(), y);
|
set(getX(), y);
|
||||||
direction = 1;
|
direction = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves NPC left one cell
|
||||||
|
*/
|
||||||
private void moveLeft() {
|
private void moveLeft() {
|
||||||
int x = getX() - 1;
|
int x = getX() - 1;
|
||||||
set(x, getY());
|
set(x, getY());
|
||||||
direction = 0;
|
direction = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves NPC right one cell
|
||||||
|
*/
|
||||||
private void moveRight() {
|
private void moveRight() {
|
||||||
int x = getX() + 1;
|
int x = getX() + 1;
|
||||||
set(x, getY());
|
set(x, getY());
|
||||||
direction = 3;
|
direction = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads NPC's attributes from file
|
||||||
|
*/
|
||||||
private void loadNpc() {
|
private void loadNpc() {
|
||||||
File dialogFile = new File("src/main/resources/characters/" + name + "/" + name + ".txt");
|
File dialogFile = new File("src/main/resources/characters/" + name + "/" + name + ".txt");
|
||||||
Scanner scanner = null;
|
Scanner scanner = null;
|
||||||
|
|||||||
@ -6,6 +6,9 @@ import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
|||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class managing Player
|
||||||
|
*/
|
||||||
public class Person extends Cell {
|
public class Person extends Cell {
|
||||||
private final int WALKING_SPEED = 3;
|
private final int WALKING_SPEED = 3;
|
||||||
|
|
||||||
@ -17,6 +20,7 @@ public class Person extends Cell {
|
|||||||
private boolean isMoving;
|
private boolean isMoving;
|
||||||
private static boolean isInEvent;
|
private static boolean isInEvent;
|
||||||
private int distanceOfAnimation;
|
private int distanceOfAnimation;
|
||||||
|
private long time;
|
||||||
|
|
||||||
public Map getMap() {
|
public Map getMap() {
|
||||||
return map;
|
return map;
|
||||||
@ -61,6 +65,9 @@ public class Person extends Cell {
|
|||||||
this.imagePerson = new ImagePerson(name, rectangles);
|
this.imagePerson = new ImagePerson(name, rectangles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks for user input then checks if movement is possible then moves Player
|
||||||
|
*/
|
||||||
public void move() {
|
public void move() {
|
||||||
if (!isMoving) {
|
if (!isMoving) {
|
||||||
int x = this.getX();
|
int x = this.getX();
|
||||||
@ -173,16 +180,37 @@ public class Person extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if there is an Event cell in front of Player
|
||||||
|
* @param x X position of Player
|
||||||
|
* @param y Y position of Player
|
||||||
|
* @param directionSight direction of sight of Player
|
||||||
|
* @return true if there is an event in front of Player
|
||||||
|
*/
|
||||||
private boolean isEventInFront(int x, int y, int directionSight) {
|
private boolean isEventInFront(int x, int y, int directionSight) {
|
||||||
int[] coords = map.directionSightSwitch(x, y, directionSight);
|
int[] coords = map.directionSightSwitch(x, y, directionSight);
|
||||||
return map.isInteractionCell(coords[0], coords[1]);
|
return map.isInteractionCell(coords[0], coords[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if there is a Door cell in front of Player
|
||||||
|
* @param x X position of Player
|
||||||
|
* @param y Y position of Player
|
||||||
|
* @param directionSight direction of sight of Player
|
||||||
|
* @return true if there is a door in front of Player
|
||||||
|
*/
|
||||||
private boolean isDoorInFront(int x, int y, int directionSight) {
|
private boolean isDoorInFront(int x, int y, int directionSight) {
|
||||||
int[] coords = map.directionSightSwitch(x, y, directionSight);
|
int[] coords = map.directionSightSwitch(x, y, directionSight);
|
||||||
return map.isDoor(coords[0], coords[1]);
|
return map.isDoor(coords[0], coords[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if there is a Chest cell in front of Player
|
||||||
|
* @param x X position of Player
|
||||||
|
* @param y Y position of Player
|
||||||
|
* @param directionSight direction of sight of Player
|
||||||
|
* @return true if there is a chest in front of Player
|
||||||
|
*/
|
||||||
private boolean isChestInFront(int x, int y, int directionSight) {
|
private boolean isChestInFront(int x, int y, int directionSight) {
|
||||||
int[] coords = map.directionSightSwitch(x, y, directionSight);
|
int[] coords = map.directionSightSwitch(x, y, directionSight);
|
||||||
return map.isActiveChest(coords[0], coords[1]);
|
return map.isActiveChest(coords[0], coords[1]);
|
||||||
@ -229,7 +257,15 @@ public class Person extends Cell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Animates Players move throughout the map
|
||||||
|
* @param g graphics for painting
|
||||||
|
* @param direction Player's movement direction
|
||||||
|
*/
|
||||||
public void animateMove(Graphics2D g, int direction){
|
public void animateMove(Graphics2D g, int direction){
|
||||||
|
if (System.currentTimeMillis() - time < WindowOfFreeMove.REPAINT_DELAY)
|
||||||
|
WindowOfFreeMove.sleep(WindowOfFreeMove.REPAINT_DELAY - (System.currentTimeMillis() - time));
|
||||||
|
time = System.currentTimeMillis();
|
||||||
int Xsize = 0;
|
int Xsize = 0;
|
||||||
int Ysize = 0;
|
int Ysize = 0;
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
|
|||||||
@ -6,6 +6,9 @@ import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
|||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Special type of Interaction cell that is triggered on Player stepping onto it
|
||||||
|
*/
|
||||||
public class TriggerCell extends InteractionCell {
|
public class TriggerCell extends InteractionCell {
|
||||||
private boolean isActive;
|
private boolean isActive;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
package ruscz.game.gameOfProd.Cells;
|
package ruscz.game.gameOfProd.Cells;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enumeration of basic cell types
|
||||||
|
*/
|
||||||
public enum TypeOfCell {
|
public enum TypeOfCell {
|
||||||
BLOCK, EMPTY, MOVETO, EVENT, SPAWNPOINT;
|
BLOCK, EMPTY, MOVETO, EVENT, SPAWNPOINT;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,9 +25,9 @@ public class ImageCell {
|
|||||||
private int[][] mapForeground;
|
private int[][] mapForeground;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new matrices based on winth and height values
|
||||||
* @param width is width of new map
|
* @param width is width of new map
|
||||||
* @param height is height of new map
|
* @param height is height of new map
|
||||||
* Creates new matrices based on winth and height values
|
|
||||||
*/
|
*/
|
||||||
public void readMapFile(int width, int height) {
|
public void readMapFile(int width, int height) {
|
||||||
mapBackground = new int[width][height];
|
mapBackground = new int[width][height];
|
||||||
@ -35,8 +35,8 @@ public class ImageCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name is name of map file
|
|
||||||
* Reads and parses (map-name)-tileset.txt file into matrices and arrays, separates values and passes them on for further parsing
|
* Reads and parses (map-name)-tileset.txt file into matrices and arrays, separates values and passes them on for further parsing
|
||||||
|
* @param name is name of map file
|
||||||
*/
|
*/
|
||||||
public void readMapFile(String name) {
|
public void readMapFile(String name) {
|
||||||
try {
|
try {
|
||||||
@ -75,8 +75,8 @@ public class ImageCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param tilesetInfo is name of tileset image
|
|
||||||
* Parses tileset image into a tileset (array)
|
* Parses tileset image into a tileset (array)
|
||||||
|
* @param tilesetInfo is name of tileset image
|
||||||
*/
|
*/
|
||||||
public void imageTileset(String[] tilesetInfo) {
|
public void imageTileset(String[] tilesetInfo) {
|
||||||
try {
|
try {
|
||||||
@ -113,8 +113,8 @@ public class ImageCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param file is name of map tp be parsed
|
|
||||||
* Parses (map-name)-objectset.txt file into a matrix
|
* Parses (map-name)-objectset.txt file into a matrix
|
||||||
|
* @param file is name of map tp be parsed
|
||||||
*/
|
*/
|
||||||
public void imageObjectset(String file) {
|
public void imageObjectset(String file) {
|
||||||
try {
|
try {
|
||||||
@ -134,8 +134,8 @@ public class ImageCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param cellInfo is text representation of cellMap
|
|
||||||
* Parses text into a hash map
|
* Parses text into a hash map
|
||||||
|
* @param cellInfo is text representation of cellMap
|
||||||
*/
|
*/
|
||||||
public void loadCellMap(String[] cellInfo) {
|
public void loadCellMap(String[] cellInfo) {
|
||||||
if (cellMap == null)
|
if (cellMap == null)
|
||||||
@ -158,8 +158,8 @@ public class ImageCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param itemInfo is name of item image
|
|
||||||
* Parses item image into array
|
* Parses item image into array
|
||||||
|
* @param itemInfo is name of item image
|
||||||
*/
|
*/
|
||||||
public void imageItem(String itemInfo) {
|
public void imageItem(String itemInfo) {
|
||||||
int imageWidth = 0;
|
int imageWidth = 0;
|
||||||
|
|||||||
@ -15,8 +15,8 @@ public class ImageDoor {
|
|||||||
private int size;
|
private int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param rectangles is array of door images
|
|
||||||
* Parses images of door into an array
|
* Parses images of door into an array
|
||||||
|
* @param rectangles is array of door images
|
||||||
*/
|
*/
|
||||||
public void setAllImagesOfDoor(Rectangle[] rectangles){
|
public void setAllImagesOfDoor(Rectangle[] rectangles){
|
||||||
imagesOfDoor = new BufferedImage[4];
|
imagesOfDoor = new BufferedImage[4];
|
||||||
|
|||||||
@ -19,8 +19,8 @@ public class ImagePerson {
|
|||||||
private int subimageHeight;
|
private int subimageHeight;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param rectangles is array of hero images
|
|
||||||
* Parses images of hero into an array
|
* Parses images of hero into an array
|
||||||
|
* @param rectangles is array of hero images
|
||||||
*/
|
*/
|
||||||
public void setAllImagesOfDirection(Rectangle[] rectangles){
|
public void setAllImagesOfDirection(Rectangle[] rectangles){
|
||||||
imagesOfDirection = new BufferedImage[12];
|
imagesOfDirection = new BufferedImage[12];
|
||||||
@ -54,9 +54,9 @@ public class ImagePerson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Resizes image to be properly displayed in game
|
||||||
* @param img is image to be resized
|
* @param img is image to be resized
|
||||||
* @return resized image
|
* @return resized image
|
||||||
* Resizes image to be properly displayed in game
|
|
||||||
*/
|
*/
|
||||||
public BufferedImage resize(BufferedImage img) {
|
public BufferedImage resize(BufferedImage img) {
|
||||||
Image tmp;
|
Image tmp;
|
||||||
|
|||||||
@ -91,10 +91,10 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new JLabel with name of cell type
|
||||||
* @param name is name of label
|
* @param name is name of label
|
||||||
* @param offset is offset of label
|
* @param offset is offset of label
|
||||||
* @return new JLabel
|
* @return new JLabel
|
||||||
* Creates new JLabel with name of cell type
|
|
||||||
*/
|
*/
|
||||||
private JLabel nameLabel(String name, int offset) {
|
private JLabel nameLabel(String name, int offset) {
|
||||||
JLabel label = new JLabel("<html><div style='width: 250; text-align:center; font-size: 16'>" + name + "</div></html>");
|
JLabel label = new JLabel("<html><div style='width: 250; text-align:center; font-size: 16'>" + name + "</div></html>");
|
||||||
@ -103,10 +103,10 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new JLabel with image of the selected tile
|
||||||
* @param name is name of label
|
* @param name is name of label
|
||||||
* @param offset is offset of label
|
* @param offset is offset of label
|
||||||
* @return new JLabel
|
* @return new JLabel
|
||||||
* Creates new JLabel with image of the selected tile
|
|
||||||
*/
|
*/
|
||||||
private JLabel iconLabel(String name, int offset) {
|
private JLabel iconLabel(String name, int offset) {
|
||||||
JLabel label = new JLabel();
|
JLabel label = new JLabel();
|
||||||
@ -118,9 +118,9 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates label with 'Inner Value:' text
|
||||||
* @param offset is offset of label
|
* @param offset is offset of label
|
||||||
* @return new JLabel
|
* @return new JLabel
|
||||||
* Creates label with 'Inner Value:' text
|
|
||||||
*/
|
*/
|
||||||
private JLabel valueLabel(int offset) {
|
private JLabel valueLabel(int offset) {
|
||||||
JLabel label = new JLabel("Inner Value:");
|
JLabel label = new JLabel("Inner Value:");
|
||||||
@ -129,10 +129,10 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates text field for value input
|
||||||
* @param name is name of field
|
* @param name is name of field
|
||||||
* @param offset is offset of field
|
* @param offset is offset of field
|
||||||
* @return new JTextField
|
* @return new JTextField
|
||||||
* Creates text field for value input
|
|
||||||
*/
|
*/
|
||||||
private JTextField numField(String name, int offset) {
|
private JTextField numField(String name, int offset) {
|
||||||
JTextField field = new JTextField(String.valueOf(editor.getCellMap().get(name)));
|
JTextField field = new JTextField(String.valueOf(editor.getCellMap().get(name)));
|
||||||
@ -142,11 +142,11 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new button for importing value from Tileset Overview
|
||||||
* @param iconLabel is label to be changed
|
* @param iconLabel is label to be changed
|
||||||
* @param tileNum is text field to be changed
|
* @param tileNum is text field to be changed
|
||||||
* @param offset is offset of button
|
* @param offset is offset of button
|
||||||
* @return new JButton
|
* @return new JButton
|
||||||
* Creates new button for importing value from Tileset Overview
|
|
||||||
*/
|
*/
|
||||||
private JButton importButton(JLabel iconLabel, JTextField tileNum, int offset) {
|
private JButton importButton(JLabel iconLabel, JTextField tileNum, int offset) {
|
||||||
JButton button = new JButton("Import selected tile");
|
JButton button = new JButton("Import selected tile");
|
||||||
@ -166,10 +166,10 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new button for selecting a tile in Tileset Overview
|
||||||
* @param importButton is reference for connected import button
|
* @param importButton is reference for connected import button
|
||||||
* @param offset is offset of button
|
* @param offset is offset of button
|
||||||
* @return new JButton
|
* @return new JButton
|
||||||
* Creates new button for selecting a tile in Tileset Overview
|
|
||||||
*/
|
*/
|
||||||
private JButton selectButton(JButton importButton, int offset) {
|
private JButton selectButton(JButton importButton, int offset) {
|
||||||
JButton button = new JButton("Select tile");
|
JButton button = new JButton("Select tile");
|
||||||
@ -186,9 +186,9 @@ public class CellSetConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new label that is used as a divider between different blocks of fields
|
||||||
* @param offset is offset of label
|
* @param offset is offset of label
|
||||||
* @return new JLabel
|
* @return new JLabel
|
||||||
* Creates new label that is used as a divider between different blocks of fields
|
|
||||||
*/
|
*/
|
||||||
private JLabel dividerLabel(int offset) {
|
private JLabel dividerLabel(int offset) {
|
||||||
JLabel label = new JLabel();
|
JLabel label = new JLabel();
|
||||||
|
|||||||
@ -23,8 +23,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param type is type of cell
|
|
||||||
* Displays detailed info based on the type of cell provided
|
* Displays detailed info based on the type of cell provided
|
||||||
|
* @param type is type of cell
|
||||||
*/
|
*/
|
||||||
public void displayDetailedCellInfo(String type) {
|
public void displayDetailedCellInfo(String type) {
|
||||||
removeAll();
|
removeAll();
|
||||||
@ -68,11 +68,11 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Displays set of radio buttons for true/false selection
|
||||||
* @param title is tile of this field
|
* @param title is tile of this field
|
||||||
* @param trueLabel is true value
|
* @param trueLabel is true value
|
||||||
* @param falseLabel is false value
|
* @param falseLabel is false value
|
||||||
* @param offset is offset from top of menu
|
* @param offset is offset from top of menu
|
||||||
* Displays set of radio buttons for true/false selection
|
|
||||||
*/
|
*/
|
||||||
private void trueFalseInfo(String title, String trueLabel, String falseLabel, int offset) {
|
private void trueFalseInfo(String title, String trueLabel, String falseLabel, int offset) {
|
||||||
JLabel label = new JLabel("<html><div style='text-align: center; width: 260'>Is " + title + "</div></html>");
|
JLabel label = new JLabel("<html><div style='text-align: center; width: 260'>Is " + title + "</div></html>");
|
||||||
@ -102,10 +102,10 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Displays one text field with a name
|
||||||
* @param title is tile of this field
|
* @param title is tile of this field
|
||||||
* @param fieldName is name of text field
|
* @param fieldName is name of text field
|
||||||
* @param offset is offset from top of menu
|
* @param offset is offset from top of menu
|
||||||
* Displays one text field with a name
|
|
||||||
*/
|
*/
|
||||||
private void fieldInfo(String title, String fieldName, int offset) {
|
private void fieldInfo(String title, String fieldName, int offset) {
|
||||||
JLabel label = new JLabel("<html><div style='text-align: center; width: 260'>" + title + "</div></html>");
|
JLabel label = new JLabel("<html><div style='text-align: center; width: 260'>" + title + "</div></html>");
|
||||||
@ -162,8 +162,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param offset is offset from top of menu
|
|
||||||
* Displays set of four radio buttons for direction selection
|
* Displays set of four radio buttons for direction selection
|
||||||
|
* @param offset is offset from top of menu
|
||||||
*/
|
*/
|
||||||
private void directionInfo(int offset) {
|
private void directionInfo(int offset) {
|
||||||
JLabel label = new JLabel("<html><div style='text-align: center; width: 260'>Direction Out</div></html>");
|
JLabel label = new JLabel("<html><div style='text-align: center; width: 260'>Direction Out</div></html>");
|
||||||
@ -208,9 +208,9 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Saves all attributes from menu into text
|
||||||
* @param type type of cell
|
* @param type type of cell
|
||||||
* @return cell value as it would be in a text file
|
* @return cell value as it would be in a text file
|
||||||
* Saves all attributes from menu into text
|
|
||||||
*/
|
*/
|
||||||
public String getCellInfo(String type) {
|
public String getCellInfo(String type) {
|
||||||
String info = type;
|
String info = type;
|
||||||
@ -262,9 +262,9 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Changes type of cell based on visibility value
|
||||||
* @param type type of cell
|
* @param type type of cell
|
||||||
* @return changed type of cell
|
* @return changed type of cell
|
||||||
* Changes type of cell based on visibility value
|
|
||||||
*/
|
*/
|
||||||
private String getVisibleInfo(String type) {
|
private String getVisibleInfo(String type) {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -282,8 +282,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return text to determine if block is half-block
|
|
||||||
* Checks if a block is supposed to be half-block
|
* Checks if a block is supposed to be half-block
|
||||||
|
* @return text to determine if block is half-block
|
||||||
*/
|
*/
|
||||||
private String getUpperLowerInfo() {
|
private String getUpperLowerInfo() {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -301,10 +301,10 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Saves field value
|
||||||
* @param fieldName name of field to be saved
|
* @param fieldName name of field to be saved
|
||||||
* @param isRequired is this field required to be filled in
|
* @param isRequired is this field required to be filled in
|
||||||
* @return value form field
|
* @return value form field
|
||||||
* Saves field value
|
|
||||||
*/
|
*/
|
||||||
private String getFieldInfo(String fieldName, boolean isRequired) {
|
private String getFieldInfo(String fieldName, boolean isRequired) {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -324,9 +324,9 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Checks id field value is an integer and saves it
|
||||||
* @param fieldName name of field to be saved
|
* @param fieldName name of field to be saved
|
||||||
* @return value form field
|
* @return value form field
|
||||||
* Checks id field value is an integer and saves it
|
|
||||||
*/
|
*/
|
||||||
private String getFieldIntegerInfo(String fieldName) {
|
private String getFieldIntegerInfo(String fieldName) {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -344,10 +344,10 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Saves true/false value as text
|
||||||
* @param trueLabel is name of true button
|
* @param trueLabel is name of true button
|
||||||
* @param falseLabel is name of false button
|
* @param falseLabel is name of false button
|
||||||
* @return text representation
|
* @return text representation
|
||||||
* Saves true/false value as text
|
|
||||||
*/
|
*/
|
||||||
private String getTrueFalseInfo(String trueLabel, String falseLabel) {
|
private String getTrueFalseInfo(String trueLabel, String falseLabel) {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -365,8 +365,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return text representation of direction
|
|
||||||
* Saves direction info as text
|
* Saves direction info as text
|
||||||
|
* @return text representation of direction
|
||||||
*/
|
*/
|
||||||
private String getDirectionInfo() {
|
private String getDirectionInfo() {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -392,9 +392,9 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Changes type of cell based on direction value
|
||||||
* @param type type of cell
|
* @param type type of cell
|
||||||
* @return changed type of cell
|
* @return changed type of cell
|
||||||
* Changes type of cell based on direction value
|
|
||||||
*/
|
*/
|
||||||
private String getDoorInfo(String type) {
|
private String getDoorInfo(String type) {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -408,8 +408,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return text representation
|
|
||||||
* Saves if door is supposed to be locked
|
* Saves if door is supposed to be locked
|
||||||
|
* @return text representation
|
||||||
*/
|
*/
|
||||||
private String getLockedInfo() {
|
private String getLockedInfo() {
|
||||||
String info = "";
|
String info = "";
|
||||||
@ -471,8 +471,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param value is text true/false value
|
|
||||||
* Parses value and checks corresponding button
|
* Parses value and checks corresponding button
|
||||||
|
* @param value is text true/false value
|
||||||
*/
|
*/
|
||||||
private void setTrueFalseInfo(String value) {
|
private void setTrueFalseInfo(String value) {
|
||||||
if (value.equals("false")) {
|
if (value.equals("false")) {
|
||||||
@ -502,8 +502,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param value is text half-block value
|
|
||||||
* Parses value and checks corresponding button
|
* Parses value and checks corresponding button
|
||||||
|
* @param value is text half-block value
|
||||||
*/
|
*/
|
||||||
private void setUpperLowerInfo(String value) {
|
private void setUpperLowerInfo(String value) {
|
||||||
String name = "";
|
String name = "";
|
||||||
@ -524,9 +524,9 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Fills a selected field with value
|
||||||
* @param fieldName is name of field to be filled in
|
* @param fieldName is name of field to be filled in
|
||||||
* @param value is new value of field
|
* @param value is new value of field
|
||||||
* Fills a selected field with value
|
|
||||||
*/
|
*/
|
||||||
private void setFieldInfo(String fieldName, String value) {
|
private void setFieldInfo(String fieldName, String value) {
|
||||||
for (JTextField field : textFields) {
|
for (JTextField field : textFields) {
|
||||||
@ -538,8 +538,8 @@ public class DetailedCellInfo extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param value is text direction value
|
|
||||||
* Parses value and checks corresponding button
|
* Parses value and checks corresponding button
|
||||||
|
* @param value is text direction value
|
||||||
*/
|
*/
|
||||||
private void setDirectionInfo(String value) {
|
private void setDirectionInfo(String value) {
|
||||||
String name = "";
|
String name = "";
|
||||||
|
|||||||
@ -32,8 +32,8 @@ public class EditorSaveManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return is tileset valid
|
|
||||||
* Checks if a tileset exists and is not empty
|
* Checks if a tileset exists and is not empty
|
||||||
|
* @return is tileset valid
|
||||||
*/
|
*/
|
||||||
public boolean validate() {
|
public boolean validate() {
|
||||||
boolean valid = editor.getImagesOfTiles() != null && editor.getImagesOfTiles().size() > 0;
|
boolean valid = editor.getImagesOfTiles() != null && editor.getImagesOfTiles().size() > 0;
|
||||||
|
|||||||
@ -23,11 +23,11 @@ public class InfoManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Decides which type of info is needed for a selected cell
|
||||||
* @param label is label to be parsed and displayed
|
* @param label is label to be parsed and displayed
|
||||||
* @param layer is name of layer on which the cell is located
|
* @param layer is name of layer on which the cell is located
|
||||||
* @param x is X value of cell
|
* @param x is X value of cell
|
||||||
* @param y is Y value of cell
|
* @param y is Y value of cell
|
||||||
* Decides which type of info is needed for a selected cell
|
|
||||||
*/
|
*/
|
||||||
protected void displayInfo(JLabel label, String layer, int x, int y) {
|
protected void displayInfo(JLabel label, String layer, int x, int y) {
|
||||||
if (info != null) {
|
if (info != null) {
|
||||||
@ -62,11 +62,11 @@ public class InfoManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Displays info regarding object cells and tile cells
|
||||||
* @param label is label to be parsed and displayed
|
* @param label is label to be parsed and displayed
|
||||||
* @param x is X value of cell
|
* @param x is X value of cell
|
||||||
* @param y is Y value of cell
|
* @param y is Y value of cell
|
||||||
* @param isObject is cell on object layer
|
* @param isObject is cell on object layer
|
||||||
* Displays info regarding object cells and tile cells
|
|
||||||
*/
|
*/
|
||||||
private void displayObjectAndTileInfo(JLabel label, int x, int y, boolean isObject) {
|
private void displayObjectAndTileInfo(JLabel label, int x, int y, boolean isObject) {
|
||||||
JLabel infoLabel = new JLabel();
|
JLabel infoLabel = new JLabel();
|
||||||
@ -176,10 +176,10 @@ public class InfoManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Displays info regarding 'physical' cells (from mapArray)
|
||||||
* @param label is label to be parsed and displayed
|
* @param label is label to be parsed and displayed
|
||||||
* @param x is X value of cell
|
* @param x is X value of cell
|
||||||
* @param y is Y value of cell
|
* @param y is Y value of cell
|
||||||
* Displays info regarding 'physical' cells (from mapArray)
|
|
||||||
*/
|
*/
|
||||||
private void displayCellInfo(JLabel label, int x, int y) {
|
private void displayCellInfo(JLabel label, int x, int y) {
|
||||||
String[] array = {"EMPTY", "BLOCK", "INTER", "TRIGGER", "MOVETO", "DOOR", "DOORTO", "CHEST"};
|
String[] array = {"EMPTY", "BLOCK", "INTER", "TRIGGER", "MOVETO", "DOOR", "DOORTO", "CHEST"};
|
||||||
@ -264,10 +264,10 @@ public class InfoManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Puts DOOR cell into correct places in map's cell matrix
|
||||||
* @param value is value of cell to ba parsed
|
* @param value is value of cell to ba parsed
|
||||||
* @param x is X value of cell
|
* @param x is X value of cell
|
||||||
* @param y is Y value of cell
|
* @param y is Y value of cell
|
||||||
* Puts DOOR cell into correct places in map's cell matrix
|
|
||||||
*/
|
*/
|
||||||
private void saveDoor(String value, int x, int y) {
|
private void saveDoor(String value, int x, int y) {
|
||||||
if (value.split(",")[0].contains("DOOR") && y == 0) {
|
if (value.split(",")[0].contains("DOOR") && y == 0) {
|
||||||
|
|||||||
@ -128,10 +128,10 @@ public class LevelEditor extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates new map and populates it's cell matrix and passes it on
|
||||||
* @param name is name of new map
|
* @param name is name of new map
|
||||||
* @param width is width of new map
|
* @param width is width of new map
|
||||||
* @param height is height of new map
|
* @param height is height of new map
|
||||||
* Creates new map and populates it's cell matrix and passes it on
|
|
||||||
*/
|
*/
|
||||||
public void createNewMap(String name, int width, int height) {
|
public void createNewMap(String name, int width, int height) {
|
||||||
TypeOfCell[][] mapArray = new TypeOfCell[width][height];
|
TypeOfCell[][] mapArray = new TypeOfCell[width][height];
|
||||||
@ -316,8 +316,8 @@ public class LevelEditor extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param message is text to be displayed
|
|
||||||
* Displays message as an error in the error field
|
* Displays message as an error in the error field
|
||||||
|
* @param message is text to be displayed
|
||||||
*/
|
*/
|
||||||
protected void displayError(String message) {
|
protected void displayError(String message) {
|
||||||
errorMessage.setText("<html><span style='color: red'>" + message + "</span></html>");
|
errorMessage.setText("<html><span style='color: red'>" + message + "</span></html>");
|
||||||
@ -325,8 +325,8 @@ public class LevelEditor extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param message is text to be displayed
|
|
||||||
* Displays message as a normal text in the error field
|
* Displays message as a normal text in the error field
|
||||||
|
* @param message is text to be displayed
|
||||||
*/
|
*/
|
||||||
protected void displayMessage(String message) {
|
protected void displayMessage(String message) {
|
||||||
errorMessage.setText(message);
|
errorMessage.setText(message);
|
||||||
|
|||||||
@ -184,10 +184,10 @@ public class MapLayersManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Sets cell a corresponding icon from cellMap dictionary
|
||||||
* @param cell is cell to ba updated
|
* @param cell is cell to ba updated
|
||||||
* @param i is cell's Y value
|
* @param i is cell's Y value
|
||||||
* @param j is cell's X value
|
* @param j is cell's X value
|
||||||
* Sets cell a corresponding icon from cellMap dictionary
|
|
||||||
*/
|
*/
|
||||||
private void setCellIcon(JLabel cell, int i, int j) {
|
private void setCellIcon(JLabel cell, int i, int j) {
|
||||||
String value;
|
String value;
|
||||||
@ -220,9 +220,9 @@ public class MapLayersManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Converts image to buffered image
|
||||||
* @param img is image to be converted
|
* @param img is image to be converted
|
||||||
* @return converted image
|
* @return converted image
|
||||||
* Converts image to buffered image
|
|
||||||
*/
|
*/
|
||||||
private BufferedImage toBufferedImage(Image img) {
|
private BufferedImage toBufferedImage(Image img) {
|
||||||
BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
|
BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
|
||||||
@ -233,10 +233,10 @@ public class MapLayersManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Converts regulat image (50x50px) to a half block (upper or lower)
|
||||||
* @param img is image to be tilified
|
* @param img is image to be tilified
|
||||||
* @param isUp is an upper block
|
* @param isUp is an upper block
|
||||||
* @return tilified image
|
* @return tilified image
|
||||||
* Converts regulat image (50x50px) to a half block (upper or lower)
|
|
||||||
*/
|
*/
|
||||||
private BufferedImage tilify(BufferedImage img, boolean isUp) {
|
private BufferedImage tilify(BufferedImage img, boolean isUp) {
|
||||||
BufferedImage image = new BufferedImage(50, 50, BufferedImage.TYPE_INT_ARGB);
|
BufferedImage image = new BufferedImage(50, 50, BufferedImage.TYPE_INT_ARGB);
|
||||||
@ -248,9 +248,9 @@ public class MapLayersManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Sets corresponding image to a door cell (and one cell above/lower)
|
||||||
* @param cell is cell to be updated
|
* @param cell is cell to be updated
|
||||||
* @param info cell text value
|
* @param info cell text value
|
||||||
* Sets corresponding image to a door cell (and one cell above/lower)
|
|
||||||
*/
|
*/
|
||||||
private void setDoorImage(JLabel cell, String[] info) {
|
private void setDoorImage(JLabel cell, String[] info) {
|
||||||
if (editor.getCellMap().get("DOOR/DOORTO") == 0) {
|
if (editor.getCellMap().get("DOOR/DOORTO") == 0) {
|
||||||
|
|||||||
@ -34,8 +34,8 @@ public class TilesetOverview extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param folder is folder with tileset images
|
|
||||||
* Displays menu all possible images to be parsed into tileset
|
* Displays menu all possible images to be parsed into tileset
|
||||||
|
* @param folder is folder with tileset images
|
||||||
*/
|
*/
|
||||||
public void listFilesForFolder(File folder) {
|
public void listFilesForFolder(File folder) {
|
||||||
activeTilesets = new LinkedList<>();
|
activeTilesets = new LinkedList<>();
|
||||||
@ -79,8 +79,8 @@ public class TilesetOverview extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name is image name
|
|
||||||
* Displays name of file with a designated checkbox
|
* Displays name of file with a designated checkbox
|
||||||
|
* @param name is image name
|
||||||
*/
|
*/
|
||||||
private void loadTileset(String name) {
|
private void loadTileset(String name) {
|
||||||
JLabel text = new JLabel(name);
|
JLabel text = new JLabel(name);
|
||||||
|
|||||||
@ -51,10 +51,10 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Finds map by name in a list of loaded maps
|
||||||
* @param nameOfMap is map name that is being searched for
|
* @param nameOfMap is map name that is being searched for
|
||||||
* @param window is reference for WindowOfFreeMove
|
* @param window is reference for WindowOfFreeMove
|
||||||
* @return found map
|
* @return found map
|
||||||
* Finds map by name in a list of loaded maps
|
|
||||||
*/
|
*/
|
||||||
public static Map findMapByName(String nameOfMap, WindowOfFreeMove window) {
|
public static Map findMapByName(String nameOfMap, WindowOfFreeMove window) {
|
||||||
LinkedList<Map> mapLinkedList = window.getMapLinkedList();
|
LinkedList<Map> mapLinkedList = window.getMapLinkedList();
|
||||||
@ -66,10 +66,10 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates map and prepares all fields, then passes map on loadMap
|
||||||
* @param name is map file name
|
* @param name is map file name
|
||||||
* @param window is reference for WindowOfFreeMove
|
* @param window is reference for WindowOfFreeMove
|
||||||
* @return loaded map
|
* @return loaded map
|
||||||
* Creates map and prepares all fields, then passes map on loadMap
|
|
||||||
*/
|
*/
|
||||||
public static Map loadMapFromFile(String name, WindowOfFreeMove window) {
|
public static Map loadMapFromFile(String name, WindowOfFreeMove window) {
|
||||||
try {
|
try {
|
||||||
@ -99,12 +99,12 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Parses line of text into corresponding cells with attributes and populates corresponding lists wit them
|
||||||
* @param map is map being loaded
|
* @param map is map being loaded
|
||||||
* @param data is line of map file to be parsed
|
* @param data is line of map file to be parsed
|
||||||
* @param size is array of map's size in cells
|
* @param size is array of map's size in cells
|
||||||
* @param y is current Y value of line being parsed
|
* @param y is current Y value of line being parsed
|
||||||
* @param window is reference for WindowOfFreeMove
|
* @param window is reference for WindowOfFreeMove
|
||||||
* Parses line of text into corresponding cells with attributes and populates corresponding lists wit them
|
|
||||||
*/
|
*/
|
||||||
public static void loadMap(Map map, String data, String[] size, int y, WindowOfFreeMove window) {
|
public static void loadMap(Map map, String data, String[] size, int y, WindowOfFreeMove window) {
|
||||||
String[] line = data.split(" ");
|
String[] line = data.split(" ");
|
||||||
@ -161,9 +161,9 @@ public class Map {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Parses MOVETO and DOORTO cells, which link different maps together
|
||||||
* @param map is map being linked
|
* @param map is map being linked
|
||||||
* @param window is reference on WindowOfFreeMove
|
* @param window is reference on WindowOfFreeMove
|
||||||
* Parses MOVETO and DOORTO cells, which link different maps together
|
|
||||||
*/
|
*/
|
||||||
public void linkMaps(Map map, WindowOfFreeMove window) {
|
public void linkMaps(Map map, WindowOfFreeMove window) {
|
||||||
try {
|
try {
|
||||||
@ -204,8 +204,8 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param moveToCell is MOVETO cell being added
|
|
||||||
* Updates map's cell matrix and adds cell to corresponding list
|
* Updates map's cell matrix and adds cell to corresponding list
|
||||||
|
* @param moveToCell is MOVETO cell being added
|
||||||
*/
|
*/
|
||||||
public void addMoveToEvent(EventMoveToCell moveToCell) {
|
public void addMoveToEvent(EventMoveToCell moveToCell) {
|
||||||
mapArray[moveToCell.getX()][moveToCell.getY()] = TypeOfCell.MOVETO;
|
mapArray[moveToCell.getX()][moveToCell.getY()] = TypeOfCell.MOVETO;
|
||||||
@ -213,8 +213,8 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param interactionCell is INTER cell being added
|
|
||||||
* Updates map's cell matrix and adds cell to corresponding list
|
* Updates map's cell matrix and adds cell to corresponding list
|
||||||
|
* @param interactionCell is INTER cell being added
|
||||||
*/
|
*/
|
||||||
public void addInteractionEvent(InteractionCell interactionCell) {
|
public void addInteractionEvent(InteractionCell interactionCell) {
|
||||||
mapArray[interactionCell.getX()][interactionCell.getY()] = TypeOfCell.EVENT;
|
mapArray[interactionCell.getX()][interactionCell.getY()] = TypeOfCell.EVENT;
|
||||||
@ -222,8 +222,8 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param triggerCell is TRIGGER cell being added
|
|
||||||
* Updates map's cell matrix and adds cell to corresponding list
|
* Updates map's cell matrix and adds cell to corresponding list
|
||||||
|
* @param triggerCell is TRIGGER cell being added
|
||||||
*/
|
*/
|
||||||
public void addInteractionEvent(TriggerCell triggerCell) {
|
public void addInteractionEvent(TriggerCell triggerCell) {
|
||||||
mapArray[triggerCell.getX()][triggerCell.getY()] = TypeOfCell.EVENT;
|
mapArray[triggerCell.getX()][triggerCell.getY()] = TypeOfCell.EVENT;
|
||||||
@ -231,8 +231,8 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param doorCell is DOOR(TO) cell being added
|
|
||||||
* Updates map's cell matrix and adds cell to corresponding list
|
* Updates map's cell matrix and adds cell to corresponding list
|
||||||
|
* @param doorCell is DOOR(TO) cell being added
|
||||||
*/
|
*/
|
||||||
public void addInteractionEvent(DoorCell doorCell) {
|
public void addInteractionEvent(DoorCell doorCell) {
|
||||||
mapArray[doorCell.getX()][doorCell.getY()] = TypeOfCell.EVENT;
|
mapArray[doorCell.getX()][doorCell.getY()] = TypeOfCell.EVENT;
|
||||||
@ -240,8 +240,8 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param chestCell is CHEST cell being added
|
|
||||||
* Updates map's cell matrix and adds cell to corresponding list
|
* Updates map's cell matrix and adds cell to corresponding list
|
||||||
|
* @param chestCell is CHEST cell being added
|
||||||
*/
|
*/
|
||||||
public void addInteractionEvent(ChestCell chestCell) {
|
public void addInteractionEvent(ChestCell chestCell) {
|
||||||
mapArray[chestCell.getX()][chestCell.getY()] = TypeOfCell.EVENT;
|
mapArray[chestCell.getX()][chestCell.getY()] = TypeOfCell.EVENT;
|
||||||
@ -489,11 +489,11 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Translates direction of sight into new coords
|
||||||
* @param x is starting X value
|
* @param x is starting X value
|
||||||
* @param y is starting Y value
|
* @param y is starting Y value
|
||||||
* @param directionSight is direction of hero's sight
|
* @param directionSight is direction of hero's sight
|
||||||
* @return array of new X & Y coordinates
|
* @return array of new X & Y coordinates
|
||||||
* Translates direction of sight into new coords
|
|
||||||
*/
|
*/
|
||||||
public int[] directionSightSwitch(int x, int y, int directionSight) {
|
public int[] directionSightSwitch(int x, int y, int directionSight) {
|
||||||
switch (directionSight) {
|
switch (directionSight) {
|
||||||
|
|||||||
@ -32,8 +32,8 @@ public class MapManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param map is map to be set
|
|
||||||
* Sets map as the one that is currently used, if that map is not present in map list, the map is added
|
* Sets map as the one that is currently used, if that map is not present in map list, the map is added
|
||||||
|
* @param map is map to be set
|
||||||
*/
|
*/
|
||||||
public void setMap(Map map) {
|
public void setMap(Map map) {
|
||||||
if (maps.contains(map)) {
|
if (maps.contains(map)) {
|
||||||
@ -131,8 +131,8 @@ public class MapManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param size is array of new sizes for canvas
|
|
||||||
* Sets canvas size based on current map
|
* Sets canvas size based on current map
|
||||||
|
* @param size is array of new sizes for canvas
|
||||||
*/
|
*/
|
||||||
public void resizeCanvas(int[] size) {
|
public void resizeCanvas(int[] size) {
|
||||||
canvas.setPreferredSize(new Dimension(
|
canvas.setPreferredSize(new Dimension(
|
||||||
|
|||||||
@ -31,8 +31,8 @@ public class LoadManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return are save files empty
|
|
||||||
* Checks if save files are empty (if there is no saved progress)
|
* Checks if save files are empty (if there is no saved progress)
|
||||||
|
* @return are save files empty
|
||||||
*/
|
*/
|
||||||
public static boolean isSaveEmpty() {
|
public static boolean isSaveEmpty() {
|
||||||
File personFile = new File("src/main/resources/save/savedGame/person.txt");
|
File personFile = new File("src/main/resources/save/savedGame/person.txt");
|
||||||
|
|||||||
@ -20,12 +20,12 @@ public class PathFinder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Finds path with A* algorithm and translates it to directions using Direction enumeration
|
||||||
* @param startX is starting X value
|
* @param startX is starting X value
|
||||||
* @param startY is starting Y value
|
* @param startY is starting Y value
|
||||||
* @param endX is ending X value
|
* @param endX is ending X value
|
||||||
* @param endY is ending Y value
|
* @param endY is ending Y value
|
||||||
* @return list of directions for NPC
|
* @return list of directions for NPC
|
||||||
* Finds path with A* algorithm and translates it to directions using Direction enumeration
|
|
||||||
*/
|
*/
|
||||||
public LinkedList<Direction> getWayWithCollision(int startX, int startY, int endX, int endY) {
|
public LinkedList<Direction> getWayWithCollision(int startX, int startY, int endX, int endY) {
|
||||||
AStar aStar = new AStar(map.getMapArray().length, map.getMapArray()[0].length, new Node(startX, startY), new Node(endX, endY));
|
AStar aStar = new AStar(map.getMapArray().length, map.getMapArray()[0].length, new Node(startX, startY), new Node(endX, endY));
|
||||||
|
|||||||
@ -19,8 +19,8 @@ public class TextParser {
|
|||||||
private String action;
|
private String action;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param text is input from player
|
|
||||||
* Separates incoming text into parts and passes them on to be parsed further
|
* Separates incoming text into parts and passes them on to be parsed further
|
||||||
|
* @param text is input from player
|
||||||
*/
|
*/
|
||||||
public void parseBattleText(String text) {
|
public void parseBattleText(String text) {
|
||||||
textToParse = text;
|
textToParse = text;
|
||||||
@ -33,8 +33,8 @@ public class TextParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param personText is name of battle person
|
|
||||||
* Finds battle person based on text input and sets it as actor of action
|
* Finds battle person based on text input and sets it as actor of action
|
||||||
|
* @param personText is name of battle person
|
||||||
*/
|
*/
|
||||||
private void parseBattlePerson(String personText) {
|
private void parseBattlePerson(String personText) {
|
||||||
switch (personText) {
|
switch (personText) {
|
||||||
@ -51,8 +51,8 @@ public class TextParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param action is name of action
|
|
||||||
* Calls corresponding action to user input
|
* Calls corresponding action to user input
|
||||||
|
* @param action is name of action
|
||||||
*/
|
*/
|
||||||
private void parseBattleAction(String action) {
|
private void parseBattleAction(String action) {
|
||||||
this.action = action;
|
this.action = action;
|
||||||
@ -87,8 +87,8 @@ public class TextParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param targetText name of battle person
|
|
||||||
* Finds battle person based on text input and sets it as target of action
|
* Finds battle person based on text input and sets it as target of action
|
||||||
|
* @param targetText name of battle person
|
||||||
*/
|
*/
|
||||||
private void parseBattleTarget(String targetText) {
|
private void parseBattleTarget(String targetText) {
|
||||||
switch (targetText) {
|
switch (targetText) {
|
||||||
|
|||||||
@ -63,8 +63,8 @@ public class MusicManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param delay is timer delay in milliseconds
|
|
||||||
* Fades music in (slowly raises volume to maxVolume)
|
* Fades music in (slowly raises volume to maxVolume)
|
||||||
|
* @param delay is timer delay in milliseconds
|
||||||
*/
|
*/
|
||||||
public void fadeIn(int delay) {
|
public void fadeIn(int delay) {
|
||||||
timerIn = new Timer(delay, actionEvent -> {
|
timerIn = new Timer(delay, actionEvent -> {
|
||||||
@ -77,8 +77,8 @@ public class MusicManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param delay is timer delay in milliseconds
|
|
||||||
* Fades music out (slowly lowers volume to 'zero')
|
* Fades music out (slowly lowers volume to 'zero')
|
||||||
|
* @param delay is timer delay in milliseconds
|
||||||
*/
|
*/
|
||||||
public void fadeOut(int delay) {
|
public void fadeOut(int delay) {
|
||||||
timerOut = new Timer(delay, actionEvent -> {
|
timerOut = new Timer(delay, actionEvent -> {
|
||||||
|
|||||||
@ -23,8 +23,8 @@ public class SoundManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param file is name of file
|
|
||||||
* Parses sound map for different entities (currently only for doors)
|
* Parses sound map for different entities (currently only for doors)
|
||||||
|
* @param file is name of file
|
||||||
*/
|
*/
|
||||||
public void loadSoundMap(String file) {
|
public void loadSoundMap(String file) {
|
||||||
try {
|
try {
|
||||||
@ -50,9 +50,9 @@ public class SoundManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Plays sound once
|
||||||
* @param name is sound name
|
* @param name is sound name
|
||||||
* @param volume is designated volume os float
|
* @param volume is designated volume os float
|
||||||
* Plays sound once
|
|
||||||
*/
|
*/
|
||||||
public void playSound(String name, float volume){
|
public void playSound(String name, float volume){
|
||||||
AudioInputStream audioIn;
|
AudioInputStream audioIn;
|
||||||
@ -73,10 +73,10 @@ public class SoundManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Plays sound repeatedly after delay
|
||||||
* @param name is sound name
|
* @param name is sound name
|
||||||
* @param delay is timer delay in milliseconds
|
* @param delay is timer delay in milliseconds
|
||||||
* @param volume is designated volume as float
|
* @param volume is designated volume as float
|
||||||
* Plays sound repeatedly after delay
|
|
||||||
*/
|
*/
|
||||||
public void playSoundRepeatedly(String name, int delay, float volume) {
|
public void playSoundRepeatedly(String name, int delay, float volume) {
|
||||||
if (this.delay == delay) {
|
if (this.delay == delay) {
|
||||||
|
|||||||
@ -123,8 +123,8 @@ public class WindowOfBattle extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name is battle file name
|
|
||||||
* Starts battle sequence - parses actors & other assets
|
* Starts battle sequence - parses actors & other assets
|
||||||
|
* @param name is battle file name
|
||||||
*/
|
*/
|
||||||
public void start(String name) {
|
public void start(String name) {
|
||||||
LinkedList<Hero> heroes = new LinkedList<>();
|
LinkedList<Hero> heroes = new LinkedList<>();
|
||||||
@ -196,8 +196,8 @@ public class WindowOfBattle extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param s is text to be displayed
|
|
||||||
* Displays text in situationText field
|
* Displays text in situationText field
|
||||||
|
* @param s is text to be displayed
|
||||||
*/
|
*/
|
||||||
public void writeToOutput(String s) {
|
public void writeToOutput(String s) {
|
||||||
Font f = new Font(Font.SERIF, Font.BOLD, 20);
|
Font f = new Font(Font.SERIF, Font.BOLD, 20);
|
||||||
@ -212,9 +212,9 @@ public class WindowOfBattle extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Styles button
|
||||||
* @param button is button to be styled
|
* @param button is button to be styled
|
||||||
* @return styled button
|
* @return styled button
|
||||||
* Styles button
|
|
||||||
*/
|
*/
|
||||||
public JButton style(JButton button) {
|
public JButton style(JButton button) {
|
||||||
Font f = new Font(Font.SERIF, Font.BOLD, 16);
|
Font f = new Font(Font.SERIF, Font.BOLD, 16);
|
||||||
@ -267,8 +267,8 @@ public class WindowOfBattle extends JPanel {
|
|||||||
private Timer timer;
|
private Timer timer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name is image name
|
|
||||||
* Adds image into list of images to be displayed & sets it as the current image
|
* Adds image into list of images to be displayed & sets it as the current image
|
||||||
|
* @param name is image name
|
||||||
*/
|
*/
|
||||||
public void addImage(String name) {
|
public void addImage(String name) {
|
||||||
try {
|
try {
|
||||||
@ -288,8 +288,8 @@ public class WindowOfBattle extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param delay is timer delay in miliseconds
|
|
||||||
* Selects random inmage from list of images to be displayed -creates flickering effect
|
* Selects random inmage from list of images to be displayed -creates flickering effect
|
||||||
|
* @param delay is timer delay in miliseconds
|
||||||
*/
|
*/
|
||||||
public void flicker(int delay) {
|
public void flicker(int delay) {
|
||||||
timer = new Timer(delay, actionEvent -> {
|
timer = new Timer(delay, actionEvent -> {
|
||||||
|
|||||||
@ -27,6 +27,7 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
public static int CANVAS_HEIGHT = 50;
|
public static int CANVAS_HEIGHT = 50;
|
||||||
public static final int WINDOW_WIDTH = 13;
|
public static final int WINDOW_WIDTH = 13;
|
||||||
public static final int WINDOW_HEIGHT = 13;
|
public static final int WINDOW_HEIGHT = 13;
|
||||||
|
public static final int REPAINT_DELAY = 20;
|
||||||
|
|
||||||
private static boolean canPersonMove;
|
private static boolean canPersonMove;
|
||||||
private static int nextMove;
|
private static int nextMove;
|
||||||
@ -181,8 +182,8 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param newGame is a reference to main class Game
|
|
||||||
* Starts the game itself - loads all needed maps, starts a new game or loads saved game and starts timer for repainting
|
* Starts the game itself - loads all needed maps, starts a new game or loads saved game and starts timer for repainting
|
||||||
|
* @param newGame is a reference to main class Game
|
||||||
*/
|
*/
|
||||||
public void start(boolean newGame) {
|
public void start(boolean newGame) {
|
||||||
centerContent();
|
centerContent();
|
||||||
@ -207,7 +208,7 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
mapManager.createMap();
|
mapManager.createMap();
|
||||||
isReadyToPaint = true;
|
isReadyToPaint = true;
|
||||||
|
|
||||||
Timer timer = new Timer(20, actionEvent -> {
|
Timer timer = new Timer(REPAINT_DELAY, actionEvent -> {
|
||||||
mapManager.getActualMap().getPerson().move();
|
mapManager.getActualMap().getPerson().move();
|
||||||
camera.moveCamera();
|
camera.moveCamera();
|
||||||
canvas.repaint();
|
canvas.repaint();
|
||||||
@ -232,8 +233,8 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name is name of battle file
|
|
||||||
* Starts new battle sequence
|
* Starts new battle sequence
|
||||||
|
* @param name is name of battle file
|
||||||
*/
|
*/
|
||||||
public void startBattle(String name) {
|
public void startBattle(String name) {
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
@ -291,9 +292,9 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Checks if a cell is being shown in window and has to be repainted
|
||||||
* @param cell is cell to be validated
|
* @param cell is cell to be validated
|
||||||
* @return is cell in view or near view
|
* @return is cell in view or near view
|
||||||
* Checks if a cell is being shown in window and has to be repainted
|
|
||||||
*/
|
*/
|
||||||
private boolean isinView(Cell cell) {
|
private boolean isinView(Cell cell) {
|
||||||
Boolean xValue = (CELL_SIZE * (cell.getX()+1) > -canvas.getLocation().x) && (CELL_SIZE * (cell.getX()-1) < (-canvas.getLocation().x + CELL_SIZE * WINDOW_WIDTH));
|
Boolean xValue = (CELL_SIZE * (cell.getX()+1) > -canvas.getLocation().x) && (CELL_SIZE * (cell.getX()-1) < (-canvas.getLocation().x + CELL_SIZE * WINDOW_WIDTH));
|
||||||
@ -302,10 +303,10 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Checks if a cell (referenced by X & Y) is being shown in window and has to be repainted
|
||||||
* @param x is X value of a cell
|
* @param x is X value of a cell
|
||||||
* @param y is Y value of a cell
|
* @param y is Y value of a cell
|
||||||
* @return is cell (referenced by X & Y) in view or near view
|
* @return is cell (referenced by X & Y) in view or near view
|
||||||
* Checks if a cell (referenced by X & Y) is being shown in window and has to be repainted
|
|
||||||
*/
|
*/
|
||||||
private boolean isinView(int x, int y) {
|
private boolean isinView(int x, int y) {
|
||||||
Boolean xValue = (CELL_SIZE * (x+1) > -canvas.getLocation().x) && (CELL_SIZE * (x-1) < (-canvas.getLocation().x + CELL_SIZE * WINDOW_WIDTH));
|
Boolean xValue = (CELL_SIZE * (x+1) > -canvas.getLocation().x) && (CELL_SIZE * (x-1) < (-canvas.getLocation().x + CELL_SIZE * WINDOW_WIDTH));
|
||||||
@ -342,10 +343,10 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Gradually changes alpha value of a displayed color
|
||||||
* @param startAlpha is starting alpha value
|
* @param startAlpha is starting alpha value
|
||||||
* @param endAlpha is ending alpha value
|
* @param endAlpha is ending alpha value
|
||||||
* @param delay is delay for timer
|
* @param delay is delay for timer
|
||||||
* Gradually changes alpha value of a displayed color
|
|
||||||
*/
|
*/
|
||||||
public void fade(int startAlpha, int endAlpha, int delay) {
|
public void fade(int startAlpha, int endAlpha, int delay) {
|
||||||
a = startAlpha;
|
a = startAlpha;
|
||||||
@ -375,8 +376,8 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param tm is time in milliseconds
|
|
||||||
* Pauses thread for a designated length of time
|
* Pauses thread for a designated length of time
|
||||||
|
* @param tm is time in milliseconds
|
||||||
*/
|
*/
|
||||||
public static void sleep(long tm) {
|
public static void sleep(long tm) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -1,164 +1,15 @@
|
|||||||
<map>
|
<map>
|
||||||
<mapName>tutorial</mapName>
|
<mapName>m1</mapName>
|
||||||
|
<events>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<mapName>m6</mapName>
|
||||||
<events>
|
<events>
|
||||||
<trigger>
|
<trigger>
|
||||||
<x>11</x>
|
<x>11</x>
|
||||||
<y>6</y>
|
<y>11</y>
|
||||||
<active>false</active>
|
<active>false</active>
|
||||||
</trigger>
|
</trigger>
|
||||||
</events>
|
</events>
|
||||||
</map>
|
</map>
|
||||||
<map>
|
|
||||||
<mapName>openspace</mapName>
|
|
||||||
<events>
|
|
||||||
<trigger>
|
|
||||||
<x>6</x>
|
|
||||||
<y>4</y>
|
|
||||||
<active>true</active>
|
|
||||||
</trigger>
|
|
||||||
<trigger>
|
|
||||||
<x>14</x>
|
|
||||||
<y>16</y>
|
|
||||||
<active>false</active>
|
|
||||||
</trigger>
|
|
||||||
<chest>
|
|
||||||
<x>1</x>
|
|
||||||
<y>2</y>
|
|
||||||
<active>true</active>
|
|
||||||
</chest>
|
|
||||||
<chest>
|
|
||||||
<x>15</x>
|
|
||||||
<y>7</y>
|
|
||||||
<active>true</active>
|
|
||||||
</chest>
|
|
||||||
<door>
|
|
||||||
<x>8</x>
|
|
||||||
<y>4</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>2</x>
|
|
||||||
<y>6</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>6</x>
|
|
||||||
<y>6</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>16</x>
|
|
||||||
<y>10</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>8</x>
|
|
||||||
<y>13</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
</events>
|
|
||||||
</map>
|
|
||||||
<map>
|
|
||||||
<mapName>office</mapName>
|
|
||||||
<events>
|
|
||||||
<trigger>
|
|
||||||
<x>4</x>
|
|
||||||
<y>2</y>
|
|
||||||
<active>false</active>
|
|
||||||
</trigger>
|
|
||||||
<chest>
|
|
||||||
<x>1</x>
|
|
||||||
<y>9</y>
|
|
||||||
<active>true</active>
|
|
||||||
</chest>
|
|
||||||
<door>
|
|
||||||
<x>12</x>
|
|
||||||
<y>1</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>17</x>
|
|
||||||
<y>1</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>7</x>
|
|
||||||
<y>12</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>12</x>
|
|
||||||
<y>12</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>4</x>
|
|
||||||
<y>1</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>2</x>
|
|
||||||
<y>12</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>true</open>
|
|
||||||
</dooŕ>
|
|
||||||
<door>
|
|
||||||
<x>17</x>
|
|
||||||
<y>12</y>
|
|
||||||
<locked>true</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
</events>
|
|
||||||
</map>
|
|
||||||
<map>
|
|
||||||
<mapName>boss</mapName>
|
|
||||||
<events>
|
|
||||||
<trigger>
|
|
||||||
<x>4</x>
|
|
||||||
<y>18</y>
|
|
||||||
<active>true</active>
|
|
||||||
</trigger>
|
|
||||||
<door>
|
|
||||||
<x>4</x>
|
|
||||||
<y>19</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>false</open>
|
|
||||||
</dooŕ>
|
|
||||||
</events>
|
|
||||||
</map>
|
|
||||||
<map>
|
|
||||||
<mapName>treasure</mapName>
|
|
||||||
<events>
|
|
||||||
<trigger>
|
|
||||||
<x>6</x>
|
|
||||||
<y>1</y>
|
|
||||||
<active>true</active>
|
|
||||||
</trigger>
|
|
||||||
</events>
|
|
||||||
</map>
|
|
||||||
<map>
|
|
||||||
<mapName>storageroom</mapName>
|
|
||||||
<events>
|
|
||||||
<trigger>
|
|
||||||
<x>6</x>
|
|
||||||
<y>2</y>
|
|
||||||
<active>true</active>
|
|
||||||
</trigger>
|
|
||||||
<door>
|
|
||||||
<x>6</x>
|
|
||||||
<y>1</y>
|
|
||||||
<locked>false</locked>
|
|
||||||
<open>true</open>
|
|
||||||
</dooŕ>
|
|
||||||
</events>
|
|
||||||
</map>
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<location>
|
<location>
|
||||||
<map>storageroom</map>
|
<map>m1</map>
|
||||||
<x>6</x>
|
<x>3</x>
|
||||||
<y>2</y>
|
<y>7</y>
|
||||||
<direction>0</direction>
|
<direction>2</direction>
|
||||||
</location>
|
</location>
|
||||||
@ -78,7 +78,7 @@ public class WindowOfFreeMoveTest {
|
|||||||
|
|
||||||
//Act
|
//Act
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(20, actionEvent -> {
|
||||||
if (!person.getIsMoving()) {
|
if (!person.getIsMoving()) {
|
||||||
if (i[0] == directions.length) {
|
if (i[0] == directions.length) {
|
||||||
stopTimer();
|
stopTimer();
|
||||||
@ -114,10 +114,11 @@ public class WindowOfFreeMoveTest {
|
|||||||
public void moveToMap_CharacterMovesToDifferentMap_CharacterIsOnCorrectMap() {
|
public void moveToMap_CharacterMovesToDifferentMap_CharacterIsOnCorrectMap() {
|
||||||
//Arrange
|
//Arrange
|
||||||
int[] directions = {KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN};
|
int[] directions = {KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN};
|
||||||
|
freeMove.revalidate();
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(WindowOfFreeMove.REPAINT_DELAY, actionEvent -> {
|
||||||
if (!person.getIsMoving()) {
|
if (!person.getIsMoving()) {
|
||||||
if (i[0] == directions.length) {
|
if (i[0] == directions.length) {
|
||||||
stopTimer();
|
stopTimer();
|
||||||
@ -141,7 +142,7 @@ public class WindowOfFreeMoveTest {
|
|||||||
|
|
||||||
//Act
|
//Act
|
||||||
final boolean[] flag = {false};
|
final boolean[] flag = {false};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(WindowOfFreeMove.REPAINT_DELAY, actionEvent -> {
|
||||||
if (!freeMove.getMapManager().getActualMap().getPerson().getIsMoving() && WindowOfFreeMove.canPersonMove()) {
|
if (!freeMove.getMapManager().getActualMap().getPerson().getIsMoving() && WindowOfFreeMove.canPersonMove()) {
|
||||||
if (!flag[0]) {
|
if (!flag[0]) {
|
||||||
freeMove.getMapManager().getActualMap().getPerson().setDirectionMove(KEY_DOWN);
|
freeMove.getMapManager().getActualMap().getPerson().setDirectionMove(KEY_DOWN);
|
||||||
@ -169,10 +170,11 @@ public class WindowOfFreeMoveTest {
|
|||||||
public void startEvent_CharacterEntersEventThenGoesThroughEventThenExitsEvent_CorrectCharacterResponses() {
|
public void startEvent_CharacterEntersEventThenGoesThroughEventThenExitsEvent_CorrectCharacterResponses() {
|
||||||
//Arrange
|
//Arrange
|
||||||
int[] directions = {KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP};
|
int[] directions = {KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP, KEY_UP};
|
||||||
|
freeMove.revalidate();
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(WindowOfFreeMove.REPAINT_DELAY, actionEvent -> {
|
||||||
if (!person.getIsMoving()) {
|
if (!person.getIsMoving()) {
|
||||||
if (i[0] == directions.length) {
|
if (i[0] == directions.length) {
|
||||||
stopTimer();
|
stopTimer();
|
||||||
@ -223,7 +225,7 @@ public class WindowOfFreeMoveTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final boolean[] flag = {false};
|
final boolean[] flag = {false};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(WindowOfFreeMove.REPAINT_DELAY, actionEvent -> {
|
||||||
if (!person.getIsMoving()) {
|
if (!person.getIsMoving()) {
|
||||||
if (!flag[0]) {
|
if (!flag[0]) {
|
||||||
person.setDirectionMove(KEY_LEFT);
|
person.setDirectionMove(KEY_LEFT);
|
||||||
@ -252,6 +254,7 @@ public class WindowOfFreeMoveTest {
|
|||||||
public void saveGame_CharacterInteractsWithTriggerCellThenMovesToDifferentMapThenGameIsSaved_CorrectlySavedProgress() {
|
public void saveGame_CharacterInteractsWithTriggerCellThenMovesToDifferentMapThenGameIsSaved_CorrectlySavedProgress() {
|
||||||
//Assert
|
//Assert
|
||||||
SaveManager saveManager;
|
SaveManager saveManager;
|
||||||
|
freeMove.revalidate();
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
startEvent_CharacterEntersEventThenGoesThroughEventThenExitsEvent_CorrectCharacterResponses();
|
startEvent_CharacterEntersEventThenGoesThroughEventThenExitsEvent_CorrectCharacterResponses();
|
||||||
@ -259,7 +262,7 @@ public class WindowOfFreeMoveTest {
|
|||||||
int[] directions = {KEY_RIGHT, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN};
|
int[] directions = {KEY_RIGHT, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN, KEY_DOWN};
|
||||||
|
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(WindowOfFreeMove.REPAINT_DELAY, actionEvent -> {
|
||||||
if (!person.getIsMoving()) {
|
if (!person.getIsMoving()) {
|
||||||
if (i[0] == directions.length) {
|
if (i[0] == directions.length) {
|
||||||
stopTimer();
|
stopTimer();
|
||||||
@ -279,7 +282,7 @@ public class WindowOfFreeMoveTest {
|
|||||||
moveToMap_CharacterMovesToDifferentMap_CharacterIsOnCorrectMap();
|
moveToMap_CharacterMovesToDifferentMap_CharacterIsOnCorrectMap();
|
||||||
|
|
||||||
final boolean[] flag = {false};
|
final boolean[] flag = {false};
|
||||||
timer = new Timer(10, actionEvent -> {
|
timer = new Timer(WindowOfFreeMove.REPAINT_DELAY, actionEvent -> {
|
||||||
if (!freeMove.getMapManager().getActualMap().getPerson().getIsMoving() && WindowOfFreeMove.canPersonMove()) {
|
if (!freeMove.getMapManager().getActualMap().getPerson().getIsMoving() && WindowOfFreeMove.canPersonMove()) {
|
||||||
if (!flag[0]) {
|
if (!flag[0]) {
|
||||||
freeMove.getMapManager().getActualMap().getPerson().setDirectionMove(KEY_DOWN);
|
freeMove.getMapManager().getActualMap().getPerson().setDirectionMove(KEY_DOWN);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user