feat: Mobile updates

This commit is contained in:
cha0s 2021-02-05 16:35:48 -06:00
parent a884cd2e49
commit bac9c29643
2 changed files with 37 additions and 1 deletions

View File

@ -0,0 +1,12 @@
import {Packet} from '@latus/socket';
export default () => class TraitUpdateMobilePacket extends Packet {
static get data() {
return {
isMobile: 'bool',
speed: 'uint16',
};
}
};

View File

@ -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;