pw-js-world
Version:
An optional package for PW-JS-Api, aims to serve world purposes.
148 lines • 9.85 kB
JavaScript
import { map } from "./util/Misc.js";
export default class Player {
constructor(props, states) {
/**
* List of active effects the player has.
*/
this.effects = [];
/**
* If this player is the bot.
*/
this.isMe = false;
this.accountId = props.accountId;
this.face = props.face;
this.isFriend = props.isFriend;
this.isWorldOwner = props.isWorldOwner;
this.playerId = props.playerId;
this.position = props.position ? {
x: props.position.x,
y: props.position.y
} : undefined;
if (!props.rights)
this.resetRights();
else
this.rights = {
availableCommands: props.rights.availableCommands,
canChangeWorldSettings: props.rights.canChangeWorldSettings,
canEdit: props.rights.canEdit,
canGod: props.rights.canGod,
canToggleMinimap: props.rights.canToggleMinimap,
};
this.role = props.role;
this.username = props.username;
if (typeof states === "boolean") {
this.isMe = states;
states = undefined;
}
if (!states) {
// Could be bot via init that don't get states.
this.resetState();
}
else
this.states = {
coinsBlue: states.coinsBlue,
coinsGold: states.coinsGold,
collectedItems: map(states.collectedItems, v => ({ x: v.x, y: v.y })),
deaths: states.deaths,
godmode: states.godmode,
hasGoldCrown: states.hasGoldCrown,
hasSilverCrown: states.hasSilverCrown,
modmode: states.modmode,
switches: states.switches,
teamId: states.teamId,
counters: states.counters
};
}
/**
* This is destructive, this is only for on reset packet.
*/
resetState() {
this.states = {
coinsBlue: 0,
coinsGold: 0,
collectedItems: [],
deaths: 0,
godmode: false,
hasGoldCrown: false,
hasSilverCrown: false,
modmode: false,
switches: new Array(1000).fill(false),
teamId: 0,
counters: new PlayerCounters()
};
}
/**
* Destructive.
*/
resetRights() {
this.rights = {
availableCommands: [],
canChangeWorldSettings: false,
canEdit: false,
canGod: false,
canToggleMinimap: false
};
}
}
export class PlayerEffect {
constructor(effect, triggeredAt) {
this.effectId = effect.effectId;
this.duration = effect.duration;
this.strength = effect.strength;
this.triggeredAt = triggeredAt !== null && triggeredAt !== void 0 ? triggeredAt : Date.now();
}
/**
* Note: If this effect is non timed, this will always return false.
*/
get hasExpired() {
if (this.duration === undefined)
return false;
return Date.now() > (this.triggeredAt + this.duration);
}
/**
* Milliseconds showing how long before this expires.
*
* Note: If this effect is non timed, this will return infinity.
*/
get remaining() {
if (this.duration === undefined)
return Infinity;
return Math.max(0, Date.now() - (this.triggeredAt + this.duration));
}
}
/**
* Index based
*/
var CounterKeys;
(function (CounterKeys) {
CounterKeys[CounterKeys["WHITE"] = 0] = "WHITE";
CounterKeys[CounterKeys["GRAY"] = 1] = "GRAY";
CounterKeys[CounterKeys["BLACK"] = 2] = "BLACK";
CounterKeys[CounterKeys["RED"] = 3] = "RED";
CounterKeys[CounterKeys["ORANGE"] = 4] = "ORANGE";
CounterKeys[CounterKeys["YELLOW"] = 5] = "YELLOW";
CounterKeys[CounterKeys["GREEN"] = 6] = "GREEN";
CounterKeys[CounterKeys["CYAN"] = 7] = "CYAN";
CounterKeys[CounterKeys["BLUE"] = 8] = "BLUE";
CounterKeys[CounterKeys["MAGENTA"] = 9] = "MAGENTA";
})(CounterKeys || (CounterKeys = {}));
export class PlayerCounters {
constructor(scores = []) {
var _a;
this.scores = [];
for (let i = 0; i < 10; i++) {
this.scores[i] = (_a = scores[i]) !== null && _a !== void 0 ? _a : 0;
}
}
get(id) {
if (typeof id === "number")
return this.scores[id];
const index = CounterKeys[id.toUpperCase()];
if (index !== undefined) {
return this.scores[index];
}
else
throw Error("Unknown colour");
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL1BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUE4SXJDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sTUFBTTtJQXNEdkIsWUFBWSxLQUFnQyxFQUFFLE1BQW9DO1FBVmxGOztXQUVHO1FBQ0gsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxTQUFJLEdBQVksS0FBSyxDQUFDO1FBR2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3QixDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDOztZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNmLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCO2dCQUNqRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQjtnQkFDM0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTztn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