pw-js-world
Version:
An optional package for PW-JS-Api, aims to serve world purposes.
154 lines • 10.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PlayerCounters = exports.PlayerEffect = void 0;
const Misc_js_1 = require("./util/Misc.js");
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: (0, Misc_js_1.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
};
}
}
exports.default = Player;
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));
}
}
exports.PlayerEffect = PlayerEffect;
/**
* 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 = {}));
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");
}
}
exports.PlayerCounters = PlayerCounters;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL1BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw0Q0FBcUM7QUE4SXJDLE1BQXFCLE1BQU07SUFzRHZCLFlBQVksS0FBZ0MsRUFBRSxNQUFvQztRQVZsRjs7V0FFRztRQUNILFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUdsQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQixDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDZixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtnQkFDakQsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0I7Z0JBQzNELE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQzdCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07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