| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- import { Log } from "../core/utils/Log";
- import { Data } from "./Data";
- /**
- * 游戏数据
- */
- export class GameData extends Data {
- public openRecommend = false;
- // /**当天邀请次数 */
- // public now_invite_num = 0;
- // /**当天播放视频次数 */
- // public now_play_video_num = 0;
- /**当前购买神将等级 */
- public buyLv: number;
- /**当前购买神将价格 */
- public buyPrice: number;
- /**离线时间 */
- public differTime: number = 0;
- /**离线奖励 */
- public totalOutput: number = 0;
- /**当前拥有神将 */
- public generals: String;
- /**当前拥有未显示神将 */
- private _myGenerals: Array<number> = [];
- /**
- * 飞行宝箱剩余的次数
- */
- public flyBoxTimes: number = 0;
- /**
- * 飞行宝箱领取间隔
- */
- public flyBoxIntervalTime = 1000 * 60 * 2;
- /**本地缓存神将数据 */
- private _myLocalData: { id: number, myLocalGenerals: Array<{ index: number, generalLv: number }> };
- /**切磋剩余免费次数 */
- public battleRemainder: number;
- /**切磋剩余增加次数 */
- public RemainderAddTimes: number;
- /**切磋观看视频增加的次数 */
- public RemainderHadAddTimes: number;
- /**转盘剩余抽奖次数*/
- public drawTimes = 0;
- /**高级抽奖剩余观看视频次数*/
- public videoTimes = 0;
- /**神石提现等级*/
- public diamondWithdrawGrade = 0;
- /**等级红包已领取等级*/
- public lvRedPacket = 0;
- /**
- *我的好友数据
- */
- public myFriendDatas: Array<{ id: number, lv: number, nickName: string, avator: string }> = [];
- /**
- *我的仇人数据
- */
- public myAvengeDatas: Array<{ attackUserID: number, attackUserLv: number, attackUserName: string, attackUserAvator: string, createTime: number }> = [];
- /**
- * 红包数据
- * */
- public myRedPacketDatas: Array<{ id: number, type: number, lv: number, enemyID: number, enemyName: string, enemyAvator: string, enemyLv: number, canOpenTime: number, createTime: number }> = [];
- /**神台数据 */
- public myFissionData: {
- g1Members: Array<{ userID: number, avatar: string, nickName: string, revenueAmount: number, totalRevenueAmount: number, lv: number }>,
- g2Members: Array<{ userID: number, avatar: string, nickName: string, revenueAmount: number, totalRevenueAmount: number, lv: number }>,
- g3Members: Array<{ userID: number, avatar: string, nickName: string, revenueAmount: number, totalRevenueAmount: number, lv: number }>,
- g4Members: Array<{ userID: number, avatar: string, nickName: string, revenueAmount: number, totalRevenueAmount: number, lv: number }>,
- g5Members: Array<{ userID: number, avatar: string, nickName: string, revenueAmount: number, totalRevenueAmount: number, lv: number }>,
- parentUin: number, parentAvatar: string, parentNickname: string
- };
- /**是否更新贡献提现记录 */
- public hasNewwithdrawalLog = true;
- /**贡献提现记录 */
- public withdrawalLogs = [];
- /**被攻击信息 */
- public beAttackDatas: Array<{ attackUserID: number, attackUserName: string, beAttackLossType: number, beAttackLossNum: string }>;
- /**被攻击数据发生改变 */
- // public hasBeAttackUpdate: boolean = false;
- /**切磋数据发生改变 */
- public hasBattleListUpdate: boolean = false;
- /**复仇数据发生改变 */
- public hasAvengeListUpdate: boolean = false;
- /**好友挑战数据改变 */
- public hasBattleLogUpdate: boolean = false;
- /**红包数据发生改变 */
- public hasNewRedPacketUpdate: boolean = false;
- /**1级好友数据发生改变显示用 */
- public hasG1BembersUpdate: boolean = false;
- /**2级好友数据发生改变 */
- public hasG2BembersUpdate: boolean = false;
- /**3级好友数据发生改变 */
- public hasG3BembersUpdate: boolean = false;
- /**4贡献数据发生改变 */
- public hasG4BembersUpdate: boolean = false;
- /**5级好友数据发生改变 */
- public hasG5BembersUpdate: boolean = false;
- /**取消出售神将 */
- public cancleSellGeneral: boolean = false;
- /**出售神将确认 */
- public hasSellGeneral: boolean = false;
- /**出售神将信息 */
- public sellGeneralData: { lv: number, index: number };
- /**是否添加神将*/
- public isAddRole: boolean = false;
- /**战斗结束 */
- public hasBattleOver: boolean = false;
- /**战斗结束刷新切磋数据 */
- public hasBattleOverRefresh: boolean = false;
- /**是否请求过好友数据和复仇数据 */
- public hasRequestFriendData = false;
- /**是否播放加金币音效 */
- public playAddMoneySound = true;
- /**是否在播放金币飞行特效**/
- public isPlayMoneyAnim = false;
- /**分红数据 */
- public gameBonus: { bonusTotalUserNum: number, bonusUserNum: number, bonus: number, logs: { name: string, time: string }[] };
- /**是否播放奖励角色出场动画*/
- public isPlayPrizeRoleAnim = false;
- /**是否在播放金币动画控制消息同步*/
- public isPlayAddMoneyAnim = false;
- /**是否在播放神石动画控制消息同步*/
- public isPlayAddDiamondAnim = false;
- /**是否在购买神将*/
- public isBuying = false;
- /**是否移动神将*/
- public isMoveing = false;
- /**是否正在观看视频*/
- public isPlayVideo = false;
- /**是否要同步数据 */
- public needSyncMoney = false;
- public getMyLocalData(id: number): { id: number, myLocalGenerals: Array<{ index: number, generalLv: number }> } {
- if (!this._myLocalData) {
- this._myLocalData = JSON.parse(localStorage.getItem("myLocalData"));
- if (!this._myLocalData) {// 如果本地没有缓存数据
- this.initLocalData(id);
- }
- else {
- if (this._myLocalData.id != id) {//如果是不同账号
- this.initLocalData(id);
- } else {
- if (!this.initGenerals.length) {
- this._myLocalData.myLocalGenerals = [];
- this.saveLocalData();
- } else {
- if (this._myLocalData.myLocalGenerals.length != this.initGenerals.length) {
- this.initLocalData(id);
- } else {
- if (this.checkGenerals(this._myLocalData.myLocalGenerals.concat(), this.initGenerals.concat())) {
- this.initLocalData(id);
- }
- }
- }
- }
- }
- }
- return this._myLocalData;
- }
- /** 检测服务器和本地神将等级是否一致 */
- private checkGenerals(client_generals, server_generals) {
- for (let i = 0; i < client_generals.length; i++) {
- let hasIndex = server_generals.indexOf(client_generals[i].generalLv);
- if (hasIndex != -1) {
- server_generals.splice(hasIndex, 1)
- }
- }
- return server_generals.length;
- }
- private initLocalData(id: number) {
- this._myLocalData = { id: 0, myLocalGenerals: [] }
- this._myLocalData.id = id;
- for (let i = 0; i < this.initGenerals.length; i++) {
- this._myLocalData.myLocalGenerals.push({ index: i > 11 ? -1 : i, generalLv: this.initGenerals[i] });
- }
- this.saveLocalData();
- }
- /**增加本地神将 */
- public addMyLocalGenral(index: number, lv: number) {
- for (let i = 0; i < this._myLocalData.myLocalGenerals.length; i++) {
- if (index != -1 && this._myLocalData.myLocalGenerals[i].index == index && this._myLocalData.myLocalGenerals[i].generalLv == lv) {
- Log.warn(index + "有值");
- return;
- }
- }
- this._myLocalData.myLocalGenerals.push({ index: index, generalLv: lv });
- this.saveLocalData();
- }
- public deleteMyLocalGenral(index: number, lv: number) {
- for (let i = 0; i < this._myLocalData.myLocalGenerals.length; i++) {
- if (this._myLocalData.myLocalGenerals[i].index == index && this._myLocalData.myLocalGenerals[i].generalLv == lv) {
- this._myLocalData.myLocalGenerals.splice(i, 1);
- return;
- }
- }
- Log.warn("没有找到本地对应的神将");
- }
- public updateLocalGeneral(oldIndex: number, newIndex: number) {
- let oldGen;
- let newGen;
- for (let i = 0; i < this._myLocalData.myLocalGenerals.length; i++) {
- if (this._myLocalData.myLocalGenerals[i].index == oldIndex) {
- oldGen = this._myLocalData.myLocalGenerals[i];
- }
- if (this._myLocalData.myLocalGenerals[i].index == newIndex) {
- newGen = this._myLocalData.myLocalGenerals[i];
- }
- }
- if (oldGen) {
- oldGen.index = newIndex;
- }
- if (newGen) {
- newGen.index = oldIndex;
- }
- this.saveLocalData();
- }
- public saveLocalData() {
- localStorage.setItem("myLocalData", JSON.stringify(this._myLocalData));
- }
- /**初始化服务器拥有神将 */
- private get initGenerals(): Array<number> {
- if (!this._myGenerals.length) {
- let str = this.generals.substring(1, this.generals.length - 1);
- if (!str) {
- this._myGenerals = [];
- } else {
- let arr = str.split(",");
- for (let i = 0; i < arr.length; i++) {
- this._myGenerals.push(Number(arr[i]));
- }
- }
- }
- return this._myGenerals;
- }
- /**更新本地裂变部分贡献值 */
- public updateMyFessiongDatas(data: any, isAdd: boolean = true) {
- for (let k = 0; k < data.length; k++) {
- let newData = data[k];
- let isFind = false;
- for (let i = 1; i < 6; i++) {
- let members = this.myFissionData[`g${i}Members`];
- for (let j = 0; j < members.length; j++) {
- if (members[j].userID == newData.userID) {
- this[`hasG${i}BembersUpdate`] = true;
- isFind = true;
- if (isAdd) {
- members[j].revenueAmount += newData.addRevenueAmount;
- members[j].totalRevenueAmount += newData.addRevenueAmount;//新增贡献
- } else {
- members[j].revenueAmount = 0;
- }
- break;
- }
- }
- if (isFind) {
- break;
- }
- }
- }
- }
- /**一键领取贡献更新本地贡献数据 */
- public clearRevenue() {
- for (let i = 1; i < 6; i++) {
- let members = this.myFissionData[`g${i}Members`];
- for (let j = 0; j < members.length; j++) {
- if (members[j].revenueAmount) {
- this[`hasG${i}BembersUpdate`] = true;
- members[j].revenueAmount = 0;
- }
- }
- }
- }
- /**判断当前是否可领取贡献 红点用*/
- public getAllRevenueAmount() {
- if (this.myFissionData) {
- for (let i = 1; i < 6; i++) {
- let members = this.myFissionData[`g${i}Members`];
- for (let j = 0; j < members.length; j++) {
- if (members[j].revenueAmount > 0) {
- return true;
- }
- }
- }
- }
- return false;
- }
- }
|