Compare commits
2 Commits
2e73a012d1
...
825b084a68
| Author | SHA1 | Date | |
|---|---|---|---|
|
825b084a68
|
|||
|
1d6f53a70e
|
@@ -25,9 +25,9 @@
|
|||||||
12 12 12 12 12 12 12 12 18 41 10 41 41 10 41 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 31 26 30 11 17 12 12 12 12 12 12 12 12 12 12
|
12 12 12 12 12 12 12 12 18 41 10 41 41 10 41 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 31 26 30 11 17 12 12 12 12 12 12 12 12 12 12
|
||||||
12 12 12 12 12 13 12 22 21 41 10 41 41 10 10 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 31 26 30 10 17 12 12 12 13 12 12 12 12 12 12
|
12 12 12 12 12 13 12 22 21 41 10 41 41 10 10 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 31 26 30 10 17 12 12 12 13 12 12 12 12 12 12
|
||||||
12 12 12 12 12 12 12 18 41 41 10 41 41 41 10 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 31 26 30 10 17 12 12 12 12 12 12 12 12 12 12
|
12 12 12 12 12 12 12 18 41 41 10 41 41 41 10 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 31 26 30 10 17 12 12 12 12 12 12 12 12 12 12
|
||||||
12 12 12 13 12 12 12 18 41 41 10 41 41 41 10 41 41 41 41 41 41 41 31 26 30 41 41 10 41 41 41 41 41 41 41 31 26 30 10 17 12 13 12 12 12 12 12 12 12 12
|
12 12 12 13 12 12 12 18 41 41 10 41 41 41 10 41 41 41 41 41 41 41 31 26 30 10 10 10 41 41 41 41 41 41 41 31 26 30 10 17 12 13 12 12 12 12 12 12 12 12
|
||||||
12 12 12 12 12 12 12 18 41 41 10 41 41 41 10 41 41 41 41 41 41 41 31 26 30 41 41 41 41 41 10 41 41 41 41 31 26 30 10 17 12 12 12 12 12 12 12 12 12 12
|
12 12 12 12 12 12 12 18 41 41 10 41 41 41 10 41 41 41 41 41 41 41 31 26 30 41 41 10 41 41 10 41 41 41 41 31 26 30 10 17 12 12 12 12 12 12 12 12 12 12
|
||||||
12 12 12 12 12 12 13 18 41 41 10 10 10 10 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 10 41 41 41 41 37 28 38 10 17 12 12 12 12 13 12 12 12 12 12
|
12 12 12 12 12 12 13 18 41 41 10 10 10 10 10 10 41 41 41 41 41 41 31 26 30 41 41 10 10 10 10 41 41 41 41 37 28 38 10 17 12 12 12 12 13 12 12 12 12 12
|
||||||
12 12 12 12 12 12 12 18 41 41 11 10 10 10 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 41 10 41 14 25 12 12 13 12 12 12 12 12 12 12
|
12 12 12 12 12 12 12 18 41 41 11 10 10 10 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 41 10 41 14 25 12 12 13 12 12 12 12 12 12 12
|
||||||
12 12 12 12 12 12 12 24 16 41 10 10 10 10 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 10 10 10 17 12 12 12 12 12 12 12 12 12 12 12
|
12 12 12 12 12 12 12 24 16 41 10 10 10 10 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 10 10 10 17 12 12 12 12 12 12 12 12 12 12 12
|
||||||
12 12 12 12 12 13 12 12 18 41 10 10 10 11 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 10 10 10 17 12 12 12 12 12 12 12 13 12 12 12
|
12 12 12 12 12 13 12 12 18 41 10 10 10 11 10 10 41 41 41 41 41 41 31 26 30 41 41 41 41 41 41 41 41 41 41 10 10 10 17 12 12 12 12 12 12 12 13 12 12 12
|
||||||
|
|||||||
@@ -344,13 +344,13 @@ public class UI {
|
|||||||
x = getCenteredX(text);
|
x = getCenteredX(text);
|
||||||
y += panel.tileSize*4;
|
y += panel.tileSize*4;
|
||||||
graphics2d.drawString(text, x, y);
|
graphics2d.drawString(text, x, y);
|
||||||
if(commandNum == 0) graphics2d.drawString(">", x-panel.tileSize, y);
|
if(commandNum == 0) graphics2d.drawString(">", x-panel.tileSize, y);
|
||||||
|
|
||||||
text = "Return to title";
|
text = "Return to title";
|
||||||
x = getCenteredX(text);
|
x = getCenteredX(text);
|
||||||
y += 55;
|
y += 55;
|
||||||
graphics2d.drawString(text, x, y);
|
graphics2d.drawString(text, x, y);
|
||||||
if(commandNum == 1) graphics2d.drawString(">", x-panel.tileSize, y);
|
if(commandNum == 1) graphics2d.drawString(">", x-panel.tileSize, y);
|
||||||
}
|
}
|
||||||
private void drawTransitionScreen() {
|
private void drawTransitionScreen() {
|
||||||
transCounter++;
|
transCounter++;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ public enum EntityType {
|
|||||||
NPC,
|
NPC,
|
||||||
MONSTER,
|
MONSTER,
|
||||||
ITEM,
|
ITEM,
|
||||||
WORLD,
|
OBSTACLE,
|
||||||
PICKUP,
|
PICKUP,
|
||||||
PROJECTILE,
|
PROJECTILE,
|
||||||
WEAPON,
|
WEAPON,
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import de.miaurizius.jgame2d.entity.item.*;
|
|||||||
import de.miaurizius.jgame2d.entity.npc.MerchantNPC;
|
import de.miaurizius.jgame2d.entity.npc.MerchantNPC;
|
||||||
import de.miaurizius.jgame2d.entity.npc.OldManNPC;
|
import de.miaurizius.jgame2d.entity.npc.OldManNPC;
|
||||||
import de.miaurizius.jgame2d.entity.monster.GreenSlimeMON;
|
import de.miaurizius.jgame2d.entity.monster.GreenSlimeMON;
|
||||||
|
import de.miaurizius.jgame2d.entity.obstacle.ChestObj;
|
||||||
|
import de.miaurizius.jgame2d.entity.obstacle.DoorObj;
|
||||||
import de.miaurizius.jgame2d.tile.interactive.DryTreeTI;
|
import de.miaurizius.jgame2d.tile.interactive.DryTreeTI;
|
||||||
|
|
||||||
public class AssetSetter {
|
public class AssetSetter {
|
||||||
@@ -18,29 +20,24 @@ public class AssetSetter {
|
|||||||
|
|
||||||
public void setObject() {
|
public void setObject() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i] = new HeartObj(panel);
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*25;
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*23;
|
|
||||||
i++;
|
|
||||||
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i] = new CoinObj(panel);
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*21;
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*19;
|
|
||||||
i++;
|
|
||||||
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i] = new AxeObj(panel);
|
panel.obj[Map.OVERWORLD.getIndex()][i] = new AxeObj(panel);
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*33;
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*33;
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*21;
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*21;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i] = new IronShieldObj(panel);
|
panel.obj[Map.OVERWORLD.getIndex()][i] = new DoorObj(panel);
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*35;
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*14;
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*21;
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*28;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i] = new PotionObj(panel);
|
panel.obj[Map.OVERWORLD.getIndex()][i] = new DoorObj(panel);
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*22;
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*12;
|
||||||
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*27;
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*12;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
panel.obj[Map.OVERWORLD.getIndex()][i] = new ChestObj(panel, new KeyObj(panel));
|
||||||
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldX = panel.tileSize*30;
|
||||||
|
panel.obj[Map.OVERWORLD.getIndex()][i].worldY = panel.tileSize*28;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ public class KeyHandler implements KeyListener {
|
|||||||
}
|
}
|
||||||
if(panel.ui.commandNum == 1) {
|
if(panel.ui.commandNum == 1) {
|
||||||
panel.gameState = GameState.TITLE;
|
panel.gameState = GameState.TITLE;
|
||||||
|
panel.ui.commandNum = 0;
|
||||||
panel.restart();
|
panel.restart();
|
||||||
panel.stopMusic();
|
panel.stopMusic();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,16 +41,19 @@ public class Entity {
|
|||||||
public boolean hpBarOn;
|
public boolean hpBarOn;
|
||||||
public boolean consumable;
|
public boolean consumable;
|
||||||
public boolean onPath;
|
public boolean onPath;
|
||||||
|
public boolean knockback;
|
||||||
|
|
||||||
// COUNTER
|
// COUNTER
|
||||||
public int spriteCounter;
|
public int spriteCount;
|
||||||
public int actionLock;
|
public int actionLock;
|
||||||
public int invincibleCount;
|
public int invincibleCount;
|
||||||
int dyingCount;
|
int dyingCount;
|
||||||
int hpBarCounter;
|
int hpBarCount;
|
||||||
|
int knockbackCount;
|
||||||
|
|
||||||
// CHARACTER ATTRIBUTES
|
// CHARACTER ATTRIBUTES
|
||||||
public EntityType type;
|
public EntityType type;
|
||||||
|
public int defaultSpeed;
|
||||||
public String name;
|
public String name;
|
||||||
public int speed;
|
public int speed;
|
||||||
public int maxLife;
|
public int maxLife;
|
||||||
@@ -79,6 +82,7 @@ public class Entity {
|
|||||||
public int useCost;
|
public int useCost;
|
||||||
public int value;
|
public int value;
|
||||||
public int price;
|
public int price;
|
||||||
|
public int knockbackVal;
|
||||||
|
|
||||||
public Entity(GamePanel panel) {
|
public Entity(GamePanel panel) {
|
||||||
this.panel = panel;
|
this.panel = panel;
|
||||||
@@ -86,24 +90,48 @@ public class Entity {
|
|||||||
|
|
||||||
// DEFAULT
|
// DEFAULT
|
||||||
public void update() {
|
public void update() {
|
||||||
setAction();
|
if(knockback) {
|
||||||
checkCollision();
|
checkCollision();
|
||||||
|
if(collisionOn) {
|
||||||
|
knockbackCount = 0;
|
||||||
|
knockback = false;
|
||||||
|
speed = defaultSpeed;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(!collisionOn) {
|
switch(panel.player.direction) {
|
||||||
switch (direction) {
|
|
||||||
case UP -> worldY -= speed;
|
case UP -> worldY -= speed;
|
||||||
case DOWN -> worldY += speed;
|
case DOWN -> worldY += speed;
|
||||||
case LEFT ->worldX -= speed;
|
case LEFT ->worldX -= speed;
|
||||||
case RIGHT -> worldX += speed;
|
case RIGHT -> worldX += speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
knockbackCount++;
|
||||||
|
if(knockbackCount != 10) return;
|
||||||
|
|
||||||
|
knockback = false;
|
||||||
|
knockbackCount = 0;
|
||||||
|
speed = defaultSpeed;
|
||||||
|
} else {
|
||||||
|
setAction();
|
||||||
|
checkCollision();
|
||||||
|
|
||||||
|
if(!collisionOn) {
|
||||||
|
switch (direction) {
|
||||||
|
case UP -> worldY -= speed;
|
||||||
|
case DOWN -> worldY += speed;
|
||||||
|
case LEFT ->worldX -= speed;
|
||||||
|
case RIGHT -> worldX += speed;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spriteCounter++;
|
spriteCount++;
|
||||||
if(spriteCounter > 24) {
|
if(spriteCount > 24) {
|
||||||
if(spriteNum == 1) spriteNum = 2;
|
if(spriteNum == 1) spriteNum = 2;
|
||||||
else if(spriteNum == 2) spriteNum = 1;
|
else if(spriteNum == 2) spriteNum = 1;
|
||||||
else spriteNum = 0;
|
else spriteNum = 0;
|
||||||
spriteCounter = 0;
|
spriteCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// INVINCIBLE COUNTER
|
// INVINCIBLE COUNTER
|
||||||
@@ -132,9 +160,9 @@ public class Entity {
|
|||||||
graphics2d.setColor(new Color(255, 0, 30));
|
graphics2d.setColor(new Color(255, 0, 30));
|
||||||
graphics2d.fillRect(screenX, screenY-5, (int) ((double) panel.tileSize/maxLife)*life, 10);
|
graphics2d.fillRect(screenX, screenY-5, (int) ((double) panel.tileSize/maxLife)*life, 10);
|
||||||
|
|
||||||
hpBarCounter++;
|
hpBarCount++;
|
||||||
if(hpBarCounter > 600) { //bar disappears after 10 seconds
|
if(hpBarCount > 600) { //bar disappears after 10 seconds
|
||||||
hpBarCounter = 0;
|
hpBarCount = 0;
|
||||||
hpBarOn = false;
|
hpBarOn = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -142,7 +170,7 @@ public class Entity {
|
|||||||
// DRAW ENTITY
|
// DRAW ENTITY
|
||||||
if(invincible) {
|
if(invincible) {
|
||||||
hpBarOn = true;
|
hpBarOn = true;
|
||||||
hpBarCounter = 0;
|
hpBarCount = 0;
|
||||||
changeOpacity(graphics2d, 0.4f);
|
changeOpacity(graphics2d, 0.4f);
|
||||||
}
|
}
|
||||||
if(dying) dyingAnimation(graphics2d);
|
if(dying) dyingAnimation(graphics2d);
|
||||||
@@ -202,6 +230,7 @@ public class Entity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void use(Entity entity) {
|
public void use(Entity entity) {
|
||||||
|
|
||||||
} //If entity is consumable
|
} //If entity is consumable
|
||||||
public void checkDrop() {
|
public void checkDrop() {
|
||||||
|
|
||||||
@@ -227,6 +256,36 @@ public class Entity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void interact() {
|
||||||
|
|
||||||
|
}
|
||||||
|
public int getDetected(Entity user, Entity[][] target, String targetName) {
|
||||||
|
int index = 999;
|
||||||
|
int nextWorldX = user.getLeftX();
|
||||||
|
int nextWorldY = user.getTopY();
|
||||||
|
|
||||||
|
switch(user.direction) {
|
||||||
|
case UP -> nextWorldY = user.getTopY()-1;
|
||||||
|
case DOWN -> nextWorldY = user.getBottomY()+1;
|
||||||
|
case LEFT -> nextWorldX = user.getLeftX()-1;
|
||||||
|
case RIGHT -> nextWorldX = user.getRightX()+1;
|
||||||
|
}
|
||||||
|
int col = nextWorldX / panel.tileSize;
|
||||||
|
int row = nextWorldY / panel.tileSize;
|
||||||
|
|
||||||
|
for(int i = 0; i < target[panel.currentMap.getIndex()].length; i++) {
|
||||||
|
if(target[panel.currentMap.getIndex()][i] == null) continue;
|
||||||
|
if(
|
||||||
|
target[panel.currentMap.getIndex()][i].getCol() == col &&
|
||||||
|
target[panel.currentMap.getIndex()][i].getRow() == row &&
|
||||||
|
target[panel.currentMap.getIndex()][i].name.equalsIgnoreCase(targetName)
|
||||||
|
) {
|
||||||
|
index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
// PARTICLE SETUP
|
// PARTICLE SETUP
|
||||||
public Color getParticleColor() {
|
public Color getParticleColor() {
|
||||||
@@ -257,6 +316,26 @@ public class Entity {
|
|||||||
panel.particleList.add(p4);
|
panel.particleList.add(p4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GETTERS
|
||||||
|
public int getLeftX() {
|
||||||
|
return worldX + solidArea.x;
|
||||||
|
}
|
||||||
|
public int getRightX() {
|
||||||
|
return worldX + solidArea.x + solidArea.width;
|
||||||
|
}
|
||||||
|
public int getTopY() {
|
||||||
|
return worldY + solidArea.y;
|
||||||
|
}
|
||||||
|
public int getBottomY() {
|
||||||
|
return worldY + solidArea.y + solidArea.height;
|
||||||
|
}
|
||||||
|
public int getCol() {
|
||||||
|
return (worldX + solidArea.x) / panel.tileSize;
|
||||||
|
}
|
||||||
|
public int getRow() {
|
||||||
|
return (worldY + solidArea.y) / panel.tileSize;
|
||||||
|
}
|
||||||
|
|
||||||
// SETTING THINGS UP
|
// SETTING THINGS UP
|
||||||
BufferedImage parseSprite() {
|
BufferedImage parseSprite() {
|
||||||
return switch (direction) {
|
return switch (direction) {
|
||||||
|
|||||||
@@ -4,8 +4,9 @@ import de.miaurizius.jgame2d.core.*;
|
|||||||
import de.miaurizius.jgame2d.core.enums.Direction;
|
import de.miaurizius.jgame2d.core.enums.Direction;
|
||||||
import de.miaurizius.jgame2d.core.enums.EntityType;
|
import de.miaurizius.jgame2d.core.enums.EntityType;
|
||||||
import de.miaurizius.jgame2d.core.enums.GameState;
|
import de.miaurizius.jgame2d.core.enums.GameState;
|
||||||
import de.miaurizius.jgame2d.core.enums.Map;
|
|
||||||
import de.miaurizius.jgame2d.core.handlers.KeyHandler;
|
import de.miaurizius.jgame2d.core.handlers.KeyHandler;
|
||||||
|
import de.miaurizius.jgame2d.entity.item.KeyObj;
|
||||||
|
import de.miaurizius.jgame2d.entity.item.PotionObj;
|
||||||
import de.miaurizius.jgame2d.entity.item.ShieldWoodObj;
|
import de.miaurizius.jgame2d.entity.item.ShieldWoodObj;
|
||||||
import de.miaurizius.jgame2d.entity.item.SwordNormalObj;
|
import de.miaurizius.jgame2d.entity.item.SwordNormalObj;
|
||||||
import de.miaurizius.jgame2d.entity.projectile.FireballObj;
|
import de.miaurizius.jgame2d.entity.projectile.FireballObj;
|
||||||
@@ -95,18 +96,18 @@ public class Player extends Entity {
|
|||||||
if(keyH.spacePressed && !attackCancel) {
|
if(keyH.spacePressed && !attackCancel) {
|
||||||
panel.playSE(7);
|
panel.playSE(7);
|
||||||
attacking = true;
|
attacking = true;
|
||||||
spriteCounter = 0;
|
spriteCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
attackCancel = false;
|
attackCancel = false;
|
||||||
panel.keyH.spacePressed = false;
|
panel.keyH.spacePressed = false;
|
||||||
|
|
||||||
spriteCounter++;
|
spriteCount++;
|
||||||
if(spriteCounter > 12) {
|
if(spriteCount > 12) {
|
||||||
if(spriteNum == 1) spriteNum = 2;
|
if(spriteNum == 1) spriteNum = 2;
|
||||||
else if(spriteNum == 2) spriteNum = 1;
|
else if(spriteNum == 2) spriteNum = 1;
|
||||||
else spriteNum = 0;
|
else spriteNum = 0;
|
||||||
spriteCounter = 0;
|
spriteCount = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,9 +137,18 @@ public class Player extends Entity {
|
|||||||
public void pickObject(int index) {
|
public void pickObject(int index) {
|
||||||
if(index == 999 || panel.obj[panel.currentMap.getIndex()][index] == null) return;
|
if(index == 999 || panel.obj[panel.currentMap.getIndex()][index] == null) return;
|
||||||
|
|
||||||
// PICKUP ONLY
|
// PICKUP ONLY ITEMS
|
||||||
if(panel.obj[panel.currentMap.getIndex()][index].type == EntityType.PICKUP) {
|
if(panel.obj[panel.currentMap.getIndex()][index].type == EntityType.PICKUP) {
|
||||||
panel.obj[panel.currentMap.getIndex()][index].use(this);
|
panel.obj[panel.currentMap.getIndex()][index].use(this);
|
||||||
|
panel.obj[panel.currentMap.getIndex()][index] = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// OBSTACLES
|
||||||
|
if(panel.obj[panel.currentMap.getIndex()][index].type == EntityType.OBSTACLE) {
|
||||||
|
if(!keyH.spacePressed) return;
|
||||||
|
attackCancel = true;
|
||||||
|
panel.obj[panel.currentMap.getIndex()][index].interact();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
// INVENTORY ITEMS
|
// INVENTORY ITEMS
|
||||||
else {
|
else {
|
||||||
@@ -168,9 +178,9 @@ public class Player extends Entity {
|
|||||||
}
|
}
|
||||||
public void attacking() {
|
public void attacking() {
|
||||||
if(attackCancel) return;
|
if(attackCancel) return;
|
||||||
spriteCounter++;
|
spriteCount++;
|
||||||
if(spriteCounter <= 5) spriteNum = 1;
|
if(spriteCount <= 5) spriteNum = 1;
|
||||||
if(spriteCounter > 5 && spriteCounter <= 25) {
|
if(spriteCount > 5 && spriteCount <= 25) {
|
||||||
spriteNum = 2;
|
spriteNum = 2;
|
||||||
int currentWorldX = worldX;
|
int currentWorldX = worldX;
|
||||||
int currentWorldY = worldY;
|
int currentWorldY = worldY;
|
||||||
@@ -187,7 +197,7 @@ public class Player extends Entity {
|
|||||||
solidArea.height = attackArea.height;
|
solidArea.height = attackArea.height;
|
||||||
|
|
||||||
int monsterIndex = panel.collisionH.checkEntity(this, panel.monster[panel.currentMap.getIndex()]);
|
int monsterIndex = panel.collisionH.checkEntity(this, panel.monster[panel.currentMap.getIndex()]);
|
||||||
damageMonster(monsterIndex, attack);
|
damageMonster(monsterIndex, attack, currentWeapon.knockbackVal);
|
||||||
|
|
||||||
int iTileIndex = panel.collisionH.checkEntity(this, panel.iTile[panel.currentMap.getIndex()]);
|
int iTileIndex = panel.collisionH.checkEntity(this, panel.iTile[panel.currentMap.getIndex()]);
|
||||||
interactTile(iTileIndex);
|
interactTile(iTileIndex);
|
||||||
@@ -198,13 +208,13 @@ public class Player extends Entity {
|
|||||||
solidArea.height = solidAreaHeight;
|
solidArea.height = solidAreaHeight;
|
||||||
|
|
||||||
}
|
}
|
||||||
if(spriteCounter > 25) {
|
if(spriteCount > 25) {
|
||||||
spriteNum = 1;
|
spriteNum = 1;
|
||||||
spriteCounter = 0;
|
spriteCount = 0;
|
||||||
attacking = false;
|
attacking = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void damageMonster(int index, int attack) {
|
public void damageMonster(int index, int attack, int knockbackVal) {
|
||||||
if(index == 999) return;
|
if(index == 999) return;
|
||||||
if(panel.monster[panel.currentMap.getIndex()][index].invincible) return;
|
if(panel.monster[panel.currentMap.getIndex()][index].invincible) return;
|
||||||
|
|
||||||
@@ -212,6 +222,7 @@ public class Player extends Entity {
|
|||||||
|
|
||||||
if(damage > 0) {
|
if(damage > 0) {
|
||||||
panel.playSE(5);
|
panel.playSE(5);
|
||||||
|
if(knockbackVal > 0) knockback(panel.monster[panel.currentMap.getIndex()][index], knockbackVal);
|
||||||
panel.monster[panel.currentMap.getIndex()][index].life -= damage;
|
panel.monster[panel.currentMap.getIndex()][index].life -= damage;
|
||||||
panel.monster[panel.currentMap.getIndex()][index].invincible = true;
|
panel.monster[panel.currentMap.getIndex()][index].invincible = true;
|
||||||
}
|
}
|
||||||
@@ -224,6 +235,12 @@ public class Player extends Entity {
|
|||||||
checkLevelUp();
|
checkLevelUp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void knockback(Entity entity, int knockbackVal) {
|
||||||
|
entity.direction = direction;
|
||||||
|
entity.speed += knockbackVal;
|
||||||
|
entity.knockback = true;
|
||||||
|
}
|
||||||
|
|
||||||
public void interactTile(int index) {
|
public void interactTile(int index) {
|
||||||
if(index == 999 || !panel.iTile[panel.currentMap.getIndex()][index].destructible || panel.iTile[panel.currentMap.getIndex()][index].invincible) return;
|
if(index == 999 || !panel.iTile[panel.currentMap.getIndex()][index].destructible || panel.iTile[panel.currentMap.getIndex()][index].invincible) return;
|
||||||
if(!panel.iTile[panel.currentMap.getIndex()][index].meetItemReq(this)) return;
|
if(!panel.iTile[panel.currentMap.getIndex()][index].meetItemReq(this)) return;
|
||||||
@@ -276,7 +293,6 @@ public class Player extends Entity {
|
|||||||
}
|
}
|
||||||
if(selectedItem.consumable) {
|
if(selectedItem.consumable) {
|
||||||
selectedItem.use(this);
|
selectedItem.use(this);
|
||||||
inventory.remove(itemIndex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void setDefaultPositions() {
|
public void setDefaultPositions() {
|
||||||
@@ -294,11 +310,8 @@ public class Player extends Entity {
|
|||||||
worldX = panel.tileSize * 23;
|
worldX = panel.tileSize * 23;
|
||||||
worldY = panel.tileSize * 21;
|
worldY = panel.tileSize * 21;
|
||||||
|
|
||||||
// worldX = panel.tileSize * 12;
|
defaultSpeed = 4;
|
||||||
// worldY = panel.tileSize * 12;
|
speed = defaultSpeed;
|
||||||
// panel.currentMap = Map.HUT;
|
|
||||||
|
|
||||||
speed = 4;
|
|
||||||
direction = Direction.DOWN;
|
direction = Direction.DOWN;
|
||||||
|
|
||||||
// PLAYER STATUS (1 heart = 2 lives)
|
// PLAYER STATUS (1 heart = 2 lives)
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ public class AxeObj extends Entity {
|
|||||||
weaponType = EntityType.WeaponType.AXE;
|
weaponType = EntityType.WeaponType.AXE;
|
||||||
down1 = initEntitySprites("/objects/axe");
|
down1 = initEntitySprites("/objects/axe");
|
||||||
price = 50;
|
price = 50;
|
||||||
|
knockbackVal = 10;
|
||||||
|
|
||||||
attackValue = 2;
|
attackValue = 2;
|
||||||
attackArea.width = 30;
|
attackArea.width = 30;
|
||||||
|
|||||||
@@ -22,5 +22,6 @@ public class CoinObj extends Entity {
|
|||||||
panel.playSE(1);
|
panel.playSE(1);
|
||||||
panel.ui.addMessage("Coin +"+value);
|
panel.ui.addMessage("Coin +"+value);
|
||||||
panel.player.coins += value;
|
panel.player.coins += value;
|
||||||
|
panel.player.inventory.remove(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package de.miaurizius.jgame2d.entity.item;
|
|||||||
|
|
||||||
import de.miaurizius.jgame2d.core.GamePanel;
|
import de.miaurizius.jgame2d.core.GamePanel;
|
||||||
import de.miaurizius.jgame2d.core.enums.EntityType;
|
import de.miaurizius.jgame2d.core.enums.EntityType;
|
||||||
|
import de.miaurizius.jgame2d.core.enums.GameState;
|
||||||
import de.miaurizius.jgame2d.entity.Entity;
|
import de.miaurizius.jgame2d.entity.Entity;
|
||||||
|
|
||||||
public class KeyObj extends Entity {
|
public class KeyObj extends Entity {
|
||||||
@@ -11,9 +12,24 @@ public class KeyObj extends Entity {
|
|||||||
name = "Normal Key";
|
name = "Normal Key";
|
||||||
description = "[" + name + "]\nIt opens a door.";
|
description = "[" + name + "]\nIt opens a door.";
|
||||||
type = EntityType.ITEM;
|
type = EntityType.ITEM;
|
||||||
|
consumable = true;
|
||||||
down1 = initEntitySprites("objects/key");
|
down1 = initEntitySprites("objects/key");
|
||||||
|
|
||||||
price = 50;
|
price = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void use(Entity entity) {
|
||||||
|
panel.gameState = GameState.DIALOGUE;
|
||||||
|
int objIndex = getDetected(entity, panel.obj, "door");
|
||||||
|
if(objIndex == 999) {
|
||||||
|
panel.ui.currentDialogue = "What are you doing?\nThere is no door nearby.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
panel.ui.currentDialogue = "You used a " + name + "!\nThe door is now open.";
|
||||||
|
panel.playSE(3);
|
||||||
|
panel.obj[panel.currentMap.getIndex()][objIndex] = null;
|
||||||
|
entity.inventory.remove(this);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public class PotionObj extends Entity {
|
|||||||
entity.life += value;
|
entity.life += value;
|
||||||
if(panel.player.life > panel.player.maxLife) panel.player.life = panel.player.maxLife;
|
if(panel.player.life > panel.player.maxLife) panel.player.life = panel.player.maxLife;
|
||||||
panel.playSE(2);
|
panel.playSE(2);
|
||||||
|
panel.player.inventory.remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public class SwordNormalObj extends Entity {
|
|||||||
weaponType = EntityType.WeaponType.SWORD;
|
weaponType = EntityType.WeaponType.SWORD;
|
||||||
down1 = initEntitySprites("objects/sword_normal");
|
down1 = initEntitySprites("objects/sword_normal");
|
||||||
price = 50;
|
price = 50;
|
||||||
|
knockbackVal = 2;
|
||||||
|
|
||||||
attackValue = 1;
|
attackValue = 1;
|
||||||
attackArea.width = 36;
|
attackArea.width = 36;
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ public class GreenSlimeMON extends Entity {
|
|||||||
super(panel);
|
super(panel);
|
||||||
type = EntityType.MONSTER;
|
type = EntityType.MONSTER;
|
||||||
name = "green-slime";
|
name = "green-slime";
|
||||||
speed = 1;
|
defaultSpeed = 1;
|
||||||
|
speed = defaultSpeed;
|
||||||
maxLife = 4;
|
maxLife = 4;
|
||||||
life = maxLife;
|
life = maxLife;
|
||||||
attack = 5;
|
attack = 5;
|
||||||
|
|||||||
57
src/de/miaurizius/jgame2d/entity/obstacle/ChestObj.java
Normal file
57
src/de/miaurizius/jgame2d/entity/obstacle/ChestObj.java
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
package de.miaurizius.jgame2d.entity.obstacle;
|
||||||
|
|
||||||
|
import de.miaurizius.jgame2d.core.GamePanel;
|
||||||
|
import de.miaurizius.jgame2d.core.enums.EntityType;
|
||||||
|
import de.miaurizius.jgame2d.core.enums.GameState;
|
||||||
|
import de.miaurizius.jgame2d.entity.Entity;
|
||||||
|
|
||||||
|
public class ChestObj extends Entity {
|
||||||
|
|
||||||
|
GamePanel panel;
|
||||||
|
Entity loot;
|
||||||
|
boolean opened;
|
||||||
|
|
||||||
|
public ChestObj(GamePanel panel, Entity loot) {
|
||||||
|
super(panel);
|
||||||
|
this.panel = panel;
|
||||||
|
this.loot = loot;
|
||||||
|
type = EntityType.OBSTACLE;
|
||||||
|
name = "chest";
|
||||||
|
|
||||||
|
image = initEntitySprites("objects/chest");
|
||||||
|
image2 = initEntitySprites("objects/chest_opened");
|
||||||
|
down1 = image;
|
||||||
|
collision = true;
|
||||||
|
|
||||||
|
solidArea.x = 4;
|
||||||
|
solidArea.y = 16;
|
||||||
|
solidArea.width = 40;
|
||||||
|
solidArea.height = 32;
|
||||||
|
solidAreaDefaultX = solidArea.x;
|
||||||
|
solidAreaDefaultY = solidArea.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void interact() {
|
||||||
|
panel.gameState = GameState.DIALOGUE;
|
||||||
|
|
||||||
|
if(opened) {
|
||||||
|
panel.ui.currentDialogue = "It's already empty...";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
panel.playSE(3);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("You open the chest and find a ").append(loot.name).append("!");
|
||||||
|
if(panel.player.inventory.size() == panel.player.maxInvSize) {
|
||||||
|
sb.append("\nBut your inventory is full...");
|
||||||
|
panel.ui.currentDialogue = sb.toString();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sb.append("\nYou obtain the ").append(loot.name).append("!");
|
||||||
|
panel.player.inventory.add(loot);
|
||||||
|
down1 = image2;
|
||||||
|
opened = true;
|
||||||
|
panel.ui.currentDialogue = sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,13 +1,19 @@
|
|||||||
package de.miaurizius.jgame2d.entity.world;
|
package de.miaurizius.jgame2d.entity.obstacle;
|
||||||
|
|
||||||
import de.miaurizius.jgame2d.core.GamePanel;
|
import de.miaurizius.jgame2d.core.GamePanel;
|
||||||
|
import de.miaurizius.jgame2d.core.enums.EntityType;
|
||||||
|
import de.miaurizius.jgame2d.core.enums.GameState;
|
||||||
import de.miaurizius.jgame2d.entity.Entity;
|
import de.miaurizius.jgame2d.entity.Entity;
|
||||||
|
|
||||||
public class DoorObj extends Entity {
|
public class DoorObj extends Entity {
|
||||||
|
|
||||||
|
GamePanel panel;
|
||||||
|
|
||||||
public DoorObj(GamePanel panel) {
|
public DoorObj(GamePanel panel) {
|
||||||
super(panel);
|
super(panel);
|
||||||
|
this.panel = panel;
|
||||||
name = "door";
|
name = "door";
|
||||||
|
type = EntityType.OBSTACLE;
|
||||||
down1 = initEntitySprites("objects/door");
|
down1 = initEntitySprites("objects/door");
|
||||||
collision = true;
|
collision = true;
|
||||||
|
|
||||||
@@ -19,4 +25,10 @@ public class DoorObj extends Entity {
|
|||||||
solidAreaDefaultY = solidArea.y;
|
solidAreaDefaultY = solidArea.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void interact() {
|
||||||
|
panel.gameState = GameState.DIALOGUE;
|
||||||
|
panel.ui.currentDialogue = "You need a key to open this.";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ import de.miaurizius.jgame2d.entity.Entity;
|
|||||||
public class Projectile extends Entity {
|
public class Projectile extends Entity {
|
||||||
|
|
||||||
Entity user;
|
Entity user;
|
||||||
|
//TODO: parry projectiles: https://youtu.be/8KitXuxcuqI?list=PL_QPQmz5C6WUF-pOQDsbsKbaBZqXj4qSq&t=75
|
||||||
|
|
||||||
public Projectile(GamePanel panel) {
|
public Projectile(GamePanel panel) {
|
||||||
super(panel);
|
super(panel);
|
||||||
@@ -27,7 +28,7 @@ public class Projectile extends Entity {
|
|||||||
if(user.type == EntityType.PLAYER) {
|
if(user.type == EntityType.PLAYER) {
|
||||||
int monsterIndex = panel.collisionH.checkEntity(this, panel.monster[panel.currentMap.getIndex()]);
|
int monsterIndex = panel.collisionH.checkEntity(this, panel.monster[panel.currentMap.getIndex()]);
|
||||||
if(monsterIndex != 999) {
|
if(monsterIndex != 999) {
|
||||||
panel.player.damageMonster(monsterIndex, attack);
|
panel.player.damageMonster(monsterIndex, attack, knockbackVal);
|
||||||
generateParticle(user.projectile, panel.monster[panel.currentMap.getIndex()][monsterIndex]);
|
generateParticle(user.projectile, panel.monster[panel.currentMap.getIndex()][monsterIndex]);
|
||||||
alive = false;
|
alive = false;
|
||||||
}
|
}
|
||||||
@@ -54,12 +55,12 @@ public class Projectile extends Entity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
spriteCounter++;
|
spriteCount++;
|
||||||
if(spriteCounter > 12) {
|
if(spriteCount > 12) {
|
||||||
if(spriteNum == 1) spriteNum = 2;
|
if(spriteNum == 1) spriteNum = 2;
|
||||||
else if(spriteNum == 2) spriteNum = 1;
|
else if(spriteNum == 2) spriteNum = 1;
|
||||||
else spriteNum = 0;
|
else spriteNum = 0;
|
||||||
spriteCounter = 0;
|
spriteCount = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package de.miaurizius.jgame2d.entity.world;
|
|
||||||
|
|
||||||
import de.miaurizius.jgame2d.core.GamePanel;
|
|
||||||
import de.miaurizius.jgame2d.entity.Entity;
|
|
||||||
|
|
||||||
public class ChestObj extends Entity {
|
|
||||||
|
|
||||||
public ChestObj(GamePanel panel) {
|
|
||||||
super(panel);
|
|
||||||
name = "chest";
|
|
||||||
down1 = initEntitySprites("objects/chest");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user