Browse Source

refactor #1807: Initial commit

tags/v0.10.0^2
Shaun 2 years ago
parent
commit
06d01fbecc
8 changed files with 76 additions and 126 deletions
  1. +37
    -48
      src/server/components/auth.js
  2. +0
    -22
      src/server/components/extensions/socialCommands.js
  3. +0
    -3
      src/server/components/trade.js
  4. +1
    -1
      src/server/config/serverConfig.js
  5. +16
    -21
      src/server/config/skins.js
  6. +0
    -1
      src/server/db/tableNames.js
  7. +0
    -20
      src/server/fixes/fixes.js
  8. +22
    -10
      src/server/misc/events.js

+ 37
- 48
src/server/components/auth.js View File

@@ -6,7 +6,7 @@ const profanities = require('../misc/profanities');
const fixes = require('../fixes/fixes');
const spirits = require('../config/spirits');
const ga = require('../security/ga');
const events = require('../misc/events');
const eventEmitter = require('../misc/events');

const checkLoginRewards = require('./auth/checkLoginRewards');

@@ -130,7 +130,6 @@ module.exports = {
type: 'auth',
username: this.username,
charname: this.charname,
skins: this.skins,
accountInfo: this.accountInfo
};
},
@@ -164,7 +163,7 @@ module.exports = {
clean: true
});

