Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / prop / Prop.cs
  1.  
  2. /// <summary>
  3. /// 道具基类
  4. /// </summary>
  5. public abstract partial class Prop : ActivityObject, IPackageItem
  6. {
  7. public Role Master { get; set; }
  8.  
  9. public int PackageIndex { get; set; } = -1;
  10.  
  11. /// <summary>
  12. /// 当被动被道具被拾起时调用
  13. /// </summary>
  14. /// <param name="master">拾起该道具的角色</param>
  15. protected abstract void OnPickUp(Role master);
  16.  
  17. /// <summary>
  18. /// 当被动道具被移除时调用
  19. /// </summary>
  20. /// <param name="master">移除该道具的角色</param>
  21. protected abstract void OnRemove(Role master);
  22.  
  23.  
  24. /// <summary>
  25. /// 如果道具放入了角色背包中, 则每帧调用
  26. /// </summary>
  27. public virtual void PackProcess(float delta)
  28. {
  29. }
  30.  
  31. public override void Interactive(ActivityObject master)
  32. {
  33. if (master is Role role)
  34. {
  35. Pickup();
  36. Master = role;
  37. role.PushProp(this);
  38. OnPickUp(role);
  39. }
  40. }
  41.  
  42. public override CheckInteractiveResult CheckInteractive(ActivityObject master)
  43. {
  44. if (master is Player)
  45. {
  46. return new CheckInteractiveResult(this, true, ResourcePath.resource_sprite_ui_icon_icon_pickup_png);
  47. }
  48. return base.CheckInteractive(master);
  49. }
  50. public void OnRemoveItem()
  51. {
  52. }
  53.  
  54. public void OnPickUpItem()
  55. {
  56. }
  57.  
  58. public void OnActiveItem()
  59. {
  60. }
  61.  
  62. public void OnConcealItem()
  63. {
  64. }
  65.  
  66. public void OnOverflowItem()
  67. {
  68. }
  69. }