Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / box / TreasureBox.cs
  1. using Godot;
  2.  
  3. /// <summary>
  4. /// 宝箱
  5. /// </summary>
  6. [Tool]
  7. public partial class TreasureBox : ActivityObject, IHurt
  8. {
  9. public bool IsOpen { get; private set; }
  10.  
  11. public override void OnInit()
  12. {
  13. AnimatedSprite.AnimationFinished += OnAnimationFinished;
  14. }
  15.  
  16. public override CheckInteractiveResult CheckInteractive(ActivityObject master)
  17. {
  18. return new CheckInteractiveResult(this, !IsOpen, CheckInteractiveResult.InteractiveType.OpenTreasureBox);
  19. }
  20.  
  21. public override void Interactive(ActivityObject master)
  22. {
  23. if (IsOpen)
  24. {
  25. return;
  26. }
  27.  
  28. IsOpen = true;
  29. AnimatedSprite.Play(AnimatorNames.Open);
  30. }
  31.  
  32. private void OnAnimationFinished()
  33. {
  34. var weapon = Create(World.RandomPool.GetRandomProp());
  35. weapon.Throw(Position, 2, 95, new Vector2(0, 11), 0);
  36. }
  37.  
  38. public void Hurt(ActivityObject target, int damage, float angle)
  39. {
  40. PlayHitAnimation();
  41. }
  42. }