提交锻造装备

This commit is contained in:
PC-20230316NUNE\Administrator
2024-01-09 18:32:21 +08:00
parent 61767ea93f
commit 14f1059337
36 changed files with 4461 additions and 1280 deletions

View File

@@ -32,10 +32,10 @@ import { Component } from "cc";
// let WsPath = `ws://localhost:8080/websocket`
// let APIPath = `http://192.168.1.23:8080`
// let WsPath = `ws://192.168.1.23:8080/websocket`
let APIPath = `http://192.168.0.119:8080`
let WsPath = `ws://192.168.0.119:8080/websocket`
// let APIPath = `https://api.pet.jisol.cn`
// let WsPath = `wss://api.pet.jisol.cn/websocket`
// let APIPath = `http://192.168.0.119:8080`
// let WsPath = `ws://192.168.0.119:8080/websocket`
let APIPath = `https://api.pet.jisol.cn`
let WsPath = `wss://api.pet.jisol.cn/websocket`
//重写UI
class JNGLayer extends JNLayer{

View File

@@ -108,7 +108,7 @@ export interface PetEquip{
equipCfgId:number; //装备配置表Id
equipPlayerId:number; //装备的所属玩家Id
equipLevel:number; //装备等级
equipWear:number; //当前装备穿戴的宠物Id
equipPetId:number; //当前装备穿戴的宠物Id
equipPosition:number; //装备部位
equipBaseAttributes:GAttribute[]; //基础属性
@@ -160,7 +160,8 @@ export const API = {
PetEquipAll: async () => RData(await app.api.get(`/game/equip/all`),false) as PetEquip[], //获取全部装备
PetEquipForging: async () => RData(await app.api.get(`/game/equip/forging`),true) as PetEquip, //锻造装备
PetEquipForgingInfo: async () => RData(await app.api.get(`/game/equip/forging/info`),true) as EquipForgingBench, //锻造台
PetEquipForgingPetId: async (petId) => RData(await app.api.post(`/game/equip/forging/petId/${petId}`),true) as EquipForgingBench, //设置锻造宠
PetEquipForgingPetId: async (petId:number) => RData(await app.api.post(`/game/equip/forging/petId/${petId}`),true) as EquipForgingBench, //设置锻造宠
PetEquipWear: async (petId:number,equipId:number) => RData(await app.api.post(`/game/equip/wear/${petId}/${equipId}`),true) as PetEquip, //穿戴装备
}

View File

@@ -1,11 +1,14 @@
import { app } from "../App";
import { API, EquipForgingBench, PetEquip } from "../consts/API";
import { GUI } from "../ui/UIConfig";
import BaseData from "./BaseData";
import PlayerPetData from "./PlayerPetData";
export enum PetEquipDataEnum{
//更新锻造数据
UPDATE_FORGING_INFO = "PetEquipDataEnum_UPDATE_FORGING_INFO"
UPDATE_FORGING_INFO = "PetEquipDataEnum_UPDATE_FORGING_INFO",
//更新装备
UPDATE_EQUIP = "PetEquipDataEnum_UPDATE_EQUIP"
}
//宠物装备数据类
@@ -39,6 +42,8 @@ export default class PetEquipData extends BaseData{
//添加装备
addEquip(equip:PetEquip):PetEquip{
if(!equip) return null;
console.log("添加装备",equip)
if(this.equips.filter(item => item.equipId == equip.equipId).length) return null;
this.equips.push(equip);
return equip;
@@ -49,5 +54,30 @@ export default class PetEquipData extends BaseData{
this.onUpdateInfo(await API.PetEquipForgingPetId(petId));
}
//穿戴指定装备
async wear(equip:PetEquip){
if(this.equips.indexOf(equip) < 0) {
app.layer.Open(GUI.Tips,{text:"装备不存在"});
return;
}
let info = await API.PetEquipWear(this.info.forgingPetId,equip.equipId);
if(info){
//脱下之前的装备
this.equips.forEach(item => {
if(info.equipPetId == item.equipPetId && item.equipPosition == info.equipPosition){
item.equipPetId = 0;
}
})
Object.assign(equip,info);
app.event.emit(PetEquipDataEnum.UPDATE_EQUIP);
}
}
//获取指定宠物指定位置的装备
getPetEquip(position:number,petId:number = this.info.forgingPetId){
if(!petId) return null;
return this.equips.filter(equip => (equip.equipPetId == petId && equip.equipPosition == position))[0];
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "a0d20e14-a205-48d3-95dd-f71e12fa8c90",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "c812a98a-a4a0-4532-9e20-0ef06f3e7dfd",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,46 @@
import { _decorator, Component, Node } from 'cc';
import { PetEquip } from '../../../../consts/API';
import { Sprite } from 'cc';
import TbResource, { IconTypeEnum } from '../../../../tools/TbResource';
import { TD } from '../../../../App';
const { ccclass, property } = _decorator;
@ccclass('PetEquipIcon')
export class PetEquipIcon extends Component {
@property(Sprite)
sprite:Sprite;
@property(Sprite)
quality:Sprite;
@property(Node)
notEquip:Node;
info:PetEquip;
onLoad(){
this.onUpdateView();
}
//刷新页面
onUpdateView(){
this.notEquip.active = true;
if(!this.info) return;
this.notEquip.active = false;
let config = TD.TbGRoleEquip.get(this.info.equipCfgId);
TbResource.loadSpriteIcon(IconTypeEnum.,config.icon,this.sprite,this);
TbResource.loadSpriteIcon(IconTypeEnum.,config.quality,this.quality,this);
}
//设置icon
set(info:PetEquip){
this.info = info;
this.onUpdateView();
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "1f9cc690-e93d-4bf5-9f20-57b3e6260078",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,18 @@
import { _decorator, Component, Node } from 'cc';
import JNScrollViewItem from '../../../../../../extensions/ngame/assets/ngame/util/components/scrollview/JNScrollViewItem';
import { PetEquipIcon } from './PetEquipIcon';
import { PetEquip } from '../../../../consts/API';
const { ccclass, property } = _decorator;
@ccclass('PetEquipIconScroll')
export class PetEquipIconScroll extends JNScrollViewItem<PetEquip> {
@property(PetEquipIcon)
equip:PetEquipIcon;
protected start(): void {
this.equip.set(this.data);
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "b40b93a6-3413-486c-9c11-999a1ebd13dc",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "ea6ccaca-bcbf-429f-ba9d-1de28ad6bef1",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,40 @@
import { sp } from 'cc';
import { _decorator, Component, Node } from 'cc';
import { app } from '../../../../App';
import { UIPetAnim } from '../../../../consts/GData';
import { TB } from '../../../../config/data/schema';
import TbResource, { IconTypeEnum } from '../../../../tools/TbResource';
import { Sprite } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('TablePetEquipIcon')
export class TablePetEquipIcon extends Component {
@property(Sprite)
sprite:Sprite;
@property(Sprite)
quality:Sprite;
info:TB.TbGRoleEquip;
onLoad(){
this.onUpdateView();
}
//刷新页面
onUpdateView(){
TbResource.loadSpriteIcon(IconTypeEnum.,this.info.icon,this.sprite,this);
TbResource.loadSpriteIcon(IconTypeEnum.,this.info.quality,this.quality,this);
}
//设置icon
set(info:TB.TbGRoleEquip){
this.info = info;
this.onUpdateView();
}
}

View File

@@ -0,0 +1 @@
{"ver":"4.0.23","importer":"typescript","imported":true,"uuid":"2e44b1ff-825e-49f4-b810-ea7a722d9d14","files":[],"subMetas":{},"userData":{}}

View File

@@ -5,6 +5,7 @@ import { GUI } from '../../UIConfig';
import { API, PlayerPetOV } from '../../../consts/API';
import { PetIconSelectShow } from '../../Consts/Pet/PetIconSelectShow';
import PlayerPetData from '../../../data/PlayerPetData';
import { PetEquipIcon } from '../../Consts/PetEquip/icon/PetEquipIcon';
const { ccclass, property } = _decorator;
@@ -16,25 +17,41 @@ export class MainForgingBench extends Component {
@property(PetIconSelectShow)
petView:PetIconSelectShow;
//装备列表
@property(Node)
equips:Node;
onLoad(){
this.onUpdateView();
//监听锻造数据
app.event.on(PetEquipDataEnum.UPDATE_FORGING_INFO,this.onUpdateForging,this);
app.event.on(PetEquipDataEnum.UPDATE_EQUIP,this.onUpdateEquip,this);
this.onUpdateView();
}
protected onDestroy(): void {
app.event.off(PetEquipDataEnum.UPDATE_FORGING_INFO,this.onUpdateForging,this);
app.event.off(PetEquipDataEnum.UPDATE_EQUIP,this.onUpdateEquip,this);
}
onUpdateView(){
this.onUpdateForging();
this.onUpdateEquip();
}
//刷新装备
onUpdateEquip(){
this.equips.getComponentsInChildren(PetEquipIcon).forEach((equip,index) => {
equip.set(PetEquipData.getIns().getPetEquip(index + 1));
})
}
//刷新锻造数据
onUpdateForging(){
console.log("刷新锻造数据",PlayerPetData.getIns().petIdQueryPetInfo(PetEquipData.getIns().info.forgingPetId));
this.petView.set(PlayerPetData.getIns().petIdQueryPetInfo(PetEquipData.getIns().info.forgingPetId));
}

View File

@@ -110,6 +110,11 @@ export class MainView extends JNGLayerBase {
app.layer.Open(GUI.Debugger);
}
//打开宠物装备
onClickPetEquip(){
app.layer.Open(GUI.PetEquipView);
}
//点击下一关
async onClickNextLevel(){
GOnHookManager.getIns().onNextLevel();

View File

@@ -6,7 +6,9 @@ import { resources } from 'cc';
import { SpriteFrame } from 'cc';
import TbResource, { IconTypeEnum } from '../../tools/TbResource';
import { TB } from '../../config/data/schema';
import { TD } from '../../App';
import { app, TD } from '../../App';
import { TablePetEquipIcon } from '../Consts/PetEquip/table/TablePetEquipIcon';
import PetEquipData from '../../data/PetEquipData';
const { ccclass, property } = _decorator;
//弹出锻造装备页面
@@ -14,18 +16,31 @@ const { ccclass, property } = _decorator;
export class PetEquipForgingPopupView extends JNLayerBase {
//装备展示
@property(Sprite)
icon:Sprite;
@property(TablePetEquipIcon)
icon:TablePetEquipIcon;
info:PetEquip;
onJNLoad(info:PetEquip){
super.onJNLoad(info);
let config = TD.TbGRoleEquip.get(info.equipCfgId);
TbResource.loadSpriteIcon(IconTypeEnum.,config.icon,this.icon,this);
this.info = info;
this.onUpdateView();
}
onUpdateView(){
let config = TD.TbGRoleEquip.get(this.info.equipCfgId);
this.icon.set(config);
}
//点击穿戴装备
async onClickWear(){
await PetEquipData.getIns().wear(this.info);
app.layer.CloseNode(this.node);
}
}

View File

@@ -0,0 +1,32 @@
import { _decorator, Component, Node } from 'cc';
import JNLayerBase from '../../../../extensions/ngame/assets/ngame/ui/base/JNLayerBase';
import JNScrollView from '../../../../extensions/ngame/assets/ngame/util/components/scrollview/JNScrollView';
import PetEquipData from '../../data/PetEquipData';
const { ccclass, property } = _decorator;
@ccclass('PetEquipView')
export class PetEquipView extends JNLayerBase {
//装备列表
@property(JNScrollView)
list:JNScrollView
onJNLoad(data?: any): void {
super.onJNLoad(data);
}
onJNLoadAnimEnd(): void {
console.log("onJNLoadAnimEnd");
super.onJNLoadAnimEnd();
this.onUpdateView();
}
onUpdateView(){
this.list.refreshData(PetEquipData.getIns().equips);
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "810896a7-3d3c-4343-98a3-62a3ab77b732",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -30,6 +30,7 @@ export enum GUI{
PetUpStarView = "PetUpStarView", //宠物升星页面
PetRadioView = "PetRadioView", //宠物单选页面
PetEquipForgingPopupView = "PetEquipForgingPopupView", //弹出锻造宠物装备页面
PetEquipView = "PetEquipView", //宠物装备页面
/**游戏模式页面 */
@@ -128,6 +129,11 @@ const UIPetConfig:{ [key: string]: JNLayerInfo; } = {
uri: "prefab/ui/宠物装备/弹出锻造装备页面",
anims:BackOutScale,
},
[GUI.PetEquipView]:{
layer:GLayer.Popup,
uri: "prefab/ui/宠物装备/宠物装备背包页面",
anims:BackOutScale,
},
}