// examines top block from towerFrom parameter and transfers it to this tower's stack if move is valid public void AttemptBlockTransferFrom(Transform towerFrom) { if (towerFrom) { if (towerFrom != this.transform) { TowerStack towerStackFrom = towerFrom.GetComponent <TowerStack> (); Transform topBlock = towerStackFrom.GetTopBlock(); if (topBlock) { if (this.CanSupportNewTopBlock(topBlock)) { // block transfer is valid; commence transfer procedure topBlock = towerStackFrom.PopTopBlock(); this.PushTopBlock(topBlock); } else { towerFrom.GetComponent <EventBus> ().EmitTopBlockKeepEvent(towerFrom); this.eventBus.EmitTopBlockMissEvent(this.transform); } } } else { towerFrom.GetComponent <EventBus> ().EmitTopBlockKeepEvent(towerFrom); } } }
// show shadow of where block will drop on toTower void ShowToShadow(Transform toTower) { Transform fromTower = MouseActionTrigger.towerBeingDragged; if (toTower != fromTower) { Transform fromBlock = fromTower.GetComponent <TowerStack> ().GetTopBlock(); if (fromBlock) { // find toTower slot and place toShadow block inside it TowerStack toTowerStack = toTower.GetComponent <TowerStack> (); Transform toSlot = toTowerStack.GetTopSlot(); this.toShadow.transform.SetParent(toSlot); this.toShadow.SetActive(true); // Decide color of shadow block based on validity of fromTower's topBlock move Color shadowColor; if (toTowerStack.CanSupportNewTopBlock(fromBlock)) { shadowColor = new Color(0f, 1f, 0f, 0.6f); // Green for valid } else { shadowColor = new Color(1f, 0f, 0f, 0.6f); // Red for invalid } // Adjust shadow's size and color Block toShadowData = this.toShadow.GetComponent <Block> (); toShadowData.ResetPosition(); toShadowData.SetColor(shadowColor); int blockNum = fromBlock.GetComponent <Block> ().blockNum; toShadowData.SetBlockNum(blockNum); } } }
void Start() { // initialize tower components this.eventBus = this.towerBindedTo.GetComponent <EventBus> (); this.towerStack = this.towerBindedTo.GetComponent <TowerStack> (); // subscribe best girl checking to whenever tower gains a new block this.eventBus.TopBlockGainEvent += this.CheckIfBestGirl; }
void Start() { this.mainCamera = Camera.main; this.mainCanvas = this.transform.parent.GetComponent <Canvas> ().rootCanvas; this.towerStack = this.GetComponent <TowerStack>(); // subscribe methods to event bus this.eventBus = this.GetComponent <EventBus>(); this.eventBus.LeftDragEvent += this.MoveTopBlockToMouse; this.eventBus.LeftReleaseEvent += this.ResetTopBlockPosition; }
// show shadow of where block came from on fromTower void ShowFromShadow(Transform fromTower) { // find toTower slot and place toShadow block inside it TowerStack fromTowerStack = fromTower.GetComponent <TowerStack> (); Transform fromBlock = fromTowerStack.GetTopBlock(); if (fromBlock) { Transform fromSlot = fromTowerStack.GetTopBlockSlot(); if (fromSlot) { this.fromShadow.transform.SetParent(fromSlot); this.fromShadow.SetActive(true); } // Adjust shadow's size and color Block fromShadowData = this.fromShadow.GetComponent <Block> (); fromShadowData.ResetPosition(); fromShadowData.SetColor(new Color(0f, 0f, 0f, 0.6f)); //black shadow int blockNum = fromBlock.GetComponent <Block> ().blockNum; fromShadowData.SetBlockNum(blockNum); } }