Renderer/src/main/java/electrosphere/net/client/protocol/CombatProtocol.java
austin 3d6b71bf01
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
initial hitstun implementation
2024-09-17 21:58:15 -04:00

36 lines
1.4 KiB
Java

package electrosphere.net.client.protocol;
import org.joml.Vector3d;
import electrosphere.client.collision.ClientNetworkHitboxCollision;
import electrosphere.engine.Globals;
import electrosphere.entity.Entity;
import electrosphere.net.parser.net.message.CombatMessage;
import electrosphere.net.template.ClientProtocolTemplate;
/**
* Client protocl for dealing with combat messages
*/
public class CombatProtocol implements ClientProtocolTemplate<CombatMessage> {
@Override
public CombatMessage handleAsyncMessage(CombatMessage message) {
return message;
}
@Override
public void handleSyncMessage(CombatMessage message) {
switch(message.getMessageSubtype()){
case SERVERREPORTHITBOXCOLLISION: {
Vector3d position = new Vector3d(message.getpositionX(),message.getpositionY(),message.getpositionZ());
Entity senderEntity = Globals.clientSceneWrapper.getEntityFromServerId(message.getentityID());
Entity receiverEntity = Globals.clientSceneWrapper.getEntityFromServerId(message.getreceiverEntityID());
if(senderEntity != null && receiverEntity != null){
ClientNetworkHitboxCollision.handleHitboxCollision(senderEntity, receiverEntity, position, message.gethitboxType(), message.gethurtboxType());
}
} break;
}
}
}