예제 #1
0
 public void UsePickup(BallController ball)
 {
     if (pickup == null)
     {
         Debug.Log("No pickup available for use");
     }
     else
     {
         pickup.Consume(ball);
         this.RemovePickupHighlight();
         if (pickup.GetCharges() < 1)
         {
             RemovePickup();
         }
     }
 }
예제 #2
0
 // Update is called once per frame
 void Update()
 {
     if (player != null)
     {
         if (player.IsAtTarget())
         {
             Node node = GetOverlap(player);
             if (node != null && node.risk > 0 && node != actionedNode)
             {
                 actionedNode = node;
             }
             if (node != null)
             {
                 Goal goal = node.gameObject.GetComponent <Goal>();
                 if (goal != null)
                 {
                     reachedGoal = goal;
                 }
                 Pickup pickup = node.pickup;
                 if (pickup != null && !pickup.consumed)
                 {
                     if (pickup.type == Pickup.PickupType.HEALTH)
                     {
                         pickup.Consume();
                         node.UpdateRiskText();
                         explosionHandler.PickupPlant(pickup.gameObject.transform.position + new Vector3(0, 0.4f, 0.4f));
                         playerHealth += pickup.amount;
                     }
                 }
                 GameInfo gameInfo = node.gameObject.GetComponentInChildren <GameInfo>();
                 if (gameInfo != null && !gameInfo.isShown)
                 {
                     ConvoHandler convoHandler = FindObjectOfType <ConvoHandler>();
                     convoHandler.ShowInfo(gameInfo);
                     gameInfo.Consume();
                 }
             }
         }
         if (waypoints.Count > 0)
         {
             if (waypoints.Count > 1)
             {
                 player.targetPos = waypoints[waypoints.Count - 1].transform.position;
             }
             else
             {
                 if (selectedNode != null && selectedNode.risk > 0)
                 {
                     Vector3 direction = Vector3.Normalize(selectedNode.transform.position - selectedPlayer.transform.position);
                     selectedPlayer.targetPos = selectedNode.transform.position - (direction * 1f);
                 }
                 else
                 {
                     player.targetPos = waypoints[waypoints.Count - 1].transform.position;
                 }
             }
             if (player.IsAtTarget())
             {
                 waypoints.Remove(waypoints[waypoints.Count - 1]);
             }
         }
     }
     if (isRolling)
     {
         diceResult = UnityEngine.Random.Range(1, 7);
     }
     else
     {
         diceResult = -100;
     }
 }
예제 #3
0
 internal void HandleRoll(bool didSucceed, Game game)
 {
     if (actor != null)
     {
         if (didSucceed)
         {
             game.ExplodePosition(actor.gameObject.transform.position);
             Destroy(actor.gameObject);
             actor       = null;
             game.canRun = false;
             RemoveRisk();
         }
         else
         {
             if (game.armourHelp > 0)
             {
                 game.armourHelp -= 1;
             }
             else
             {
                 game.canRun        = true;
                 game.playerHealth -= 1;
             }
         }
     }
     if (pickup != null && !pickup.consumed && actor == null)
     {
         pickup.Consume();
         game.ExplodePosition(pickup.gameObject.transform.position + new Vector3(0, 0.4f, 0.4f));
         RemoveRisk();
         if (pickup.isCurse)
         {
             if (!didSucceed)
             {
                 pickup.ApplyPickupToPlayer(game);
                 if (character != null)
                 {
                     character.SetFollow(game.player.transform);
                 }
             }
             else
             {
                 if (character != null)
                 {
                     Destroy(character.gameObject);
                     character = null;
                 }
             }
         }
         else
         {
             if (didSucceed)
             {
                 pickup.ApplyPickupToPlayer(game);
                 if (character != null)
                 {
                     character.SetFollow(game.player.transform);
                 }
                 game.PlayerCelebrate();
             }
             else
             {
                 if (character != null)
                 {
                     Destroy(character.gameObject);
                     character = null;
                 }
             }
         }
         if (character != null)
         {
             if ((didSucceed && !pickup.isCurse) || (!didSucceed && pickup.isCurse))
             {
                 character.SetFollow(game.player.transform);
             }
             else
             {
                 Destroy(character.gameObject);
                 character = null;
             }
         }
     }
 }