green-pack-cocos/assets/scripts/randomCave/randomCaveExample.ts

50 lines
1.7 KiB
TypeScript
Raw Permalink Normal View History

2024-02-02 03:47:09 +00:00
import { _decorator, Color, Component, instantiate, Node, Sprite, v3 } from 'cc';
import { RandomCaveGenerator } from './RandomCaveGenerator';
const { ccclass, property } = _decorator;
@ccclass('randomCaveExample')
export class randomCaveExample extends Component {
@property({type:Node})
public cell:Node
private generator = new RandomCaveGenerator()
private nodes:Node[] = []
start() {
this.generator.init();
let startX = -this.generator.columns / 2 * 10
let startY = -this.generator.rows / 2 * 10
for (let i = 0; i < this.generator.columns; i++) {
for (let j = 0; j < this.generator.rows; j++) {
let node = instantiate(this.cell);
this.node.addChild(node)
node.setPosition(v3(i * 10 + startX, j * 10 + startY, 0))
if (this.generator.isWall(i, j))
node.getComponent(Sprite).color = Color.GRAY
this.nodes[i + j * this.generator.rows] = node;
}
}
}
public randomInit() {
this.generator.init();
this.apply()
}
public step() {
this.generator.step();
this.apply()
}
private apply() {
let startX = -this.generator.columns / 2 * 10
let startY = -this.generator.rows / 2 * 10
for (let i = 0; i < this.generator.columns; i++) {
for (let j = 0; j < this.generator.rows; j++) {
let node = this.nodes[i + j * this.generator.rows]
node.setPosition(v3(i * 10 + startX, j * 10 + startY, 0))
node.getComponent(Sprite).color = this.generator.isWall(i, j) ? Color.GRAY: Color.WHITE
}
}
}
}