feat: Mobile updates
This commit is contained in:
parent
a884cd2e49
commit
bac9c29643
12
packages/entity/src/packets/trait-update-mobile.js
Normal file
12
packages/entity/src/packets/trait-update-mobile.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
import {Packet} from '@latus/socket';
|
||||
|
||||
export default () => class TraitUpdateMobilePacket extends Packet {
|
||||
|
||||
static get data() {
|
||||
return {
|
||||
isMobile: 'bool',
|
||||
speed: 'uint16',
|
||||
};
|
||||
}
|
||||
|
||||
};
|
|
@ -12,6 +12,16 @@ export default () => class Mobile extends decorate(Trait) {
|
|||
|
||||
#appliedMovement = [0, 0];
|
||||
|
||||
acceptPacket(packet) {
|
||||
switch (packet.constructor.type) {
|
||||
case 'TraitUpdateMobile':
|
||||
this.entity.isMobile = packet.data.isMobile;
|
||||
this.entity.speed = packet.data.speed;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
static defaultState() {
|
||||
return {
|
||||
isMobile: true,
|
||||
|
@ -108,7 +118,7 @@ export default () => class Mobile extends decorate(Trait) {
|
|||
},
|
||||
|
||||
requestMovement: (vector) => {
|
||||
if (!this.isMobile) {
|
||||
if (!this.entity.isMobile) {
|
||||
return;
|
||||
}
|
||||
this.entity.applyMovement(Vector.scale(
|
||||
|
@ -121,6 +131,20 @@ export default () => class Mobile extends decorate(Trait) {
|
|||
};
|
||||
}
|
||||
|
||||
packets() {
|
||||
const {isMobile, speed} = this.stateDifferences();
|
||||
if (isMobile || speed) {
|
||||
return [[
|
||||
'TraitUpdateMobile',
|
||||
{
|
||||
isMobile: this.state.isMobile,
|
||||
speed: this.state.speed,
|
||||
},
|
||||
]];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
tick(elapsed) {
|
||||
if (Vector.isZero(this.#appliedMovement)) {
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue
Block a user