AMAZING bug with attaching collidable items
This commit is contained in:
parent
992ef0d159
commit
d1c0791e48
@ -126,6 +126,11 @@
|
|||||||
"isKey": true,
|
"isKey": true,
|
||||||
"isMouse": false,
|
"isMouse": false,
|
||||||
"keyValue": 340
|
"keyValue": 340
|
||||||
|
},
|
||||||
|
"interact" : {
|
||||||
|
"isKey": true,
|
||||||
|
"isMouse": false,
|
||||||
|
"keyValue": 69
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,7 +84,8 @@
|
|||||||
"SENTIENT",
|
"SENTIENT",
|
||||||
"ATTACKER",
|
"ATTACKER",
|
||||||
"GRAVITY",
|
"GRAVITY",
|
||||||
"TARGETABLE"
|
"TARGETABLE",
|
||||||
|
"CAN_EQUIP"
|
||||||
],
|
],
|
||||||
"movementSystems" : [
|
"movementSystems" : [
|
||||||
{
|
{
|
||||||
@ -238,7 +239,8 @@
|
|||||||
"SENTIENT",
|
"SENTIENT",
|
||||||
"ATTACKER",
|
"ATTACKER",
|
||||||
"GRAVITY",
|
"GRAVITY",
|
||||||
"TARGETABLE"
|
"TARGETABLE",
|
||||||
|
"CAN_EQUIP"
|
||||||
],
|
],
|
||||||
"movementSystems" : [
|
"movementSystems" : [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import electrosphere.entity.EntityDataStrings;
|
|||||||
import electrosphere.entity.types.creature.CreatureUtils;
|
import electrosphere.entity.types.creature.CreatureUtils;
|
||||||
import electrosphere.entity.EntityUtils;
|
import electrosphere.entity.EntityUtils;
|
||||||
import electrosphere.entity.state.AttackTree;
|
import electrosphere.entity.state.AttackTree;
|
||||||
|
import electrosphere.entity.state.equip.EquipState;
|
||||||
import electrosphere.entity.state.movement.GroundMovementTree;
|
import electrosphere.entity.state.movement.GroundMovementTree;
|
||||||
import electrosphere.entity.state.movement.GroundMovementTree.MovementTreeState;
|
import electrosphere.entity.state.movement.GroundMovementTree.MovementTreeState;
|
||||||
import electrosphere.entity.state.movement.SprintTree;
|
import electrosphere.entity.state.movement.SprintTree;
|
||||||
@ -46,6 +47,7 @@ public class ControlHandler {
|
|||||||
public static final String DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU = "inGameMainMenu";
|
public static final String DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU = "inGameMainMenu";
|
||||||
public static final String DATA_STRING_INPUT_CODE_LOCK_CROSSHAIR = "crosshairLock";
|
public static final String DATA_STRING_INPUT_CODE_LOCK_CROSSHAIR = "crosshairLock";
|
||||||
public static final String INPUT_CODE_SPRINT = "sprint";
|
public static final String INPUT_CODE_SPRINT = "sprint";
|
||||||
|
public static final String INPUT_CODE_INTERACT = "interact";
|
||||||
|
|
||||||
public static final String DATA_STRING_INPUT_CODE_MENU_INCREMENT = "menuIncrement";
|
public static final String DATA_STRING_INPUT_CODE_MENU_INCREMENT = "menuIncrement";
|
||||||
public static final String DATA_STRING_INPUT_CODE_MENU_DECREMENT = "menuDecrement";
|
public static final String DATA_STRING_INPUT_CODE_MENU_DECREMENT = "menuDecrement";
|
||||||
@ -131,6 +133,7 @@ public class ControlHandler {
|
|||||||
handler.addControl(DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU, new Control(true,false,GLFW_KEY_ESCAPE));
|
handler.addControl(DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU, new Control(true,false,GLFW_KEY_ESCAPE));
|
||||||
handler.addControl(DATA_STRING_INPUT_CODE_LOCK_CROSSHAIR, new Control(false,true,GLFW_MOUSE_BUTTON_RIGHT));
|
handler.addControl(DATA_STRING_INPUT_CODE_LOCK_CROSSHAIR, new Control(false,true,GLFW_MOUSE_BUTTON_RIGHT));
|
||||||
handler.addControl(INPUT_CODE_SPRINT, new Control(true,false,GLFW_KEY_LEFT_SHIFT));
|
handler.addControl(INPUT_CODE_SPRINT, new Control(true,false,GLFW_KEY_LEFT_SHIFT));
|
||||||
|
handler.addControl(INPUT_CODE_INTERACT, new Control(true,false,GLFW_KEY_E));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Map the menu navigation controls
|
Map the menu navigation controls
|
||||||
@ -386,6 +389,28 @@ public class ControlHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Interact
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
Sprint
|
||||||
|
*/
|
||||||
|
if(controls.containsKey(INPUT_CODE_INTERACT)){
|
||||||
|
if(controls.get(INPUT_CODE_INTERACT).isIsKey() && glfwGetKey(Globals.window, controls.get(INPUT_CODE_INTERACT).getKeyValue()) == GLFW_PRESS){
|
||||||
|
if(controls.get(INPUT_CODE_INTERACT).isState() == false){
|
||||||
|
if(Globals.playerCharacter.getDataKeys().contains(EntityDataStrings.EQUIP_STATE) && Crosshair.hasTarget()){
|
||||||
|
EquipState equipState = (EquipState)Globals.playerCharacter.getData(EntityDataStrings.EQUIP_STATE);
|
||||||
|
equipState.attemptEquip(Crosshair.getTarget());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
controls.get(INPUT_CODE_INTERACT).setState(true);
|
||||||
|
} else {
|
||||||
|
if(controls.get(INPUT_CODE_INTERACT).isState() == true){
|
||||||
|
}
|
||||||
|
controls.get(INPUT_CODE_INTERACT).setState(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Attack
|
Attack
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -173,6 +173,11 @@ public class EntityDataStrings {
|
|||||||
public static final String FOLIAGE_IS_FOLIAGE = "foliageIsFoliage";
|
public static final String FOLIAGE_IS_FOLIAGE = "foliageIsFoliage";
|
||||||
public static final String FOLIAGE_TYPE = "foliageType";
|
public static final String FOLIAGE_TYPE = "foliageType";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Equip state
|
||||||
|
*/
|
||||||
|
public static final String EQUIP_STATE = "equipState";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Entity categories
|
Entity categories
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package electrosphere.entity.state;
|
|||||||
import electrosphere.entity.Entity;
|
import electrosphere.entity.Entity;
|
||||||
import electrosphere.entity.EntityDataStrings;
|
import electrosphere.entity.EntityDataStrings;
|
||||||
import electrosphere.entity.EntityUtils;
|
import electrosphere.entity.EntityUtils;
|
||||||
|
import electrosphere.entity.state.equip.EquipState;
|
||||||
import electrosphere.entity.types.creature.CreatureUtils;
|
import electrosphere.entity.types.creature.CreatureUtils;
|
||||||
import electrosphere.entity.types.hitbox.HitboxUtils;
|
import electrosphere.entity.types.hitbox.HitboxUtils;
|
||||||
import electrosphere.game.data.creature.type.AttackMove;
|
import electrosphere.game.data.creature.type.AttackMove;
|
||||||
@ -51,7 +52,7 @@ public class AttackTree {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void start(String attackType){
|
public void start(String attackType){
|
||||||
if(canAttack()){
|
if(canAttack(attackType)){
|
||||||
parent.putData(EntityDataStrings.ATTACK_MOVE_TYPE_ACTIVE, attackType);
|
parent.putData(EntityDataStrings.ATTACK_MOVE_TYPE_ACTIVE, attackType);
|
||||||
AttackMove currentMove;
|
AttackMove currentMove;
|
||||||
switch(attackType){
|
switch(attackType){
|
||||||
@ -277,11 +278,32 @@ public class AttackTree {
|
|||||||
networkMessageQueue.add(networkMessage);
|
networkMessageQueue.add(networkMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean canAttack(){
|
boolean canAttack(String attackType){
|
||||||
boolean rVal = true;
|
boolean rVal = true;
|
||||||
if(state != AttackTreeState.IDLE){
|
if(state != AttackTreeState.IDLE){
|
||||||
rVal = false;
|
rVal = false;
|
||||||
}
|
}
|
||||||
|
if(parent.getDataKeys().contains(EntityDataStrings.EQUIP_STATE)){
|
||||||
|
EquipState equipState = (EquipState)parent.getData(EntityDataStrings.EQUIP_STATE);
|
||||||
|
if(equipState.hasEquipPrimary()){
|
||||||
|
switch(attackType){
|
||||||
|
case EntityDataStrings.ATTACK_MOVE_TYPE_MELEE_SWING_ONE_HAND:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rVal = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch(attackType){
|
||||||
|
case EntityDataStrings.ATTACK_MOVE_TYPE_MELEE_SWING_ONE_HAND:
|
||||||
|
rVal = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rVal = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package electrosphere.entity.state.equip;
|
package electrosphere.entity.state.equip;
|
||||||
|
|
||||||
import electrosphere.entity.Entity;
|
import electrosphere.entity.Entity;
|
||||||
|
import electrosphere.entity.types.attach.AttachUtils;
|
||||||
|
import electrosphere.entity.types.item.ItemUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -12,12 +14,15 @@ public class EquipState {
|
|||||||
|
|
||||||
Entity equipPrimary;
|
Entity equipPrimary;
|
||||||
|
|
||||||
public EquipState(Entity parent){
|
String equipPrimaryBoneName;
|
||||||
|
|
||||||
|
public EquipState(Entity parent, String equipPrimaryBoneName){
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
this.equipPrimaryBoneName = equipPrimaryBoneName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasEquipPrimary(){
|
public boolean hasEquipPrimary(){
|
||||||
return equipPrimary == null;
|
return equipPrimary != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Entity getEquipPrimary() {
|
public Entity getEquipPrimary() {
|
||||||
@ -28,5 +33,12 @@ public class EquipState {
|
|||||||
this.equipPrimary = equipPrimary;
|
this.equipPrimary = equipPrimary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void attemptEquip(Entity toEquip){
|
||||||
|
if(!hasEquipPrimary() && ItemUtils.isItem(toEquip) && !AttachUtils.isAttached(toEquip)){
|
||||||
|
equipPrimary = toEquip;
|
||||||
|
AttachUtils.attachEntityToEntityAtBone(parent, toEquip, equipPrimaryBoneName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +0,0 @@
|
|||||||
package electrosphere.entity.state.equip;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author amaterasu
|
|
||||||
*/
|
|
||||||
public class EquipTree {
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -14,6 +14,7 @@ import electrosphere.entity.state.AttackTree;
|
|||||||
import electrosphere.entity.state.GravityTree;
|
import electrosphere.entity.state.GravityTree;
|
||||||
import electrosphere.entity.state.IdleTree;
|
import electrosphere.entity.state.IdleTree;
|
||||||
import electrosphere.entity.state.collidable.CollidableTree;
|
import electrosphere.entity.state.collidable.CollidableTree;
|
||||||
|
import electrosphere.entity.state.equip.EquipState;
|
||||||
import electrosphere.entity.types.collision.CollisionObjUtils;
|
import electrosphere.entity.types.collision.CollisionObjUtils;
|
||||||
import electrosphere.entity.state.life.LifeState;
|
import electrosphere.entity.state.life.LifeState;
|
||||||
import electrosphere.entity.state.movement.SprintTree;
|
import electrosphere.entity.state.movement.SprintTree;
|
||||||
@ -155,6 +156,9 @@ public class CreatureUtils {
|
|||||||
case "TARGETABLE":
|
case "TARGETABLE":
|
||||||
Globals.entityManager.registerTargetableEntity(rVal);
|
Globals.entityManager.registerTargetableEntity(rVal);
|
||||||
break;
|
break;
|
||||||
|
case "CAN_EQUIP":
|
||||||
|
rVal.putData(EntityDataStrings.EQUIP_STATE, new EquipState(rVal,"Bone.031"));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//add all attack moves
|
//add all attack moves
|
||||||
|
|||||||
@ -94,5 +94,9 @@ public class Crosshair {
|
|||||||
return EntityUtils.getPosition(currentTarget);
|
return EntityUtils.getPosition(currentTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Entity getTarget(){
|
||||||
|
return currentTarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,9 +106,9 @@ public class ServerConnectionHandler implements Runnable {
|
|||||||
newPlayerObject.setWorldY(Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.z));
|
newPlayerObject.setWorldY(Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.z));
|
||||||
Globals.dataCellManager.addPlayer(newPlayerObject);
|
Globals.dataCellManager.addPlayer(newPlayerObject);
|
||||||
Globals.dataCellManager.movePlayer(newPlayerObject, Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.x), Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.z));
|
Globals.dataCellManager.movePlayer(newPlayerObject, Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.x), Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.z));
|
||||||
//spawn player sword
|
// //spawn player sword
|
||||||
Entity sword = ItemUtils.spawnBasicItem("Katana");
|
// Entity sword = ItemUtils.spawnBasicItem("Katana");
|
||||||
AttachUtils.attachEntityToEntityAtBone(newPlayerCharacter, sword, "Bone.031");
|
// AttachUtils.attachEntityToEntityAtBone(newPlayerCharacter, sword, "Bone.031");
|
||||||
//set controller id
|
//set controller id
|
||||||
CreatureUtils.setControllerPlayerId(newPlayerCharacter, playerID);
|
CreatureUtils.setControllerPlayerId(newPlayerCharacter, playerID);
|
||||||
if(Globals.RUN_SERVER && Main.playerId == -1){
|
if(Globals.RUN_SERVER && Main.playerId == -1){
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user