675 lines
20 KiB
JavaScript
675 lines
20 KiB
JavaScript
var Utils = require("Utils");
|
||
var gameConfig = require("gameConfig");
|
||
var NetManage = require("NetManage");
|
||
var SDKManage = require("SDKManage");
|
||
var Main = require("Main");
|
||
var jcshare = require("jcfw").share;
|
||
var playerData = function () {
|
||
this.init = function () {
|
||
this.itemtype = {
|
||
hero: 3,
|
||
heroskin: 4,
|
||
};
|
||
this.node_id = 1;
|
||
this.worldtime = 0;
|
||
this.skinmap = {};
|
||
|
||
this.gold = 0;
|
||
this.diamond = 0;
|
||
this.hero_id = 0;
|
||
this.head_id = "0";
|
||
this.head_frame = 0;
|
||
this.level = 1;
|
||
this.exp = 0;
|
||
this.max_exp = 100;
|
||
this.name = "guest";
|
||
this.head_list = [];
|
||
this.head_frame_list = [];
|
||
|
||
this.goods_list = [];
|
||
this.hero_list = [];
|
||
this.skin_list = [];
|
||
this.item_list = [];
|
||
this.talent_list = [];
|
||
this.season = {};
|
||
this.rank = 1;
|
||
|
||
this.getopenhero();
|
||
};
|
||
this.property = function (obj) {
|
||
if (obj.user_info) {
|
||
this.refreshInfo(obj.user_info);
|
||
|
||
if (
|
||
obj.user_info.head_id ||
|
||
obj.user_info.name ||
|
||
obj.user_info.head_frame
|
||
) {
|
||
cc.chatMgr.sendmsg("CMUpdateUserInfo", {
|
||
nickname: this.name,
|
||
avatar_url: this.head_id,
|
||
head: Number(this.head_frame),
|
||
});
|
||
}
|
||
|
||
cc.Notifier.emit("refreshBaseInfo");
|
||
}
|
||
if (obj.container_chg) {
|
||
for (var i = 0; i < obj.container_chg.length; i++) {
|
||
var bd = obj.container_chg[i];
|
||
if (bd == "bag") {
|
||
NetManage.getItemList();
|
||
} else if (bd == "hero") {
|
||
NetManage.getHeroList();
|
||
} else if (bd == "heroSkin") {
|
||
NetManage.getSkinList();
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
this.refreshInfo = function (obj) {
|
||
for (var k in obj) {
|
||
this[k] = obj[k];
|
||
}
|
||
};
|
||
|
||
this.getRankList = function (obj) {
|
||
this.ranking_list = obj.ranking_list;
|
||
};
|
||
|
||
this.getSeasonInfo = function (obj) {
|
||
this.season = obj.info;
|
||
cc.Notifier.emit("ongetSeasonInfo");
|
||
};
|
||
this.getDiscountList = function (obj) {
|
||
this.this.goods_list = obj.goods_list;
|
||
};
|
||
this.getHeroList = function (obj) {
|
||
this.hero_list = obj.hero_list;
|
||
cc.Notifier.emit("ongetHeroList");
|
||
};
|
||
this.getSkinList = function (obj) {
|
||
this.skin_list = obj.skin_list;
|
||
cc.Notifier.emit("ongetSkinList");
|
||
};
|
||
this.getItemList = function (obj) {
|
||
this.item_list = obj.item_list;
|
||
cc.Notifier.emit("ongetItemList");
|
||
};
|
||
this.gettalentList = function (obj) {
|
||
this.talent_list = obj.talent_list;
|
||
cc.Notifier.emit("ontalent_list");
|
||
};
|
||
|
||
this.getDrop = function (dropid) {
|
||
var cfg = gameConfig.dropConfig[dropid];
|
||
if (!cfg.itemdata) {
|
||
cfg.itemdata = [];
|
||
var itemarr = (cfg.item_id + "").split("|");
|
||
var numarr = (cfg.num + "").split("|");
|
||
for (var i = 0; i < itemarr.length; i++) {
|
||
cfg.itemdata.push({
|
||
id: itemarr[i],
|
||
num: numarr[i],
|
||
});
|
||
}
|
||
}
|
||
return cfg.itemdata;
|
||
};
|
||
|
||
this.getItemsByType = function (type) {
|
||
var arr = [];
|
||
for (var i = 0; i < this.item_list.length; i++) {
|
||
if (
|
||
gameConfig.all_ItemConfig[this.item_list[i].item_id].tab == type ||
|
||
type == 0
|
||
) {
|
||
arr.push(this.item_list[i]);
|
||
}
|
||
}
|
||
return arr;
|
||
};
|
||
|
||
this.getItemCount = function (id) {
|
||
if (id == 10001) {
|
||
return this.gold;
|
||
} else if (id == 10002) {
|
||
return this.diamond;
|
||
} else {
|
||
for (var i = 0; i < this.item_list.length; i++) {
|
||
if (this.item_list[i].item_id == id) {
|
||
return this.item_list[i].item_num;
|
||
}
|
||
}
|
||
}
|
||
return 0;
|
||
};
|
||
|
||
this.checkItemEnough = function (id, v) {
|
||
v = Number(v);
|
||
id = Number(id);
|
||
if (id == 10001) {
|
||
return this.gold >= v;
|
||
} else if (id == 10002) {
|
||
return this.diamond >= v;
|
||
} else {
|
||
for (var i = 0; i < this.item_list.length; i++) {
|
||
if (this.item_list[i].item_id == id) {
|
||
return this.item_list[i].item_num >= v;
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
|
||
this.getLearnedTalent = function (id) {
|
||
for (var i = 0; i < this.talent_list.length; i++) {
|
||
if (this.talent_list[i].talent_id == id) {
|
||
return this.talent_list[i];
|
||
}
|
||
}
|
||
if (this.level >= this.xinpian[id][0].need_user_level) {
|
||
return {
|
||
talent_id: id,
|
||
talent_lv: 1,
|
||
};
|
||
}
|
||
|
||
return null;
|
||
};
|
||
this.getDiscount = function (id) {
|
||
for (var i = this.goods_list.length - 1; i >= 0; i--) {
|
||
if (this.goods_list[i].item_id == id) {
|
||
return [
|
||
this.goods_list[i].gold_discount,
|
||
this.goods_list[i].diamond_discount,
|
||
];
|
||
}
|
||
}
|
||
return [100, 100];
|
||
};
|
||
this.getshowhero = function () {
|
||
return this.getheroSkinbyId(this.hero_id, 0);
|
||
};
|
||
this.getskinarrbyId = function (id) {
|
||
return this.skinmap[id].skins;
|
||
};
|
||
this.getheroSkinbyId = function (hid, idx) {
|
||
var skinArr = this.skinmap[hid].skins;
|
||
var skinid = skinArr[idx];
|
||
var skincfg = gameConfig.all_ItemConfig[skinid];
|
||
var skinres = skincfg.skinid;
|
||
return skinres;
|
||
};
|
||
|
||
this.getheroSkinidbyId = function (hid, idx) {
|
||
var skinArr = this.skinmap[hid].skins;
|
||
var skinid = skinArr[idx];
|
||
return Number(skinid);
|
||
};
|
||
this.checkhasgetskin = function (sid) {
|
||
if (gameConfig.all_ItemConfig[sid].isdefaultskin) {
|
||
return true;
|
||
}
|
||
|
||
for (var i = this.skin_list.length - 1; i >= 0; i--) {
|
||
if (this.skin_list[i].skin_id == sid) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
this.checkhasgethero = function (hid) {
|
||
for (var i = this.hero_list.length - 1; i >= 0; i--) {
|
||
if (this.hero_list[i].hero_id == hid) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
|
||
this.getopenhero = function () {
|
||
if (!this.openherolist) {
|
||
this.openherolist = [];
|
||
for (var k in gameConfig.all_ItemConfig) {
|
||
var cfg = gameConfig.all_ItemConfig[k];
|
||
if (cfg.type == this.itemtype.hero && cfg.getway) {
|
||
this.openherolist.push(cfg.id);
|
||
}
|
||
if (cfg.type == this.itemtype.heroskin && cfg.getway) {
|
||
if (!this.skinmap[cfg.playerid]) {
|
||
this.skinmap[cfg.playerid] = {
|
||
skins: [],
|
||
};
|
||
}
|
||
this.skinmap[cfg.playerid].skins.push(cfg.id);
|
||
if (cfg.isdefaultskin) {
|
||
this.skinmap[cfg.playerid].defaultskin = cfg.id;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
for (var k in this.skinmap) {
|
||
this.skinmap[k].skins = this.skinmap[k].skins.sort((a, b) => {
|
||
var c = 0;
|
||
if (a == this.skinmap[k].defaultskin) {
|
||
c = -99999;
|
||
}
|
||
if (b == this.skinmap[k].defaultskin) {
|
||
c = 99999;
|
||
}
|
||
return a - b + c;
|
||
});
|
||
}
|
||
|
||
return this.openherolist;
|
||
};
|
||
this.getheroskill = function (hid) {
|
||
var cfg = gameConfig.playerConfig[hid];
|
||
var skill1 = Number(cfg.skill1list.split("|")[0]);
|
||
var skill2 = Number(cfg.skill2list.split("|")[0]);
|
||
var skill3 = cfg.skill3list;
|
||
return [skill1, skill2, skill3];
|
||
};
|
||
this.changeHero = function (hid) {
|
||
this.nowheroid = hid;
|
||
this.nowherocfg = gameConfig.playerConfig[hid];
|
||
this.skinArr = (this.nowherocfg.skinlist + "").split("|");
|
||
this.skinid = this.skinmap[hid].defaultskin; //this.skinArr[0]
|
||
|
||
this.skill1 = Number(this.nowherocfg.skill1list.split("|")[0]);
|
||
this.skill2 = Number(this.nowherocfg.skill2list.split("|")[0]);
|
||
this.skill3 = this.nowherocfg.skill3list;
|
||
|
||
this.changeSkin(this.skinid);
|
||
};
|
||
this.changeSkin = function (v) {
|
||
this.skinid = v;
|
||
this.skincfg = gameConfig.all_ItemConfig[v];
|
||
this.skinres = this.skincfg.skinid;
|
||
};
|
||
|
||
this.getTime = function (obj) {
|
||
var date = new Date();
|
||
this.sertime = obj.time - date.getTime() / 1000;
|
||
this.sertimestr = obj.time;
|
||
};
|
||
|
||
this.getNodeID = function (obj) {
|
||
if (obj.errcode == 0) {
|
||
this.node_id = obj.node_id;
|
||
cc.SDKManage.NodeId = obj.node_id;
|
||
console.log("获得NodeID====", cc.SDKManage.NodeId);
|
||
}
|
||
};
|
||
|
||
this.dirtyWordCheck = function (obj) {
|
||
cc.Notifier.emit("dirtywordcheck", obj);
|
||
};
|
||
this.getbattleskilllist = function () {
|
||
return [
|
||
{
|
||
key: this.skill1,
|
||
value: 0,
|
||
},
|
||
{
|
||
key: this.skill2,
|
||
value: 0,
|
||
},
|
||
{
|
||
key: this.skill3,
|
||
value: 0,
|
||
},
|
||
];
|
||
};
|
||
|
||
this.getbattleopt = function () {
|
||
return {
|
||
account_id: SDKManage.account_id, //账号id account_id
|
||
player_count: 4, //玩家数(单人时为1)
|
||
energy_shield: 0, //能量护盾
|
||
baseskin: [this.skinres, 0, 0, 0],
|
||
team_uuid: "", //队伍唯一id (没组队时为空字符串)
|
||
team_mode: 1, //队伍模式 0:单人 1:多人
|
||
auto_fill: true, //是否自动填充玩家
|
||
|
||
// team_members: _teamMembers,
|
||
weapons: [],
|
||
first_game: false,
|
||
skins: [],
|
||
prepare_items: [], // 12809
|
||
prepare_items2: [],
|
||
atk_add: 0,
|
||
battlecount: 1,
|
||
pre_settlement_info: "",
|
||
emojis: ["1", "2", "3", "4", "5", "6"],
|
||
show_team_ui: 1,
|
||
//offline: true,
|
||
newbiemode: false,
|
||
mapid: 1008,
|
||
sex: 2,
|
||
skill_list: [
|
||
{
|
||
key: this.skill1,
|
||
value: 0,
|
||
},
|
||
{
|
||
key: this.skill2,
|
||
value: 0,
|
||
},
|
||
{
|
||
key: this.skill3,
|
||
value: 0,
|
||
},
|
||
],
|
||
hero_id: this.nowheroid,
|
||
};
|
||
};
|
||
|
||
this.init2 = function () {
|
||
var cfg = gameConfig.gunTalentGrow;
|
||
this.xinpian = {};
|
||
for (var k in cfg) {
|
||
var onecfg = cfg[k];
|
||
if (!this.xinpian[onecfg.talent_id]) {
|
||
this.xinpian[onecfg.talent_id] = [];
|
||
}
|
||
this.xinpian[onecfg.talent_id].push(onecfg);
|
||
}
|
||
|
||
for (var kk in this.xinpian) {
|
||
this.xinpian[kk] = this.xinpian[kk].sort((a, b) => {
|
||
var aa = a.talent_lv;
|
||
var bb = b.talent_lv;
|
||
return aa - bb;
|
||
});
|
||
}
|
||
|
||
var cfg2 = gameConfig.all_ItemConfig;
|
||
gameConfig.skintohero = {};
|
||
for (var k in cfg2) {
|
||
var onecfg = cfg2[k];
|
||
if (onecfg.skinid) {
|
||
gameConfig.skintohero[onecfg.skinid] = onecfg.playerid;
|
||
}
|
||
}
|
||
};
|
||
|
||
this.debug = function (tp, v, v2) {
|
||
if (tp == 1) {
|
||
var itemcfg = gameConfig.all_ItemConfig[v];
|
||
if (itemcfg.type == this.itemtype.hero) {
|
||
if (!this.checkhasgethero(v)) {
|
||
this.hero_list.push({
|
||
hero_id: v,
|
||
});
|
||
}
|
||
} else if (itemcfg.type == this.itemtype.heroskin) {
|
||
if (!this.checkhasgetskin(v)) {
|
||
this.skin_list.push({
|
||
skin_id: v,
|
||
});
|
||
}
|
||
}
|
||
|
||
cc.Notifier.emit("herochange");
|
||
} else if (tp == 2) {
|
||
var hasfind = false;
|
||
for (var i = 0; i < this.talent_list.length; i++) {
|
||
if (this.talent_list[i].talent_id == v) {
|
||
this.talent_list[i].talent_lv++;
|
||
hasfind = true;
|
||
}
|
||
}
|
||
if (!hasfind) {
|
||
this.talent_list.push({
|
||
talent_id: v,
|
||
talent_lv: 2,
|
||
});
|
||
}
|
||
|
||
cc.Notifier.emit("talent_lvup", v);
|
||
} else if (tp == 3) {
|
||
for (var i = this.item_list.length - 1; i >= 0; i--) {
|
||
if (this.item_list[i].item_id == v) {
|
||
this.item_list[i].item_num -= v2;
|
||
if (this.item_list[i].item_num == 0) {
|
||
this.item_list.splice(i, 1);
|
||
}
|
||
}
|
||
if (v2) {
|
||
this.nickname = v2;
|
||
}
|
||
}
|
||
|
||
cc.Notifier.emit("refreshitem");
|
||
} else if (tp == 4) {
|
||
v();
|
||
} else if (tp == 5) {
|
||
this.ranking_list = {
|
||
//排行榜数据
|
||
type: 0, //排行榜类型 1:积分榜
|
||
ranking_list: [
|
||
//排行榜
|
||
{
|
||
ranked: 1, //排名
|
||
account_id: "1122", //账号id
|
||
name: "aaa", //用户名字
|
||
head_id: 50003, //头像id
|
||
head_frame: 60001, //头像框id
|
||
level: 10, //等级
|
||
exp: 0, //经验
|
||
gold: 0, //金币
|
||
diamond: 0, //钻石
|
||
hero_id: 30100, //当前使用的英雄ID
|
||
rank: 11, //段位
|
||
score: 220, //积分
|
||
},
|
||
{
|
||
ranked: 2, //排名
|
||
account_id: "3344", //账号id
|
||
name: "aaa", //用户名字
|
||
head_id: 50003, //头像id
|
||
head_frame: 60001, //头像框id
|
||
level: 10, //等级
|
||
exp: 0, //经验
|
||
gold: 0, //金币
|
||
diamond: 0, //钻石
|
||
hero_id: 30300, //当前使用的英雄ID
|
||
rank: 11, //段位
|
||
score: 220, //积分
|
||
},
|
||
],
|
||
my_ranked: {
|
||
//我的排名(如果ranked<1则表示自己未上榜)
|
||
ranked: 0, //排名
|
||
account_id: "", //账号id
|
||
name: "ssss", //用户名字
|
||
head_id: 0, //头像id
|
||
head_frame: 0, //头像框id
|
||
level: 20, //等级
|
||
exp: 0, //经验
|
||
gold: 0, //金币
|
||
diamond: 0, //钻石
|
||
hero_id: 30200, //当前使用的英雄ID
|
||
rank: 12, //段位
|
||
score: 110, //积分
|
||
},
|
||
};
|
||
v();
|
||
} else if (tp == 6) {
|
||
v();
|
||
} else if (tp == 7) {
|
||
v({
|
||
errcode: 0, //错误码
|
||
errmsg: "", //错误描述
|
||
info: {
|
||
//用户信息(详细)
|
||
activate: 0, //是否已激活
|
||
account_id: "", //账号id
|
||
name: "阿拉伯", //用户名字
|
||
head_id: 50003, //头像id
|
||
head_frame: 60001, //头像框id
|
||
level: 10, //等级
|
||
exp: 30, //经验
|
||
max_exp: 90, //经验(上限)
|
||
gold: 0, //金币
|
||
diamond: 0, //钻石
|
||
hero_id: 30200, //当前使用的英雄ID
|
||
current_rank: 10, //当前段位
|
||
history_best_rank: 11, //历史最高段位
|
||
history_seasons: [
|
||
//历史打过的赛季列表
|
||
{
|
||
season_id: 22, //赛季
|
||
total_kills: 10, //击杀总数(个人信息)
|
||
game_times: 20, //游戏场次(个人信息)
|
||
win_times: 30, //胜利场次(个人信息)
|
||
win_rate: 40, //胜率(个人信息,百分比数值整数部分)
|
||
max_kills: 50, //最高击杀(游戏信息)
|
||
avg_kills: 60, //平均击杀(游戏信息)
|
||
max_damage_out: 70, //最高伤害输出(游戏信息)
|
||
avg_damage_out: 80, //平均伤害输出(游戏信息)
|
||
star_kills: 50, //击败(5纬图-击败, 百分比数值整数部分)
|
||
star_damage: 60, //伤害(5纬图-伤害, 百分比数值整数部分)
|
||
star_alive: 70, //生存(5纬图-生存, 百分比数值整数部分)
|
||
star_recover: 80, //治疗(5纬图-治疗, 百分比数值整数部分)
|
||
star_win: 100, //胜利(5纬图-胜利, 百分比数值整数部分)
|
||
},
|
||
],
|
||
},
|
||
});
|
||
} else if (tp == 8) {
|
||
var tdata = {
|
||
errcode: 0, //错误码
|
||
errmsg: "", //错误描述
|
||
current_active_value: 30, //当前活跃度
|
||
max_active_value: 100, //活跃度上限
|
||
mission_list1: [
|
||
//任务列表1
|
||
{
|
||
mission_id: 71001, //任务id
|
||
current: 0, //任务进度-当前
|
||
target: 0, //任务进度-目标
|
||
state: 0, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 0, //是否显示任务进度
|
||
},
|
||
{
|
||
mission_id: 71003, //任务id
|
||
current: 5, //任务进度-当前
|
||
target: 5, //任务进度-目标
|
||
state: 1, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 1, //是否显示任务进度
|
||
},
|
||
{
|
||
mission_id: 71006, //任务id
|
||
current: 2, //任务进度-当前
|
||
target: 5, //任务进度-目标
|
||
state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 1, //是否显示任务进度
|
||
},
|
||
{
|
||
mission_id: 71006, //任务id
|
||
current: 2, //任务进度-当前
|
||
target: 5, //任务进度-目标
|
||
state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 2, //是否显示任务进度
|
||
},
|
||
{
|
||
mission_id: 71006, //任务id
|
||
current: 2, //任务进度-当前
|
||
target: 5, //任务进度-目标
|
||
state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 2, //是否显示任务进度
|
||
},
|
||
],
|
||
mission_list2: [
|
||
//任务列表2
|
||
{
|
||
mission_id: 71001, //任务id
|
||
current: 0, //任务进度-当前
|
||
target: 0, //任务进度-目标
|
||
state: 0, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 0, //是否显示任务进度
|
||
},
|
||
{
|
||
mission_id: 71003, //任务id
|
||
current: 5, //任务进度-当前
|
||
target: 5, //任务进度-目标
|
||
state: 1, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 1, //是否显示任务进度
|
||
},
|
||
{
|
||
mission_id: 71006, //任务id
|
||
current: 2, //任务进度-当前
|
||
target: 5, //任务进度-目标
|
||
state: 2, //任务状态 0:可领取 1:已领取 2:未完成(不可领取)
|
||
show_progress: 1, //是否显示任务进度
|
||
},
|
||
],
|
||
};
|
||
v(tdata);
|
||
} else if (tp == 9) {
|
||
var tdata = {
|
||
errcode: 0, //错误码
|
||
errmsg: "", //错误描述
|
||
info: {
|
||
//struct SeasonCard, 赛季手册信息
|
||
season_id: 5, //赛季id(客户端显示为Sxxx)
|
||
card_lv: 11, //手册等级
|
||
card_exp: 10, //手册经验
|
||
card_max_exp: 100, //手册经验上限
|
||
season_begin_time: 1638951964,
|
||
season_end_time: 1638951964,
|
||
gift_packages: [
|
||
//礼包列表
|
||
//struct SeasonCardGiftPackage
|
||
{
|
||
package_id: 0, //礼包id
|
||
state: 0, //0:未购买 1:已购买
|
||
price_info: {
|
||
//struct PriceInfo, 价格信息
|
||
cost_list: [
|
||
//扣费方式列表
|
||
//struct CostInfo
|
||
{
|
||
cost_group: [
|
||
//一组扣费项目,(金币、钻石视为道具,可能有多种价格)
|
||
//struct CostInfoItem
|
||
{
|
||
item_id: 0, //购买需要消耗的道具id
|
||
item_num: 0, //购买需要消耗的道具数量
|
||
discount: 0, //折扣百分比(0-100)
|
||
},
|
||
],
|
||
},
|
||
],
|
||
discount_begin_time: 0, //折扣开始时间(utc时间)
|
||
discount_end_time: 0, //折扣结束时间(utc时间)
|
||
},
|
||
},
|
||
],
|
||
received_level_rewards1: [
|
||
//等级解锁的奖励已领取等级列表(普通手册)
|
||
1, 2, 3,
|
||
],
|
||
received_level_rewards2: [
|
||
//等级解锁的奖励已领取等级列表(精英)
|
||
1, 2, 3, 4,
|
||
],
|
||
},
|
||
};
|
||
v(tdata.info);
|
||
} else if (tp == 10) {
|
||
v();
|
||
}
|
||
};
|
||
};
|
||
var instance = new playerData();
|
||
instance.init();
|
||
instance.init2();
|
||
cc.playerData = instance;
|
||
module.exports = instance;
|