HealthComponent.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #region File description
  2. // --------------------------------------------------------------------------------------------------------------------
  3. // <copyright file="HealthComponent.cs" company="GAMADU.COM">
  4. // Copyright © 2013 GAMADU.COM. All rights reserved.
  5. //
  6. // Redistribution and use in source and binary forms, with or without modification, are
  7. // permitted provided that the following conditions are met:
  8. //
  9. // 1. Redistributions of source code must retain the above copyright notice, this list of
  10. // conditions and the following disclaimer.
  11. //
  12. // 2. Redistributions in binary form must reproduce the above copyright notice, this list
  13. // of conditions and the following disclaimer in the documentation and/or other materials
  14. // provided with the distribution.
  15. //
  16. // THIS SOFTWARE IS PROVIDED BY GAMADU.COM 'AS IS' AND ANY EXPRESS OR IMPLIED
  17. // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  18. // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GAMADU.COM OR
  19. // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  20. // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  21. // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  22. // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  23. // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  24. // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. //
  26. // The views and conclusions contained in the software and documentation are those of the
  27. // authors and should not be interpreted as representing official policies, either expressed
  28. // or implied, of GAMADU.COM.
  29. // </copyright>
  30. // <summary>
  31. // The health.
  32. // </summary>
  33. // --------------------------------------------------------------------------------------------------------------------
  34. #endregion File description
  35. namespace StarWarrior.Components
  36. {
  37. #region Using statements
  38. using System;
  39. using Artemis.Interface;
  40. #endregion
  41. /// <summary>The health.</summary>
  42. internal class HealthComponent : IComponent
  43. {
  44. /// <summary>Initializes a new instance of the <see cref="HealthComponent"/> class.</summary>
  45. public HealthComponent()
  46. : this(0.0f)
  47. {
  48. }
  49. /// <summary>Initializes a new instance of the <see cref="HealthComponent"/> class.</summary>
  50. /// <param name="points">The points.</param>
  51. public HealthComponent(float points)
  52. {
  53. this.Points = this.MaximumHealth = points;
  54. }
  55. /// <summary>Gets or sets the health points.</summary>
  56. /// <value>The Points.</value>
  57. public float Points { get; set; }
  58. /// <summary>Gets the health percentage.</summary>
  59. /// <value>The health percentage.</value>
  60. public double HealthPercentage
  61. {
  62. get
  63. {
  64. return Math.Round(this.Points / this.MaximumHealth * 100f);
  65. }
  66. }
  67. /// <summary>Gets a value indicating whether is alive.</summary>
  68. /// <value><see langword="true" /> if this instance is alive; otherwise, <see langword="false" />.</value>
  69. public bool IsAlive
  70. {
  71. get
  72. {
  73. return this.Points > 0;
  74. }
  75. }
  76. /// <summary>Gets the maximum health.</summary>
  77. /// <value>The maximum health.</value>
  78. public float MaximumHealth { get; private set; }
  79. /// <summary>The add damage.</summary>
  80. /// <param name="damage">The damage.</param>
  81. public void AddDamage(int damage)
  82. {
  83. this.Points -= damage;
  84. if (this.Points < 0)
  85. {
  86. this.Points = 0;
  87. }
  88. }
  89. }
  90. }