甘艺伟 1 dag sedan
förälder
incheckning
fdf3dfe3e1

BIN
assets/bundle/FGUI/Home/Home.bin


+ 11 - 0
assets/script/data/model/GridMap/GridMapModel.ts

@@ -106,6 +106,17 @@ export default class GridMapModel extends GridMapModelData {
             });
         }
     }
+    /** 请求格子战斗 */
+    async sendHcSell(gzid: number) {
+        let ret = await GameDataCenter.gameServer.ReqApi("hc/HcSell", { gzid: gzid.toString() });
+        if (ret?.res) {
+            for (let key in ret.res.list) {
+                EventMng.emit(GridEvent.HC_CELL_CHANGE, { idx: Number(key), item: ret.res.list[key] });
+            }
+            EventMng.emit(GridEvent.HC_MERGE_SELL, { isShow: false });
+            EventMng.emit(GridEvent.HC_CELL_SELECT, 0);
+        }
+    }
 
     /** 尝试合成 */
     public async TryMergeItems(fromCell: UECell, toCell: UECell) {

+ 8 - 0
assets/script/logic/fgui/Home/Home/HomeMergeSellCom.ts

@@ -1,4 +1,5 @@
 import Gamecfg from "../../../../common/gameCfg";
+import GameDataCenter from "../../../../data/GameDataCenter";
 import { MergeItem } from "../../../../data/model/GridMap/GridMapModel";
 import ResSprite from "../../../../frameWork/compment/ResSprite";
 import EventMng from "../../../../manager/EventMng";
@@ -17,6 +18,7 @@ export default class HomeMergeSellCom {
     private QualityLoad: fgui.GLoader;
     private SellBtn: fgui.GButton;
     private QualityLabel: fgui.GTextField;
+    data: MergeSellData;
     public constructor(vm: fgui.GComponent) {
         this._vm = vm;
         this.sp_item = vm.getChild('IconLoad').node.addComponent(ResSprite);
@@ -27,16 +29,22 @@ export default class HomeMergeSellCom {
 
     public onEnable(): void {
         EventMng.on(GridEvent.HC_MERGE_SELL, this.OnHcMergeSell, this);
+        this.SellBtn.onClick(this.OnSellBtnClick, this);
     }
 
 
     public onDisable(): void {
         EventMng.off(GridEvent.HC_MERGE_SELL, this.OnHcMergeSell, this);
+        this.SellBtn.offClick(this.OnSellBtnClick, this);
+    }
 
+    private OnSellBtnClick(): void {
+        GameDataCenter.gridMap.sendHcSell(this.data.item.idx);
     }
 
 
     private OnHcMergeSell(data: MergeSellData): void {
+        this.data = data;
         this._vm.visible = data.isShow;
         if (data.isShow) {
             let quality = 0;

+ 2 - 0
assets/script/logic/gridMap/GridEvent.ts

@@ -8,4 +8,6 @@ export class GridEvent {
     static readonly HC_MERGE_TIP = "HC_MERGE_TIP";//合成提示
     static readonly HC_MERGE_SELL = "HC_MERGE_SELL";//合成物品售卖
     static readonly HC_FIGHT_OVER = "HC_FIGHT_OVER";//打怪结束
+    static readonly HC_CELL_CHANGE = "HC_CELL_CHANGE";//格子数据变化
+    static readonly HC_CELL_SELECT = "HC_CELL_SELECT";//格子选中
 }

+ 42 - 5
assets/script/logic/gridMap/UECell.ts

@@ -1,13 +1,17 @@
 
+import GameDataCenter from "../../data/GameDataCenter";
 import ResSprite from "../../frameWork/compment/ResSprite";
 import UEBase from "../../frameWork/compment/UEBase";
-import { HcUnlock } from "../../shared/hc/PtlHcInfo";
+import EventMng from "../../manager/EventMng";
+import { HcInfoGeziInfo, HcType, HcUnlock } from "../../shared/hc/PtlHcInfo";
+import { GridConstant } from "./GridConstant";
+import { GridEvent } from "./GridEvent";
 import UECube from "./UECube";
 
 const { ccclass, property } = cc._decorator;
 
 export interface I_CellData {
-    zIndex: number;
+    idx: number;
     ueCube: UECube;
     unlock: HcUnlock;
 }
@@ -27,9 +31,42 @@ export default class UECell extends UEBase {
     cellData: I_CellData = null!;
     Init(cellData: I_CellData) {
         this.cellData = cellData;
-        this.node.zIndex = cellData.zIndex;
+        this.node.zIndex = cellData.idx;
         this.SetQuality();
         this.SetLock();
+        EventMng.on(GridEvent.HC_CELL_CHANGE, this.OnHcCellChange, this);
+        EventMng.on(GridEvent.HC_CELL_SELECT, this.OnHcCellSelect, this);
+    }
+
+    /** 监听格子选中 */
+    OnHcCellSelect(idx: number) {
+        if (!idx) {
+            this.SetSelect(false);
+        } else if (idx == this.cellData.idx) {
+            this.SetSelect(true);
+        }
+    }
+
+    /** 监听格子变化 */
+    OnHcCellChange(data: { idx: number, item: HcInfoGeziInfo }) {
+        if (data.idx == this.cellData.idx) {
+            if (data.item.type == HcType.wu) {
+                this.ClearCube();
+            } else {
+
+            }
+        }
+    }
+
+    /** 创建格子 */
+    CreateCell(i: number, j: number) {
+        // let cell = cc.instantiate(this.cellPrefab).getComponent(UECell);
+        // this.cellLayer.addChild(cell.node);
+        // cell.node.width = GridConstant.CELL_WIDTH;
+        // cell.node.height = GridConstant.CELL_WIDTH;
+        // let pos = GameDataCenter.gridMap.GetPosByVec(i, j);
+        // cell.node.setPosition(pos);
+        // return cell;
     }
 
     SetCube(cube: UECube) {
@@ -39,7 +76,7 @@ export default class UECell extends UEBase {
 
     SetQuality() {
         if (this.cellData.ueCube && !this.IsLock()) {
-            this.cellData.ueCube.SetZIndex(this.cellData.zIndex);
+            this.cellData.ueCube.SetZIndex(this.cellData.idx);
             let quality = this.cellData.ueCube.GetQuality();
             this.sp_quality.setSpriteFrame('gridMap', `qualityBg/Img_zjm_diban0${quality}`);
         } else {
@@ -72,7 +109,7 @@ export default class UECell extends UEBase {
     }
 
     GetZIndex() {
-        return this.cellData.zIndex;
+        return this.cellData.idx;
     }
 
 

+ 7 - 7
assets/script/logic/gridMap/UECube.ts

@@ -14,7 +14,7 @@ export interface I_CubeData {
     /** 物品ID */
     id: number;
     /** 位置索引 */
-    zIndex: number;
+    idx: number;
 }
 @ccclass
 export default class UECube extends UEBase {
@@ -38,7 +38,7 @@ export default class UECube extends UEBase {
     ueHomeRole: UEHomeRole = null!;
     Init(cubeData: I_CubeData) {
         this.cubeData = cubeData;
-        this.SetZIndex(cubeData.zIndex);
+        this.SetZIndex(cubeData.idx);
         this.node_emitter_num.active = false;
         if (cubeData.type == HcType.emitter) {
             let mergePropCfg = Gamecfg.emitterInfo.getItem(cubeData.id.toString());
@@ -74,10 +74,10 @@ export default class UECube extends UEBase {
     TriggerClick() {
         if (this.cubeData.type == HcType.emitter) {
             CC_PREVIEW && console.log("触发点击发射器");
-            GameDataCenter.gridMap.sendEmitter(this.cubeData.zIndex);
+            GameDataCenter.gridMap.sendEmitter(this.cubeData.idx);
         } else if (this.cubeData.type == HcType.monster) {
             CC_PREVIEW && console.log("点击怪物开始战斗");
-            GameDataCenter.gridMap.sendFightHc(this.cubeData.zIndex);
+            GameDataCenter.gridMap.sendFightHc(this.cubeData.idx);
         } else if (this.cubeData.type == HcType.equip) {
 
         }
@@ -90,7 +90,7 @@ export default class UECube extends UEBase {
 
     SetZIndex(zIndex: number) {
         this.node.zIndex = zIndex;
-        this.cubeData.zIndex = zIndex;
+        this.cubeData.idx = zIndex;
         // this.lbt_num.string = zIndex.toString();
     }
 
@@ -109,7 +109,7 @@ export default class UECube extends UEBase {
     }
 
     EndDrag(): void {
-        this.node.zIndex = this.cubeData.zIndex;
+        this.node.zIndex = this.cubeData.idx;
     }
 
     ClearCell() {
@@ -118,7 +118,7 @@ export default class UECube extends UEBase {
 
     /** 回到原来位置 */
     BackToOriginalPos(needMove: boolean) {
-        let originalPos = GameDataCenter.gridMap.GetPosByIdx(this.cubeData.zIndex);
+        let originalPos = GameDataCenter.gridMap.GetPosByIdx(this.cubeData.idx);
         if (needMove) {
             cc.tween(this.node)
                 .to(0.15, { position: originalPos })

+ 17 - 11
assets/script/logic/gridMap/UEGridMap.ts

@@ -99,7 +99,7 @@ export default class UEGridMap extends UEBase {
                         }, idx)
                     }
                     cell.Init({
-                        zIndex: idx,
+                        idx: idx,
                         ueCube: cube,
                         unlock: cellData.unlock
                     });
@@ -125,7 +125,7 @@ export default class UEGridMap extends UEBase {
                 mergeCube.Init({
                     type: geziData.type,
                     id: geziData.correlationId,
-                    zIndex: Number(key),
+                    idx: Number(key),
                 });
                 curCell.SetCube(mergeCube);
             }
@@ -138,7 +138,7 @@ export default class UEGridMap extends UEBase {
         mergeCube.Init({
             type: data.cube.type,
             id: data.cube.correlationId,
-            zIndex: data.cell.GetZIndex(),
+            idx: data.cell.GetZIndex(),
         });
         data.cell.SetCube(mergeCube);
         //播放经验爆炸飞行动画
@@ -174,7 +174,8 @@ export default class UEGridMap extends UEBase {
         const cell = this.GetCellByPos(touchPos);
         if (cell) {
             if (this.selectedCell) {
-                this.selectedCell.SetSelect(false);
+                // this.selectedCell.SetSelect(false);
+                EventMng.emit(GridEvent.HC_CELL_SELECT, 0);
             }
             if (!cell.IsEmpty() && !cell.IsLock()) {
                 if (cell.CanDrag()) {
@@ -185,7 +186,8 @@ export default class UEGridMap extends UEBase {
                     this.clickCnt = 1;
                 }
                 this.selectedCell = cell;
-                cell.SetSelect(true);
+                // cell.SetSelect(true);
+                EventMng.emit(GridEvent.HC_CELL_SELECT, cell.GetZIndex());
                 EventMng.emit(GridEvent.HC_MERGE_SELL, { isShow: true, item: cell.GetCube().GetCubeData() });
             } else {
                 this.selectedCell = null;
@@ -207,7 +209,8 @@ export default class UEGridMap extends UEBase {
         if (!this.isDragging && distance >= DRAG_THRESHOLD) {
             this.isDragging = true;
             this.selectedCell.GetCube().StartDrag();
-            this.selectedCell.SetSelect(false);
+            // this.selectedCell.SetSelect(false);
+            EventMng.emit(GridEvent.HC_CELL_SELECT, 0);
         }
 
         if (this.isDragging) {
@@ -218,10 +221,12 @@ export default class UEGridMap extends UEBase {
             cube.node.setPosition(originalPos.x + deltaPos.x, originalPos.y + deltaPos.y);
             this.dragStartPos = touchPos;
             const targetCell = this.GetCellByPos(touchPos);
-            this.lastMoveCell?.SetSelect(false);
+            // this.lastMoveCell?.SetSelect(false);
+            EventMng.emit(GridEvent.HC_CELL_SELECT, 0);
             this.lastMoveCell = targetCell;
             if (targetCell && !targetCell.IsLock()) {
-                targetCell?.SetSelect(true);
+                // targetCell.SetSelect(true);
+                EventMng.emit(GridEvent.HC_CELL_SELECT, targetCell.GetZIndex());
             }
             if (targetCell && targetCell != this.selectedCell) {
                 if (!targetCell.IsEmpty() && GameDataCenter.gridMap.CellCanPut(this.selectedCell, targetCell)) {
@@ -262,8 +267,9 @@ export default class UEGridMap extends UEBase {
             if (!this.isDragging) return;
             if (targetCell && targetCell != this.selectedCell && !targetCell.IsLock()) {
                 GameDataCenter.gridMap.TryMergeItems(this.selectedCell, targetCell);
-                this.selectedCell.SetSelect(false);
-                targetCell.SetSelect(true);
+                // this.selectedCell.SetSelect(false);
+                // targetCell.SetSelect(true);
+                EventMng.emit(GridEvent.HC_CELL_SELECT, targetCell.GetZIndex());
             } else {
                 this.CheckSell();
                 this.selectedCell.GetCube().BackToOriginalPos(true);
@@ -308,7 +314,7 @@ export default class UEGridMap extends UEBase {
         mergeCube.Init({
             type: data.item.type,
             id: data.item.correlationId,
-            zIndex: data.idx,
+            idx: data.idx,
         });
         targetCell.SetCube(mergeCube);
         mergeCube.SetZIndex(1000);

+ 1 - 1
fgui-project/assets/Home/Components/HomeMergeBottom.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<component size="750,302" designImage="ui://1xjqm8v2j5c83l" designImageOffsetY="-1032" designImageAlpha="0" designImageLayer="1">
+<component size="750,302" opaque="false" designImage="ui://1xjqm8v2j5c83l" designImageOffsetY="-1032" designImageAlpha="0" designImageLayer="1">
   <displayList>
     <component id="n49_j5c8" name="MergeSell" src="j5c83r" fileName="Components/HomeMergeSell.xml" xy="375,151" pivot="0.5,0.5" anchor="true" visible="false"/>
     <component id="n48_j5c8" name="MergeTip" src="tt6am" fileName="Components/HomeMergetip.xml" xy="375,151" pivot="0.5,0.5" anchor="true" visible="false"/>

+ 2 - 2
fgui-project/assets/Home/Components/MergeYellowBtn.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<component size="110,110" extention="Button" designImage="ui://1xjqm8v2j5c83l" designImageOffsetX="-597" designImageOffsetY="-1185" designImageLayer="1">
+<component size="110,110" pivot="0.5,0.5" extention="Button" designImage="ui://1xjqm8v2j5c83l" designImageOffsetX="-597" designImageOffsetY="-1185" designImageLayer="1">
   <controller name="button" pages="0,up,1,down,2,over,3,selectedOver" selected="0"/>
   <displayList>
     <image id="n0_j5c8" name="n0" src="rnf915" fileName="Images/home/Btn_zjm_anniuhuang.png" xy="0,0" size="110,110">
@@ -12,5 +12,5 @@
       <relation target="" sidePair="right-right,top-top"/>
     </text>
   </displayList>
-  <Button/>
+  <Button downEffect="scale" downEffectValue=".8"/>
 </component>

+ 1 - 1
fgui-project/assets/Home/Home.xml

@@ -67,7 +67,7 @@
     <group id="n26_miq9" name="top" xy="0,0" size="750,262" advanced="true">
       <relation target="" sidePair="top-top"/>
     </group>
-    <component id="n30_tt6a" name="HomeMergeBottom" src="j5c83q" fileName="Components/HomeMergeBottom.xml" xy="375,1183" pivot="0.5,0.5" anchor="true" touchable="false">
+    <component id="n30_tt6a" name="HomeMergeBottom" src="j5c83q" fileName="Components/HomeMergeBottom.xml" xy="375,1183" pivot="0.5,0.5" anchor="true">
       <relation target="" sidePair="center-center,bottom-bottom"/>
     </component>
     <component id="n37_tt6a" name="EffectComp" src="e0jk8c" fileName="Components/EmptyCom.xml" pkg="rd135cfr" xy="375,667" pivot="0.5,0.5" anchor="true" size="750,1334" touchable="false">