mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-27 02:36:14 +00:00
提交锻造装备
This commit is contained in:
@@ -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{
|
||||
|
@@ -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, //穿戴装备
|
||||
|
||||
}
|
||||
|
||||
|
@@ -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];
|
||||
}
|
||||
|
||||
|
||||
}
|
9
JisolGameCocos/assets/script/ui/Consts/PetEquip.meta
Normal file
9
JisolGameCocos/assets/script/ui/Consts/PetEquip.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "a0d20e14-a205-48d3-95dd-f71e12fa8c90",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "c812a98a-a4a0-4532-9e20-0ef06f3e7dfd",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "1f9cc690-e93d-4bf5-9f20-57b3e6260078",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "b40b93a6-3413-486c-9c11-999a1ebd13dc",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "ea6ccaca-bcbf-429f-ba9d-1de28ad6bef1",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1 @@
|
||||
{"ver":"4.0.23","importer":"typescript","imported":true,"uuid":"2e44b1ff-825e-49f4-b810-ea7a722d9d14","files":[],"subMetas":{},"userData":{}}
|
@@ -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));
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
32
JisolGameCocos/assets/script/ui/PetEquip/PetEquipView.ts
Normal file
32
JisolGameCocos/assets/script/ui/PetEquip/PetEquipView.ts
Normal 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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "810896a7-3d3c-4343-98a3-62a3ab77b732",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user