events.emit('onAfterGetCharacter', {
eventEmitter.emit('onAfterGetCharacter', {
obj: this.obj,
character
});
@@ -207,65 +206,55 @@ module.exports = {

fixes.fixStash(this.stash);

events.emit('onAfterGetStash', {
eventEmitter.emit('onAfterGetStash', {
obj: this.obj,
stash: this.stash
});
},

getSkins: async function (character) {
this.skins = await io.getAsync({
key: this.username,
table: 'skins',
isArray: true
});
verifySkin: function (character) {
const doesOwn = this.doesOwnSkin(character.skinId);

fixes.fixSkins(this.username, this.skins);
},
if (doesOwn)
return;

getSkinList: function (msg) {
const skinList = skins.getSkinList(this.skins);
const defaultTo = 'wizard';

msg.callback(skinList);
character.skinId = defaultTo;
character.cell = skins.getCell(defaultTo);
character.sheetName = skins.getSpritesheet(defaultTo);
},

saveSkin: async function (skinId) {
if (!this.skins) {
this.getSkins({
callback: this.saveSkin.bind(this, skinId)
});
doesOwnSkin: function (skinId) {
const allSkins = skins.getList();
const filteredSkins = allSkins.filter(({ default: isDefaultSkin }) => isDefaultSkin);

return;
}
const msgSkinList = {
obj: this,
allSkins,
filteredSkins
};

this.skins.push(skinId);
eventEmitter.emit('onBeforeGetAccountSkins', msgSkinList);

await io.setAsync({
key: this.username,
table: 'skins',
value: this.skins,
serialize: true
});
},

onSaveSkin: function () {
const result = filteredSkins.some(f => f.id === skinId);

return result;
},

verifySkin: function (character) {
const skinList = skins.getSkinList(this.skins);
getSkinList: async function ({ callback }) {
const allSkins = skins.getList();
const filteredSkins = allSkins.filter(({ default: isDefaultSkin }) => isDefaultSkin);

if (!skinList.some(s => (s.id === character.skinId))) {
character.skinId = '1.0';
character.cell = skins.getCell(character.skinId);
character.sheetName = skins.getSpritesheet(character.skinId);
}
},
const msgSkinList = {
obj: this,
allSkins,
filteredSkins
};

doesOwnSkin: function (skinId) {
const skinList = skins.getSkinList(this.skins);
eventEmitter.emit('onBeforeGetAccountSkins', msgSkinList);

return skinList.some(s => s.id === (skinId + '') || s === '*');
callback(filteredSkins);
},

login: async function (msg) {
@@ -298,8 +287,6 @@ module.exports = {

this.initTracker();

await this.getSkins();

const accountInfo = await io.getAsync({
key: username,
table: 'accountInfo',
@@ -313,7 +300,11 @@ module.exports = {
accountInfo
};

events.emit('onBeforeGetAccountInfo', msgAccountInfo);
eventEmitter.emit('onBeforeGetAccountInfo', msgAccountInfo);

await eventEmitter.emit('onAfterLogin', {
username
});

this.accountInfo = msgAccountInfo.accountInfo;

@@ -390,8 +381,6 @@ module.exports = {
this.username = msg.data.username;
cons.logOut(this.obj);

await this.getSkins();

msg.callback();
},



+ 0
- 22
src/server/components/extensions/socialCommands.js View File

@@ -53,7 +53,6 @@ const localCommands = [
'leave',
'setPassword',
'roll',
'giveSkin',
'broadcast',
'saveAll',
'help',
@@ -569,27 +568,6 @@ module.exports = {
});
},

giveSkin: async function (config) {
let keys = Object.keys(config);
let username = keys[0];
let skinId = keys[1];

let skins = await io.getAsync({
key: username,
table: 'skins',
isArray: true
});

skins.push(skinId);

await io.setAsync({
key: username,
table: 'skins',
value: skins,
serialize: true
});
},

getMaterials: function (config) {
if (typeof(config) === 'object')
config = 100;


+ 0
- 3
src/server/components/trade.js View File

@@ -236,9 +236,6 @@ module.exports = {

if (!item.infinite)
this.obj.syncer.setArray(true, 'trade', 'removeItems', item.id);
} else {
this.obj.auth.saveSkin(item.skinId);
sendMessage(this.obj, 'color-greenB', `Unlocked skin: ${item.name}.`);
}

if (item.worth.currency) {


+ 1
- 1
src/server/config/serverConfig.js View File

@@ -8,7 +8,7 @@ module.exports = {
// sqlite
// rethink
//eslint-disable-next-line no-process-env
db: process.env.IWD_DB || 'sqlite',
db: process.env.IWD_DB || 'rethink',
//eslint-disable-next-line no-process-env
dbHost: process.env.IWD_DB_HOST || 'localhost',
//eslint-disable-next-line no-process-env


+ 16
- 21
src/server/config/skins.js View File

@@ -1,6 +1,6 @@
let events = require('../misc/events');
const events = require('../misc/events');

let config = {
const config = {
wizard: {
name: 'Wizard',
sprite: [0, 0],
@@ -35,27 +35,22 @@ module.exports = {
return config[skinId];
},

getSkinList: function (skins) {
let list = Object.keys(config)
.filter(function (s) {
return ((config[s].default) || (skins.some(f => ((f === s) || (f === '*')))));
})
.map(function (s) {
let res = extend({}, config[s]);
res.id = s;
return res;
});
getList: function (skins) {
const result = Object
.entries(config)
.map(([skinId, skinConfig]) => {
const { sprite: [ spriteX, spriteY ] } = skinConfig;

const serializedSprite = `${spriteX},${spriteY}`;

const skin = {
id: skinId,
...skinConfig,
sprite: serializedSprite
};

let result = [];
list.forEach(function (skin) {
result.push({
name: skin.name,
id: skin.id,
sprite: skin.sprite[0] + ',' + skin.sprite[1],
spritesheet: skin.spritesheet,
defaultSpirit: skin.defaultSpirit
return skin;
});
}, this);

return result;
},


+ 0
- 1
src/server/db/tableNames.js View File

@@ -2,7 +2,6 @@ const tableNames = [
'character',
'characterList',
'stash',
'skins',
'login',
'leaderboard',
'customMap',


+ 0
- 20
src/server/fixes/fixes.js View File

@@ -140,25 +140,5 @@ module.exports = {
delete i.enchantedStats.dmgPercent;
}
});
},

fixSkins: async function (username, skins) {
//Skin 2.0 because gaekatlan-druid
skins.forEach((s, i) => {
if (s === '2.0')
skins[i] = 'gaekatlan-druid';
});

let length = skins.length;
skins = skins.filter(s => !!configSkins.getBlueprint(s));

if (length !== skins.length) {
await io.setAsync({
key: username,
table: 'skins',
value: skins,
serialize: true
});
}
}
};

+ 22
- 10
src/server/misc/events.js View File

@@ -3,7 +3,14 @@ module.exports = {

on: function (event, callback) {
let list = this.events[event] || (this.events[event] = []);
list.push(callback);
list.push({ callback });

return callback;
},

onAsync: function (event, callback) {
let list = this.events[event] || (this.events[event] = []);
list.push({ isAsync: true, callback });

return callback;
},
@@ -12,7 +19,9 @@ module.exports = {
let list = this.events[event] || [];
let lLen = list.length;
for (let i = 0; i < lLen; i++) {
if (list[i] === callback) {
const { callback: lCallback } = list[i];

if (lCallback === callback) {
list.splice(i, 1);
i--;
lLen--;
@@ -23,22 +32,25 @@ module.exports = {
delete this.events[event];
},

emit: function (event) {
emit: async function (event) {
let args = [].slice.call(arguments, 1);

let list = this.events[event];
if (!list)
return;

let len = list.length;
for (let i = 0; i < len; i++) {
let l = list[i];
l.apply(null, args);
for (let l of list) {
const { isAsync, callback } = l;

if (isAsync)
await callback.apply(null, args);
else
callback.apply(null, args);
}
},

//In the future, all events should be non sticky
emitNoSticky: function (event) {
emitNoSticky: async function (event) {
let args = [].slice.call(arguments, 1);

let list = this.events[event];
@@ -47,8 +59,8 @@ module.exports = {

let len = list.length;
for (let i = 0; i < len; i++) {
let l = list[i];
l.apply(null, args);
const { callback } = list[i];
callback.apply(null, args);
}
}
};

Loading…
Cancel
Save