import { app } from "../App";
import { GUI } from "../ui/UIConfig";

const RData = (data:any,isTips:boolean = true) => {
    if(data.data.state == 200){
        return data.data.data;
    }else{
        //弹出提示
        if(isTips){
            app.layer.Open(GUI.Tips,{text:data.data.msg});
        }
        return data.data.data;
    }
}

export interface NewsContext{
    state:number,
    msg:string,
    data:any,
}
export interface UserVO{
    userId:number,      //玩家Id
    userName:string,    //玩家名称
    userPass:string,    //玩家密码
}
export interface UserLoginVO{
    token:string,       //token
    user:UserVO,        //玩家信息
}
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
    petGrade: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[], //获取玩家全部宠物  
}