const PORT_COUNT = 10; var PortFlashing: array[-1..PORT_COUNT-1] of boolean; Button: array[-1..PORT_COUNT-1] of integer; FlashCounter: integer; i: integer; procedure OnTimer; begin FlashCounter:= FlashCounter+1; if FlashCounter = 2 then FlashCounter := 0; for i := 0 to PORT_COUNT-1 do if PortFlashing[i] then IOWarriorRemote(2).SetPort(i, FlashCounter = 1); end; procedure OnLoad; begin for i:= 0 to PORT_COUNT-1 do PortFlashing[i] := false; EnableTimer(1000); end; procedure OnCartwallPlayerStateChange (PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; OnAirMode: TCartwallOnAirMode); begin i:=0; for i := 0 to PORT_COUNT-1 do Button[i] := i; if (NewState = psLoaded) then begin IOWarriorRemote(2).SetPort(Button[PlayerIndex-1], true); end else if (NewState = psEmpty) then begin IOWarriorRemote(2).SetPort(Button[PlayerIndex-1], false); end else if (NewState = psPlaying) then begin PortFlashing[PlayerIndex-1] := true; end else if (NewState = psLoading) then begin IOWarriorRemote(2).SetPort(Button[PlayerIndex-1], true); end else if (NewState = psStopped) then begin PortFlashing[PlayerIndex-1]:=false; IOWarriorRemote(2).SetPort(Button[PlayerIndex-1], true); end; end;