|
|
@@ -0,0 +1,97 @@
|
|
|
+import { FactoryCountDown } from "./FactoryCountDown";
|
|
|
+
|
|
|
+const { ccclass, property } = cc._decorator;
|
|
|
+
|
|
|
+
|
|
|
+export enum FactroyState {
|
|
|
+ Lock,
|
|
|
+ Producting,
|
|
|
+ Free
|
|
|
+}
|
|
|
+
|
|
|
+@ccclass
|
|
|
+export class MapIcon extends cc.Component {
|
|
|
+ @property({ tooltip: "点击是否缩放动画" }) touchAmition: boolean = true;
|
|
|
+ @property({ type: cc.Animation, tooltip: "点击动画" }) animation: cc.Animation = null;
|
|
|
+ @property({ type: cc.Node, tooltip: "建筑状态组" }) stateGroup: cc.Node = null;
|
|
|
+ @property({ type: cc.Node, tooltip: "完成品展示节点" }) showGroup: cc.Node = null;
|
|
|
+ @property({ tooltip: "配置ID" }) configID: number = 0;
|
|
|
+ @property({ type: FactoryCountDown, tooltip: "计时装置" }) countDown: FactoryCountDown = null;
|
|
|
+
|
|
|
+ private _state = FactroyState.Lock;
|
|
|
+ private hasActive = false;
|
|
|
+
|
|
|
+ private havrestList: { id: number, node: Node }[] = [];
|
|
|
+ start() {
|
|
|
+ if (gData.gameData.hasBuildData(this.configID)) {
|
|
|
+ this.activeFactroy();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ update() {
|
|
|
+ if (this._state == FactroyState.Lock && gData.gameData.hasBuildData(this.configID)) {
|
|
|
+ this.activeFactroy();
|
|
|
+ }
|
|
|
+ let producting = gData.gameData.getProductingList(this.configID);
|
|
|
+ if (producting.length > 0) {
|
|
|
+ this.setState(FactroyState.Producting);
|
|
|
+ } else {
|
|
|
+ this.setState(FactroyState.Free);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public activeFactroy(): void {
|
|
|
+ this.hasActive = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public async inPolygon() {
|
|
|
+ // (this.touchAmition && this.animation) && this.animation.play();
|
|
|
+ // var sound = this.getComponent(Sound);
|
|
|
+ // sound && sound.play();
|
|
|
+ // if (this._state != FactroyState.Lock) {
|
|
|
+ // if (this.havrestList.length == 0) {
|
|
|
+ // this.getComponent(OpenWindow).open(this.configID, this.countDown);
|
|
|
+ // } else {
|
|
|
+ // WindowManager.open("Prefabs/HarvestWindow", WindowOpenMode.CloseAndCover, this.configID, this.onHarvest.bind(this));
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // let lvl = ConfigData.configMap.get("build")[this.configID]["lvl"];
|
|
|
+ // WindowManager.showTips(`${lvl}级解锁`);
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ /**生产完成回调 */
|
|
|
+ public async onProductComplete(id: number) {
|
|
|
+ // if (this.showGroup) {
|
|
|
+ // let prefab = await ResourcesUtils.load<Prefab>("Prefabs/ProductShow", null, this.node);
|
|
|
+ // let item = instantiate(prefab);
|
|
|
+ // item.getComponent(ProductShow).id = id;
|
|
|
+ // item.setParent(this.showGroup);
|
|
|
+ // let x = Utils.random_both(-this.showGroup.getComponent(UITransform).width / 2, this.showGroup.getComponent(UITransform).width / 2);
|
|
|
+ // let y = Utils.random_both(-this.showGroup.getComponent(UITransform).height / 2, this.showGroup.getComponent(UITransform).height / 2);
|
|
|
+ // item.setPosition(v3(x, y, 0));
|
|
|
+ // this.havrestList.push({ id: id, node: item });
|
|
|
+ // }
|
|
|
+ }
|
|
|
+
|
|
|
+ public clean(): void {
|
|
|
+ this.showGroup.removeAllChildren();
|
|
|
+ this.havrestList = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ private onHarvest(mult: number): void {
|
|
|
+ // this.havrestList.shift().node.destroy();
|
|
|
+ }
|
|
|
+
|
|
|
+ private setState(value: FactroyState): void {
|
|
|
+ if (this.hasActive) {
|
|
|
+ if (this._state != value) {
|
|
|
+ this._state = value;
|
|
|
+ if (this._state == FactroyState.Producting) {
|
|
|
+ this.stateGroup && (this.stateGroup.active = true);
|
|
|
+ } else {
|
|
|
+ this.stateGroup && (this.stateGroup.active = false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|