added trigger event cells
This commit is contained in:
parent
48c17f5c92
commit
3af9f48386
@ -1,9 +1,9 @@
|
|||||||
package ruscz.game.gameOfProd.Cells;
|
package ruscz.game.gameOfProd.Cells;
|
||||||
|
|
||||||
import ruscz.game.gameOfProd.Cells.Cell;
|
|
||||||
import ruscz.game.gameOfProd.Dialog.Dialog;
|
import ruscz.game.gameOfProd.Dialog.Dialog;
|
||||||
import ruscz.game.gameOfProd.Image.ImageCell;
|
import ruscz.game.gameOfProd.Image.ImageCell;
|
||||||
import ruscz.game.gameOfProd.Image.ImageDialog;
|
import ruscz.game.gameOfProd.Image.ImageDialog;
|
||||||
|
import ruscz.game.gameOfProd.Map.Map;
|
||||||
import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -77,4 +77,8 @@ public class InteractionCell extends Cell {
|
|||||||
g.drawImage(imageCell.getImagesOfTiles().get(334), getX() * WindowOfFreeMove.CELL_SIZE,
|
g.drawImage(imageCell.getImagesOfTiles().get(334), getX() * WindowOfFreeMove.CELL_SIZE,
|
||||||
getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null);
|
getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ImageCell getImageCell() {
|
||||||
|
return imageCell;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,15 +88,18 @@ public class Person extends Cell {
|
|||||||
else if (isEventInFront(x,y,directionSight) && isInEvent) {
|
else if (isEventInFront(x,y,directionSight) && isInEvent) {
|
||||||
map.findInteractionByXY(x, y, directionSight).readNextLine();
|
map.findInteractionByXY(x, y, directionSight).readNextLine();
|
||||||
}
|
}
|
||||||
|
else if (map.isActiveTriggerCell(x,y) && isInEvent) {
|
||||||
|
map.findTriggerByXY(x,y).readNextLine();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (directionMove != 69) {
|
if (directionMove != 69) {
|
||||||
if (directionMove != 0 && !map.isBusyCell(x, y) && !map.isCellEvent(x, y)) {
|
if (directionMove != 0 && !map.isBusyCell(x, y) && !map.isInteractionCell(x, y)) {
|
||||||
directionMoveLast = directionMove;
|
directionMoveLast = directionMove;
|
||||||
isMoving = true;
|
isMoving = true;
|
||||||
} else if (directionMove != 0 && map.isBusyCell(x, y)) {
|
} else if (directionMove != 0 && map.isBusyCell(x, y)) {
|
||||||
directionMoveLast = 0;
|
directionMoveLast = 0;
|
||||||
} else if (directionMove != 0 && map.isCellEvent(x, y)) {
|
} else if (directionMove != 0 && map.isInteractionCell(x, y)) {
|
||||||
directionMoveLast = 0;
|
directionMoveLast = 0;
|
||||||
}
|
}
|
||||||
if (map.isCellMoveTo(x, y)) {
|
if (map.isCellMoveTo(x, y)) {
|
||||||
@ -106,13 +109,19 @@ public class Person extends Cell {
|
|||||||
map.findEventByXY(x, y).moveToMap();
|
map.findEventByXY(x, y).moveToMap();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!map.isBusyCell(x, y) && !map.isCellEvent(x, y)) {
|
if (!map.isBusyCell(x, y) && !map.isInteractionCell(x, y)) {
|
||||||
set(x, y);
|
set(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
directionMove = 0;
|
directionMove = 0;
|
||||||
|
|
||||||
|
if (map.isActiveTriggerCell(x,y) && !isInEvent) {
|
||||||
|
isInEvent = true;
|
||||||
|
WindowOfFreeMove.setNextMove(WindowOfFreeMove.KEY_EVENT);
|
||||||
|
map.findTriggerByXY(x,y).startEvent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +140,7 @@ public class Person extends Cell {
|
|||||||
y++;
|
y++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return map.isCellEvent(x, y);
|
return map.isInteractionCell(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stopPerson(){
|
public void stopPerson(){
|
||||||
|
|||||||
33
src/main/java/ruscz/game/gameOfProd/Cells/TriggerCell.java
Normal file
33
src/main/java/ruscz/game/gameOfProd/Cells/TriggerCell.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package ruscz.game.gameOfProd.Cells;
|
||||||
|
|
||||||
|
import ruscz.game.gameOfProd.Dialog.Dialog;
|
||||||
|
import ruscz.game.gameOfProd.Image.ImageCell;
|
||||||
|
import ruscz.game.gameOfProd.Windows.WindowOfFreeMove;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class TriggerCell extends InteractionCell {
|
||||||
|
private boolean isActive;
|
||||||
|
|
||||||
|
public TriggerCell(int x, int y, String message, Dialog dialog, ImageCell imageCell) {
|
||||||
|
super(x, y, message, dialog, imageCell);
|
||||||
|
this.isActive = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endEvent() {
|
||||||
|
super.endEvent();
|
||||||
|
this.isActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paint(Graphics2D g) {
|
||||||
|
super.paint(g);
|
||||||
|
g.drawImage(super.getImageCell().getImagesOfTiles().get(147), getX() * WindowOfFreeMove.CELL_SIZE,
|
||||||
|
getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getActive() { return isActive; }
|
||||||
|
|
||||||
|
public void setActive(boolean isActive) { this.isActive = isActive; }
|
||||||
|
}
|
||||||
@ -12,7 +12,8 @@ public class Map {
|
|||||||
private Person person;
|
private Person person;
|
||||||
private LinkedList<EventMoveToCell> moveToCells;
|
private LinkedList<EventMoveToCell> moveToCells;
|
||||||
private LinkedList<Block> block;
|
private LinkedList<Block> block;
|
||||||
private LinkedList<InteractionCell> eventCells;
|
private LinkedList<InteractionCell> interactionCells;
|
||||||
|
private LinkedList<TriggerCell> triggerCells;
|
||||||
private boolean isBlocked;
|
private boolean isBlocked;
|
||||||
private int idExit;
|
private int idExit;
|
||||||
private ImageCell imageCell;
|
private ImageCell imageCell;
|
||||||
@ -22,7 +23,8 @@ public class Map {
|
|||||||
idExit = 0;
|
idExit = 0;
|
||||||
mapArray = new TypeOfCell[height][width];
|
mapArray = new TypeOfCell[height][width];
|
||||||
moveToCells = new LinkedList<EventMoveToCell>();
|
moveToCells = new LinkedList<EventMoveToCell>();
|
||||||
eventCells = new LinkedList<InteractionCell>();
|
interactionCells = new LinkedList<InteractionCell>();
|
||||||
|
triggerCells = new LinkedList<TriggerCell>();
|
||||||
block = new LinkedList<Block>();
|
block = new LinkedList<Block>();
|
||||||
isBlocked = false;
|
isBlocked = false;
|
||||||
imageCell = new ImageCell();
|
imageCell = new ImageCell();
|
||||||
@ -50,7 +52,8 @@ public class Map {
|
|||||||
idExit = 0;
|
idExit = 0;
|
||||||
moveToCells = new LinkedList<EventMoveToCell>();
|
moveToCells = new LinkedList<EventMoveToCell>();
|
||||||
block = new LinkedList<Block>();
|
block = new LinkedList<Block>();
|
||||||
eventCells = new LinkedList<InteractionCell>();
|
interactionCells = new LinkedList<InteractionCell>();
|
||||||
|
triggerCells = new LinkedList<TriggerCell>();
|
||||||
mapArray = new TypeOfCell[height][width];
|
mapArray = new TypeOfCell[height][width];
|
||||||
this.isBlocked = isBlocked;
|
this.isBlocked = isBlocked;
|
||||||
imageCell = new ImageCell();
|
imageCell = new ImageCell();
|
||||||
@ -84,7 +87,12 @@ public class Map {
|
|||||||
|
|
||||||
public void addInteractionEvent(InteractionCell interactionCell) {
|
public void addInteractionEvent(InteractionCell interactionCell) {
|
||||||
mapArray[interactionCell.getX()][interactionCell.getY()] = TypeOfCell.EVENT;
|
mapArray[interactionCell.getX()][interactionCell.getY()] = TypeOfCell.EVENT;
|
||||||
eventCells.add(interactionCell);
|
interactionCells.add(interactionCell);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addInteractionEvent(TriggerCell triggerCell) {
|
||||||
|
mapArray[triggerCell.getX()][triggerCell.getY()] = TypeOfCell.EVENT;
|
||||||
|
triggerCells.add(triggerCell);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
@ -112,7 +120,7 @@ public class Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LinkedList<InteractionCell> getInteractionEventCells() {
|
public LinkedList<InteractionCell> getInteractionEventCells() {
|
||||||
return eventCells;
|
return interactionCells;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIdExit(int id) {
|
public void setIdExit(int id) {
|
||||||
@ -197,13 +205,20 @@ public class Map {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCellEvent(int x, int y) {
|
public boolean isInteractionCell(int x, int y) {
|
||||||
for (InteractionCell cell : eventCells)
|
for (InteractionCell cell : interactionCells)
|
||||||
if (x == cell.getX() && y == cell.getY() && cell.getClass().getName().equals("ruscz.game.gameOfProd.Cells.InteractionCell"))
|
if (x == cell.getX() && y == cell.getY() && cell.getClass().getName().equals("ruscz.game.gameOfProd.Cells.InteractionCell"))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isActiveTriggerCell(int x, int y) {
|
||||||
|
for (TriggerCell cell : triggerCells)
|
||||||
|
if (x == cell.getX() && y == cell.getY() && cell.getClass().getName().equals("ruscz.game.gameOfProd.Cells.TriggerCell") && cell.getActive())
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public EventMoveToCell findEventByXY(int x, int y) {
|
public EventMoveToCell findEventByXY(int x, int y) {
|
||||||
for (EventMoveToCell cell : moveToCells)
|
for (EventMoveToCell cell : moveToCells)
|
||||||
if (x == cell.getX() && y == cell.getY())
|
if (x == cell.getX() && y == cell.getY())
|
||||||
@ -226,9 +241,16 @@ public class Map {
|
|||||||
y++;
|
y++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (InteractionCell cell : eventCells)
|
for (InteractionCell cell : interactionCells)
|
||||||
if (x == cell.getX() && y == cell.getY())
|
if (x == cell.getX() && y == cell.getY())
|
||||||
return cell;
|
return cell;
|
||||||
return eventCells.getFirst();
|
return interactionCells.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TriggerCell findTriggerByXY(int x, int y) {
|
||||||
|
for (TriggerCell cell : triggerCells)
|
||||||
|
if (x == cell.getX() && y == cell.getY())
|
||||||
|
return cell;
|
||||||
|
return triggerCells.getFirst();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package ruscz.game.gameOfProd.Windows;
|
|||||||
import ruscz.game.gameOfProd.Cells.Cell;
|
import ruscz.game.gameOfProd.Cells.Cell;
|
||||||
import ruscz.game.gameOfProd.Cells.EventMoveToCell;
|
import ruscz.game.gameOfProd.Cells.EventMoveToCell;
|
||||||
import ruscz.game.gameOfProd.Cells.InteractionCell;
|
import ruscz.game.gameOfProd.Cells.InteractionCell;
|
||||||
|
import ruscz.game.gameOfProd.Cells.TriggerCell;
|
||||||
import ruscz.game.gameOfProd.Dialog.Dialog;
|
import ruscz.game.gameOfProd.Dialog.Dialog;
|
||||||
import ruscz.game.gameOfProd.Dialog.DialogBar;
|
import ruscz.game.gameOfProd.Dialog.DialogBar;
|
||||||
import ruscz.game.gameOfProd.Map.Map;
|
import ruscz.game.gameOfProd.Map.Map;
|
||||||
@ -55,6 +56,8 @@ public class WindowOfFreeMove extends JFrame {
|
|||||||
this.map.createMap();
|
this.map.createMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setNextMove(int nextMove) { WindowOfFreeMove.nextMove = nextMove; }
|
||||||
|
|
||||||
public WindowOfFreeMove() {
|
public WindowOfFreeMove() {
|
||||||
isReadyToPaint = false;
|
isReadyToPaint = false;
|
||||||
canPersonMove = true;
|
canPersonMove = true;
|
||||||
@ -153,6 +156,7 @@ public class WindowOfFreeMove extends JFrame {
|
|||||||
m1.addMoveToEvent(new EventMoveToCell(4, 3, 8, 1, m4, this));
|
m1.addMoveToEvent(new EventMoveToCell(4, 3, 8, 1, m4, this));
|
||||||
m1.addInteractionEvent(new InteractionCell(3,5,"first-dialog", new Dialog(dialogBar), m1.getImageCell()));
|
m1.addInteractionEvent(new InteractionCell(3,5,"first-dialog", new Dialog(dialogBar), m1.getImageCell()));
|
||||||
m1.addInteractionEvent(new InteractionCell(5, 5, "dialog-test", new Dialog(dialogBar), m1.getImageCell()));
|
m1.addInteractionEvent(new InteractionCell(5, 5, "dialog-test", new Dialog(dialogBar), m1.getImageCell()));
|
||||||
|
m1.addInteractionEvent(new TriggerCell(7,5,"second-dialog", new Dialog(dialogBar), m1.getImageCell()));
|
||||||
|
|
||||||
m2.addMoveToEvent(new EventMoveToCell(2, 1, 8, 8, m3, this));
|
m2.addMoveToEvent(new EventMoveToCell(2, 1, 8, 8, m3, this));
|
||||||
m2.addMoveToEvent(new EventMoveToCell(1, 3, 8, 1, m1, this));
|
m2.addMoveToEvent(new EventMoveToCell(1, 3, 8, 1, m1, this));
|
||||||
|
|||||||
7
src/main/resources/second-dialog.txt
Normal file
7
src/main/resources/second-dialog.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Cop: Turn around!
|
||||||
|
Me: every now and then I get a little bit lonely,
|
||||||
|
and you're never comming 'round
|
||||||
|
Cop: Turn around!
|
||||||
|
Me: every now and then...
|
||||||
|
*gets tazed*
|
||||||
|
<end>
|
||||||
Loading…
x
Reference in New Issue
Block a user