DestroyComponent.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma warning disable CS1591
  2. #pragma warning disable CS1998
  3. using Solana.Unity.Rpc.Models;
  4. using Solana.Unity.Wallet;
  5. using System.Threading.Tasks;
  6. using World.Program;
  7. namespace Bolt {
  8. public partial class World {
  9. public class DestroyComponentInstruction {
  10. public TransactionInstruction Instruction { get; set; }
  11. }
  12. public static async Task<DestroyComponentInstruction> DestroyComponent(PublicKey authority, PublicKey receiver, PublicKey entity, PublicKey componentId, byte[] seed) {
  13. var componentPda = WorldProgram.FindComponentPda(componentId, entity, seed);
  14. return await DestroyComponent(authority, receiver, entity, componentId, componentPda);
  15. }
  16. public static async Task<DestroyComponentInstruction> DestroyComponent(PublicKey authority, PublicKey receiver, PublicKey entity, PublicKey componentId, string seed) {
  17. var componentPda = WorldProgram.FindComponentPda(componentId, entity, seed);
  18. return await DestroyComponent(authority, receiver, entity, componentId, componentPda);
  19. }
  20. public static async Task<DestroyComponentInstruction> DestroyComponent(PublicKey authority, PublicKey receiver, PublicKey entity, PublicKey componentId) {
  21. var componentPda = WorldProgram.FindComponentPda(componentId, entity);
  22. return await DestroyComponent(authority, receiver, entity, componentId, componentPda);
  23. }
  24. public static async Task<DestroyComponentInstruction> DestroyComponent(PublicKey authority, PublicKey receiver, PublicKey entity, PublicKey componentProgram, PublicKey componentPda) {
  25. var componentProgramData = WorldProgram.FindComponentProgramDataPda(componentProgram);
  26. var destroyComponent = new DestroyComponentAccounts() {
  27. CpiAuth = WorldProgram.FindCpiAuthPda(),
  28. Authority = authority,
  29. Receiver = receiver,
  30. Entity = entity,
  31. Component = componentPda,
  32. ComponentProgram = componentProgram,
  33. ComponentProgramData = componentProgramData
  34. };
  35. var instruction = WorldProgram.DestroyComponent(destroyComponent);
  36. return new DestroyComponentInstruction() {
  37. Instruction = instruction
  38. };
  39. }
  40. }
  41. }