/// <summary> /// 按类型释放建筑 /// </summary> /// <param name="building"></param> public void ReleaseBuilding(ICanBuild building) { if (building is ArrowTower) { ArrowTowerPoolObject.Release(building as ArrowTower); } else if (building is ArtilleryTower) { ArtilleryTowerPoolObject.Release(building as ArtilleryTower); } else if (building is IceTower) { IceTowerPoolObject.Release(building as IceTower); } else if (building is MagicTower) { MagicTowerPoolObject.Release(building as MagicTower); } }
/// <summary> /// 重置预览建筑 /// </summary> /// <param name="isRelease">是否释放(如果是则放回池并返还金币)</param> public void ResetPreview() { if (this.previewBuilding == null) { return; } this.previewBuilding.Effect.SetObstructArea(false); this.previewBuilding.Effect.SetDeployArea(false, false); this.previewBuilding.Effect.SetAttackRange(false); if (this.previewBuilding.BuildState == BuildState.PREVIEW) { // 返还金币 GameScene.Instance.Money += this.previewBuilding.ConstructionCost; ReleaseBuilding(this.previewBuilding); } this.previewBuilding = null; }
public void CreatePreviewBuilding(string name) { AudioManager.Instance.Play("Click1"); ResetPreview(); ICanBuild tempBuilding = null; if (name == nameof(ArrowTower)) { tempBuilding = ArrowTowerPoolObject.Take(); } else if (name == nameof(ArtilleryTower)) { tempBuilding = ArtilleryTowerPoolObject.Take(); } else if (name == nameof(IceTower)) { tempBuilding = IceTowerPoolObject.Take(); } else if (name == nameof(MagicTower)) { tempBuilding = MagicTowerPoolObject.Take(); } // 检查金币是否可以购买 if (GameScene.Instance.Money >= tempBuilding.ConstructionCost) { GameScene.Instance.Money -= tempBuilding.ConstructionCost; this.previewBuilding = tempBuilding; GameScene.Instance.Ground.FieldArea.SetFieldDisplayEnable(true); SetBuildingsObstructAreasEnable(true); } else { GameScene.Instance.UIManager.Money.TipsMonyeInsufficientCantBuilding(); ReleaseBuilding(tempBuilding); } }