コード例 #1
0
        public static void Display(VillageTask task)
        {
            // Access player
            Player player = Program.Player;

            // Define menu title
            string menuTitle = $"Doing task: \"{task.Description}\"";

            // Calculate health reduction per tick
            float tickDamage = player.VillagesManager.GetTaskHealthRequirement(task) / task.DurationTicks;

            // Display progress
            ConstantProgress.Start(menuTitle, 200, task.DurationTicks, (isDone) =>
            {
                // Update player's health
                player.ApplyDamage(tickDamage);

                // Process last frame
                if (isDone)
                {
                    // Update player's reputation
                    player.VillagesManager.AddReputation(task.ReputationBonus);

                    // Remove task from the village
                    task.Village.Tasks.RemoveTask(task);
                }
            });
        }
コード例 #2
0
 public float GetTaskHealthRequirement(VillageTask task)
 {
     return(Convert.ToSingle(task.DurationTicks * PlayerStats.HEALTH_AMOUNT_SOCIALIZATION_PER_TICK));
 }
コード例 #3
0
 /// <summary>
 /// Checks if player has enough health to do a village task.
 /// </summary>
 /// <param name="task">
 /// Target task
 /// </param>
 /// <returns>
 /// Boolean that represents if player another health to complete the target task
 /// </returns>
 public bool CanDoTask(VillageTask task)
 {
     return(Player.Health - GetTaskHealthRequirement(task) > 0);
 }