Beispiel #1
0
 private void TeleportLoop()
 {
     if (_currentState == CargoTelepadState.Idle && _teleportQueue.Count > 0)
     {
         _currentState = CargoTelepadState.Charging;
         if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
         {
             spriteComponent.LayerSetState(0, "idle");
         }
         Owner.SpawnTimer((int)(TeleportDelay * 1000), () =>
         {
             if (!Deleted && !Owner.Deleted && _currentState == CargoTelepadState.Charging && _teleportQueue.Count > 0)
             {
                 _currentState = CargoTelepadState.Teleporting;
                 if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
                 {
                     spriteComponent.LayerSetState(0, "beam");
                 }
                 Owner.SpawnTimer((int)(TeleportDuration * 1000), () =>
                 {
                     if (!Deleted && !Owner.Deleted && _currentState == CargoTelepadState.Teleporting && _teleportQueue.Count > 0)
                     {
                         SoundSystem.Play(Filter.Pvs(Owner), "/Audio/Machines/phasein.ogg", Owner, AudioParams.Default.WithVolume(-8f));
                         Owner.EntityManager.SpawnEntity(_teleportQueue[0].Product, Owner.Transform.Coordinates);
                         _teleportQueue.RemoveAt(0);
                         if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
                         {
                             spriteComponent.LayerSetState(0, "idle");
                         }
                         _currentState = CargoTelepadState.Idle;
                         TeleportLoop();
                     }
                 });
Beispiel #2
0
 private void PowerUpdate(PowerChangedMessage args)
 {
     if (args.Powered && _currentState == CargoTelepadState.Unpowered)
     {
         _currentState = CargoTelepadState.Idle;
         if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
         {
             spriteComponent.LayerSetState(0, "idle");
         }
         TeleportLoop();
     }
     else if (!args.Powered)
     {
         _currentState = CargoTelepadState.Unpowered;
         if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
         {
             spriteComponent.LayerSetState(0, "offline");
         }
     }
 }
Beispiel #3
0
 private void PowerUpdate(object?sender, PowerStateEventArgs args)
 {
     if (args.Powered && _currentState == CargoTelepadState.Unpowered)
     {
         _currentState = CargoTelepadState.Idle;
         if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
         {
             spriteComponent.LayerSetState(0, "pad-idle");
         }
         TeleportLoop();
     }
     else if (!args.Powered)
     {
         _currentState = CargoTelepadState.Unpowered;
         if (Owner.TryGetComponent <SpriteComponent>(out var spriteComponent))
         {
             spriteComponent.LayerSetState(0, "pad-offline");
         }
     }
 }