Exemple #1
0
    /*if there are lobsters defending, return a list of defend lobsters,
     * if there are only attacking lobsters, return a list of lobsters,
     * otherwise, return null to indicate there is no lobster to attack*/
    public List <Lobster> GetAttackableLobsters()
    {
        List <Lobster> result = new List <Lobster>();

        //get all defense lobsters
        foreach (GameObject spot in spots)
        {
            FloorSpot floorSpot = spot.GetComponent <FloorSpot>();
            //when there is defending lobster in play
            if (floorSpot.GetCardInPlay() != null && floorSpot.GetCardType() == CardType.Lobster &&
                floorSpot.GetCardInPlay().GetComponent <Lobster>().GetState() == LobsterState.Defence)
            {
                result.Add(floorSpot.GetCardInPlay().GetComponent <Lobster>());
            }
        }
        //if the list is not empty, we have defending lobsters, return them
        if (result.Count > 0)
        {
            return(result);
        }
        //do not have defending lobsters, get all lobsters
        foreach (GameObject spot in spots)
        {
            FloorSpot floorSpot = spot.GetComponent <FloorSpot>();
            //when there is defending lobster in play
            if (floorSpot.GetCardInPlay() != null && floorSpot.GetCardType() == CardType.Lobster)
            {
                result.Add(floorSpot.GetCardInPlay().GetComponent <Lobster>());
            }
        }
        //return the result of all lobsters on the floor
        return(result);
    }
 private void UnSelectSpot(FloorSpot spot)
 {
     selectedSpots.Remove(spot);
     SetGlobalScale(spot.GetCardInPlay(), SystemManager.cardNormalScale);
     levelSum -= spot.GetCardData().level;
     UpdateText();
 }
 private void SelectSpot(FloorSpot spot)
 {
     //only lobsters who have not attacked can be used as material
     if (spot.GetCardInPlay() && spot.GetCardInPlay().GetComponent <Lobster>() && spot.GetCardInPlay().GetComponent <Lobster>().canAttack)
     {
         selectedSpots.Add(spot);
         SetGlobalScale(spot.GetCardInPlay(), SystemManager.cardSelectedScale);
         levelSum += spot.GetCardData().level;
         UpdateText();
     }
 }
 //get the level needed and start selection
 public void StartMaterialSelection(GameObject card, GameObject spot)
 {
     targetSpot = spot;
     this.card  = card;
     gameObject.SetActive(true);
     levelSum      = 0;
     neededLevel   = card.GetComponent <CardStats>().cardData.level - 1;
     selectedSpots = new List <FloorSpot>(3);
     //hide the moveMenu of all lobsters
     foreach (GameObject oneSpot in playerFloor.GetComponent <Floor>().spots)
     {
         FloorSpot floorSpot = oneSpot.GetComponent <FloorSpot>();
         //when this spot has lobster
         if (floorSpot.GetCardInPlay() && floorSpot.GetCardInPlay().GetComponent <Lobster>())
         {
             floorSpot.GetCardInPlay().GetComponent <Lobster>().CloseMoveMenuImmediately();
         }
     }
     UpdateText();
     checking = true;
 }
 private void CheckMaterialSelection()
 {
     if (Input.GetMouseButtonDown(0))
     {
         Vector2    cameraPos  = mainCamera.ScreenToWorldPoint(Input.mousePosition);
         GameObject spotObject = playerFloor.GetComponent <Floor>().SpotTouched(cameraPos);
         //when touched sth
         if (spotObject)
         {
             FloorSpot spot = spotObject.GetComponent <FloorSpot>();
             //see if player is selecting a new spot or unselected one
             if (selectedSpots.Contains(spot))
             {
                 UnSelectSpot(spot);
             }
             else
             {
                 SelectSpot(spot);
             }
         }
     }
 }