import { _decorator, Component, instantiate, Node, Prefab, UITransform, Vec3 } from 'cc';
import { GameEvent } from 'db://assets/App/Script/Event/GameEvent';
import { EventListener } from 'db://assets/App/Script/Frame/EventListener';
import { MonsterItem } from '../MonsterItem';
import { MonsterData } from '../Data/MonsterData';
const { ccclass, property } = _decorator;
@ccclass('MonsterManger')
export class MonsterManger extends Component {
@property(Node)
monsterRoot: Node = null;
@property(Prefab)
monsterPrefab: Prefab = null;
onCreateMonster(wpos: Vec3, mapId: string) {
const monster = instantiate(this.monsterPrefab);
let pos = this.monsterRoot.getComponent(UITransform).convertToNodeSpaceAR(wpos);
monster.parent = this.monsterRoot;
monster.setPosition(pos);
monster.getComponent(MonsterItem).init(mapId);
}
protected onEnable(): void {
EventListener.on(GameEvent.CREAE_MONSTER, this.onCreateMonster, this);
}
protected onDisable(): void {
EventListener.off(GameEvent.CREAE_MONSTER, this.onCreateMonster, this);
}
monsterSort() {
let monsters = this.monsterRoot.getComponentsInChildren(MonsterItem);
monsters.sort((a, b) => {
return b.node.position.y - a.node.position.y;
});
for (let i = 0; i < monsters.length; i++) {
monsters[i].node.setSiblingIndex(i);
}
this.monsterRoot._updateSiblingIndex();
}
protected update(dt: number): void {
this.monsterSort();
}
}