|
@@ -74,6 +74,10 @@ export default class UEGridMap extends UEBase {
|
|
this.initEvent(GridEvent.HC_FIGHT_OVER, this.OnHcFightOver);
|
|
this.initEvent(GridEvent.HC_FIGHT_OVER, this.OnHcFightOver);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public GetCubeLayer() {
|
|
|
|
+ return this.cubeLayer;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
/** 加载地图数据 */
|
|
/** 加载地图数据 */
|
|
@@ -81,28 +85,21 @@ export default class UEGridMap extends UEBase {
|
|
this.cellMap = {};
|
|
this.cellMap = {};
|
|
for (let i = 0; i < GridConstant.COL; i++) {
|
|
for (let i = 0; i < GridConstant.COL; i++) {
|
|
let rowCells = [];
|
|
let rowCells = [];
|
|
- let rowCubes = [];
|
|
|
|
for (let j = 0; j < GridConstant.ROW; j++) {
|
|
for (let j = 0; j < GridConstant.ROW; j++) {
|
|
let idx = (i + 1) * 10 + (j + 1);
|
|
let idx = (i + 1) * 10 + (j + 1);
|
|
let cellData = data.list[idx];
|
|
let cellData = data.list[idx];
|
|
if (cellData) {
|
|
if (cellData) {
|
|
let cell = this.CreateCell(i, j);
|
|
let cell = this.CreateCell(i, j);
|
|
rowCells.push(cell);
|
|
rowCells.push(cell);
|
|
- let cube = null;
|
|
|
|
- if (cellData.type > 0) {
|
|
|
|
- cube = this.CreateCube(i, j);
|
|
|
|
- rowCubes.push(cube);
|
|
|
|
- cube.Init({
|
|
|
|
- type: cellData.type,
|
|
|
|
- id: cellData.correlationId,
|
|
|
|
- zIndex: idx
|
|
|
|
- }, idx)
|
|
|
|
- }
|
|
|
|
cell.Init({
|
|
cell.Init({
|
|
|
|
+ x: i,
|
|
|
|
+ y: j,
|
|
idx: idx,
|
|
idx: idx,
|
|
- ueCube: cube,
|
|
|
|
unlock: cellData.unlock
|
|
unlock: cellData.unlock
|
|
});
|
|
});
|
|
|
|
+ if (cellData.type > 0) {
|
|
|
|
+ cell.CreateCube(cellData);
|
|
|
|
+ }
|
|
this.cellMap[idx] = cell;
|
|
this.cellMap[idx] = cell;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -120,27 +117,23 @@ export default class UEGridMap extends UEBase {
|
|
if (curCell.IsLock()) {
|
|
if (curCell.IsLock()) {
|
|
curCell.ChangeLockState(geziData.unlock);
|
|
curCell.ChangeLockState(geziData.unlock);
|
|
}
|
|
}
|
|
- let vec = GameDataCenter.gridMap.TranIdxToPos(Number(key));
|
|
|
|
- let mergeCube = this.CreateCube(vec.y, vec.x);
|
|
|
|
|
|
+ let mergeCube = curCell.CreateCube(geziData);
|
|
mergeCube.Init({
|
|
mergeCube.Init({
|
|
type: geziData.type,
|
|
type: geziData.type,
|
|
id: geziData.correlationId,
|
|
id: geziData.correlationId,
|
|
idx: Number(key),
|
|
idx: Number(key),
|
|
});
|
|
});
|
|
- curCell.SetCube(mergeCube);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private OnHcMergeRsp(data: { cell: UECell, cube: HcInfoGeziInfo }) {
|
|
private OnHcMergeRsp(data: { cell: UECell, cube: HcInfoGeziInfo }) {
|
|
- let vec = GameDataCenter.gridMap.TranIdxToPos(data.cell.GetZIndex());
|
|
|
|
- let mergeCube = this.CreateCube(vec.y, vec.x);
|
|
|
|
|
|
+ let mergeCube = data.cell.CreateCube(data.cube);
|
|
mergeCube.Init({
|
|
mergeCube.Init({
|
|
type: data.cube.type,
|
|
type: data.cube.type,
|
|
id: data.cube.correlationId,
|
|
id: data.cube.correlationId,
|
|
idx: data.cell.GetZIndex(),
|
|
idx: data.cell.GetZIndex(),
|
|
});
|
|
});
|
|
- data.cell.SetCube(mergeCube);
|
|
|
|
//播放经验爆炸飞行动画
|
|
//播放经验爆炸飞行动画
|
|
|
|
|
|
}
|
|
}
|
|
@@ -158,17 +151,6 @@ export default class UEGridMap extends UEBase {
|
|
return cell;
|
|
return cell;
|
|
}
|
|
}
|
|
|
|
|
|
- /** 创建棋子 */
|
|
|
|
- private CreateCube(i: number, j: number) {
|
|
|
|
- let cube = cc.instantiate(this.cubePrefab).getComponent(UECube);
|
|
|
|
- this.cubeLayer.addChild(cube.node);
|
|
|
|
- cube.node.width = GridConstant.CELL_WIDTH;
|
|
|
|
- cube.node.height = GridConstant.CELL_WIDTH;
|
|
|
|
- let pos = GameDataCenter.gridMap.GetPosByVec(i, j);
|
|
|
|
- cube.node.setPosition(pos);
|
|
|
|
- return cube;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
private OnTouchStart(event: cc.Event.EventTouch): void {
|
|
private OnTouchStart(event: cc.Event.EventTouch): void {
|
|
const touchPos = this.gridLayer.convertToNodeSpaceAR(event.getLocation());
|
|
const touchPos = this.gridLayer.convertToNodeSpaceAR(event.getLocation());
|
|
const cell = this.GetCellByPos(touchPos);
|
|
const cell = this.GetCellByPos(touchPos);
|
|
@@ -310,18 +292,18 @@ export default class UEGridMap extends UEBase {
|
|
private TriggerEmitter(data: { idx: number, item: HcInfoGeziInfo, targetIdx: number }) {
|
|
private TriggerEmitter(data: { idx: number, item: HcInfoGeziInfo, targetIdx: number }) {
|
|
let targetCell = this.cellMap[data.targetIdx];
|
|
let targetCell = this.cellMap[data.targetIdx];
|
|
let startPos = GameDataCenter.gridMap.TranIdxToPos(data.idx);
|
|
let startPos = GameDataCenter.gridMap.TranIdxToPos(data.idx);
|
|
- let mergeCube = this.CreateCube(startPos.y, startPos.x);
|
|
|
|
|
|
+ let mergeCube = targetCell.CreateCube(data.item);
|
|
mergeCube.Init({
|
|
mergeCube.Init({
|
|
type: data.item.type,
|
|
type: data.item.type,
|
|
id: data.item.correlationId,
|
|
id: data.item.correlationId,
|
|
idx: data.idx,
|
|
idx: data.idx,
|
|
});
|
|
});
|
|
- targetCell.SetCube(mergeCube);
|
|
|
|
mergeCube.SetZIndex(1000);
|
|
mergeCube.SetZIndex(1000);
|
|
let targetPos = GameDataCenter.gridMap.TranIdxToPos(data.targetIdx);
|
|
let targetPos = GameDataCenter.gridMap.TranIdxToPos(data.targetIdx);
|
|
|
|
|
|
// 计算起点和终点
|
|
// 计算起点和终点
|
|
- const startWorldPos = mergeCube.node.getPosition();
|
|
|
|
|
|
+ const startWorldPos = GameDataCenter.gridMap.GetPosByVec(startPos.y, startPos.x);
|
|
|
|
+ mergeCube.node.setPosition(startWorldPos.x, startWorldPos.y);
|
|
const endWorldPos = GameDataCenter.gridMap.GetPosByVec(targetPos.y, targetPos.x);
|
|
const endWorldPos = GameDataCenter.gridMap.GetPosByVec(targetPos.y, targetPos.x);
|
|
|
|
|
|
// 计算方向向量和总距离
|
|
// 计算方向向量和总距离
|