import { app } from "../App"; import PlayerPetData from "../data/PlayerPetData"; import ResourceData from "../data/ResourceData"; import { GUI } from "../ui/UIConfig"; //接受到JSON消息 export const RData = (data:any,isTips:boolean = true) => { if(data.data.state == 200){ //如果有 Resource 字段 表示要刷新资源 if(data.data['resources']){ //刷新资源 data.data['resources'].forEach(res => { ResourceData.getIns().onUpdateOV(res.operation,res.resource); //刷新资源 PlayerPetData.getIns().onUpdateOV(res.operation,res.pet); //刷新宠物 }) } return data.data.data; }else{ //弹出提示 if(isTips){ app.layer.Open(GUI.Tips,{text:data.data.msg}); } return data.data.data; } } //接受到Protobuf export const RProto = (data:any,type:string) => { try{ return app.proto .getType(type) .decode(new Uint8Array(data.data)) as any;; }catch{ app.layer.Open(GUI.Tips,{text:"Protobuf 解析失败"}); } } /************** 请求类 *******************/ export interface NewsContext{ state:number, msg:string, data:any, } //玩家登录返回 export interface UserLoginVO{ token:string, //token user:UserVO, //玩家信息 } /************** 实体类 **************************/ //玩家信息 export interface UserVO{ userId:number, //玩家Id userName:string, //玩家名称 userPass:string, //玩家密码 } //游戏玩家信息 export interface PlayerInfoOV{ playerId:number, //玩家Id userId: number, //用户Id playerName:string, //玩家名 playerCreateTime:number, //玩家创建时间 novice: false, //是否过引导 } //玩家宠物信息 export interface PlayerPetOV{ petId:number, //宠物唯一Id petPlayerId:number; //宠物的玩家Id petTbId:number; //宠物配置表Id petLevel:number; //宠物等级 petStar:number; //宠物星级 petStarExp:number; //宠物星级经验 } //玩家阵法信息 export interface PlayerTacticalOV{ playerId:number, //玩家Id tacticalData:string, //阵法数据 } //玩家资源 export interface ResourceOV{ resourceId:number; //资源Id playerId:number; //玩家Id resourceTbId:number; //资源配置表Id resourceValue:number; //资源数量 } export const API = { UserRegister : async () => RData(await app.api.post(`/user/register`)) as UserVO, //玩家注册 UserLogin : async (account:string,password:string) => RData(await app.api.post(`/user/login`,{userId:account,userPass:password})) as UserLoginVO, //玩家登录 GetPlayerInfo : async () => RData(await app.api.get(`/game/player/info`),false) as PlayerInfoOV, //获取玩家信息 /********** 新手引导接口 *****************/ SavePlayerInfo : async (playerName:string,novice:boolean = true) => (await app.api.post(`/game/player/info/save`,{playerName,novice})).data as NewsContext, //保存玩家信息 SelectNovicePet: async (petId:number) => RData(await app.api.post(`/game/novice/select/${petId}`),true), //选择新手引导宠物 /********** 宠物接口 ******************/ GetPlayerPets: async () => RData(await app.api.get(`/game/pet/list`),false) as PlayerPetOV[], //获取玩家全部宠物 //petId 需合成的Id pets 被合成的Id列表 PetUpStar: async (petId:number,pets:number[]) => RData(await app.api.post(`/game/pet/up/star`,{petId,pets}),true) as PlayerPetOV, //提升宠物星 //petId 升级的宠物Id PetUpLevel: async (petId:number) => RData(await app.api.post(`/game/pet/up/level/${petId}`),true) as PlayerPetOV, //升级宠物 /********** 阵法接口 ******************/ GetPlayerTactical: async () => RData(await app.api.get(`/game/tactical/get`),false) as PlayerTacticalOV, //获取玩家阵法 SetPlayerTactical: async (data:PlayerTacticalOV) => RData(await app.api.post(`/game/tactical/set`,data),false) as PlayerTacticalOV, //更新玩家阵法 /********** 资源接口 ******************/ GetPlayerResource: async () => RData(await app.api.get(`/game/resource/get`),false) as ResourceOV[], //获取玩家资源 }