package mapped;

import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSPcmStream;

@ObfuscatedName("bk")
public abstract class PcmStream extends Node implements RSPcmStream {
   @ObfuscatedName("ak")
   @ObfuscatedSignature(
      descriptor = "Lbk;"
   )
   PcmStream after;
   @ObfuscatedName("aj")
   int field337;
   @ObfuscatedName("am")
   @ObfuscatedSignature(
      descriptor = "Lcl;"
   )
   AbstractSound sound;
   @ObfuscatedName("aq")
   volatile boolean active;

   protected PcmStream() {
      this.active = true;
   }

   @ObfuscatedName("au")
   @ObfuscatedSignature(
      descriptor = "()Lbk;"
   )
   protected abstract PcmStream vmethod6210();

   @ObfuscatedName("aa")
   @ObfuscatedSignature(
      descriptor = "()Lbk;"
   )
   protected abstract PcmStream vmethod6222();

   @ObfuscatedName("ac")
   protected abstract int vmethod6210_base();

   @ObfuscatedName("al")
   protected abstract void fill_base(int[] var1, int var2, int var3);

   @ObfuscatedName("ap")
   protected abstract void skip_base(int var1);

   @ObfuscatedName("bx")
   int vmethod1046_base() {
      return 255;
   }

   @ObfuscatedName("ft")
   final void update_base(int[] var1, int var2, int var3) {
      if(this.active) {
         this.fill_base(var1, var2, var3);
      } else {
         this.skip_base(var3);
      }

   }
}
