Exemple #1
0
 // 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);
         }
     }
 }
Exemple #2
0
    // 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);
            }
        }
    }
Exemple #3
0
    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;
    }
Exemple #4
0
    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;
    }
Exemple #5
0
    // 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);
        }
    }