Code: Select all
EnableExplicit
Enumeration
#Menu_Add
#Menu_Delete
#Menu_Load
#Menu_Save
#Menu_Pause
#Menu_Down
#Menu_Escape
#Menu_PopUp
EndEnumeration
Structure FileStructure
Filename$
Speed.i
EndStructure
;- Main
Define.i Event, Exit, PauseFlag, File, FileNo, Help, LastTime, ActualTime, Buffer, Pitch, THeight, TWidth, YPos
Define.i DHeight, DWidth
Define Filename$, Line$
Define *Buffer.FileStructure, *Ptr.FileStructure
InitSprite()
; ExamineDesktops()
; DWidth = DesktopWidth(0)
; DHeight = DesktopHeight(0)
DWidth = 800
DHeight = 600
OpenWindow(0, 0, 0, DWidth, DHeight, "", #PB_Window_BorderLess)
SetWindowState(0, #PB_Window_Maximize)
OpenWindow(1, 0, 0, 250, 600, "Playlist", #PB_Window_SystemMenu|#PB_Window_ScreenCentered);|#PB_Window_Invisible)
CreateMenu(0, WindowID(1))
MenuTitle("File")
MenuItem(#Menu_Add, "Add")
MenuItem(#Menu_Delete, "Delete")
MenuItem(#Menu_Load, "Load")
MenuItem(#Menu_Save, "Save")
ListIconGadget(0, 0, 0, 250, 600, "Name", 180, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Speed", 50)
AddKeyboardShortcut(0, #PB_Shortcut_Pause, #Menu_Pause)
AddKeyboardShortcut(0, #PB_Shortcut_Down, #Menu_Down)
AddKeyboardShortcut(0, #PB_Shortcut_Escape, #Menu_Escape)
AddKeyboardShortcut(0, #PB_Shortcut_Space, #Menu_PopUp)
OpenWindowedScreen(WindowID(0), 0, 0, DWidth, DHeight, 1, 0, 0)
LoadFont(0, "Arial", 20, #PB_Font_Bold)
StartDrawing(ScreenOutput())
DrawingFont(FontID(0))
THeight = TextHeight(" ")
StopDrawing()
CreateImage(0, DWidth, THeight)
PauseFlag = #True
FileNo = -1
Repeat
Repeat
Event = WindowEvent()
Select EventWindow()
Case 0
Select Event
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_PopUp
HideWindow(1, #False, #PB_Window_ScreenCentered)
Case #Menu_Pause
If PauseFlag
PauseFlag = #False
If Not IsFile(File)
If GetGadgetState(0) = -1
If CountGadgetItems(0)
FileNo = 0
EndIf
Else
If CountGadgetItems(0)
FileNo + 1
If FileNo = CountGadgetItems(0)
FileNo = 0
EndIf
Else
FileNo = - 1
EndIf
EndIf
;Debug FileNo
SetGadgetState(0, FileNo)
*Ptr = GetGadgetItemData(0, FileNo)
File = ReadFile(#PB_Any, *Ptr\Filename$)
YPos = THeight
EndIf
Else
PauseFlag = #True
EndIf
Case #Menu_Down
;Debug "DOWN"
If CountGadgetItems(0)
If IsFile(File)
CloseFile(File)
EndIf
FileNo + 1
If FileNo = CountGadgetItems(0)
FileNo = 0
EndIf
SetGadgetState(0, FileNo)
*Ptr = GetGadgetItemData(0, FileNo)
File = ReadFile(#PB_Any, *Ptr\Filename$)
EndIf
Case #Menu_Escape
Exit = #True
EndSelect
Case #PB_Event_CloseWindow
Exit = #True
EndSelect
Case 1
Select Event
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_Add
Filename$ = OpenFileRequester("Choose a file", Filename$, "Text|*.txt", 0)
If Len(Filename$)
Help = CountGadgetItems(0)
AddGadgetItem(0, Help, GetFilePart(Filename$, #PB_FileSystem_NoExtension))
*Buffer = AllocateMemory(SizeOf(FileStructure))
SetGadgetItemData(0, Help, *Buffer)
*Buffer\Filename$ = Filename$
*Buffer\Speed = 10
SetGadgetState(0, Help)
EndIf
Case #Menu_Delete
Case #Menu_Load
Case #Menu_Save
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #PB_Event_CloseWindow
HideWindow(1, #True)
EndSelect
EndSelect
Until Event = 0
ActualTime = ElapsedMilliseconds()
If Not PauseFlag
If IsFile(File)
If LastTime + *Ptr\Speed < ActualTime
If YPos = THeight
If Eof(File)
CloseFile(File)
FileNo + 1
If FileNo = CountGadgetItems(0)
FileNo = 0
EndIf
SetGadgetState(0, FileNo)
*Ptr = GetGadgetItemData(0, FileNo)
File = ReadFile(#PB_Any, *Ptr\Filename$)
PauseFlag = #True
EndIf
Line$ = ReadString(File)
; Debug Line$
StartDrawing(ImageOutput(0))
DrawingFont(FontID(0))
Box(0, 0, DWidth, THeight, 0)
TWidth = TextWidth(Line$)
DrawText((DWidth >> 1) - (TWidth >> 1), 0, Line$)
StopDrawing()
YPos = 0
EndIf
If Not PauseFlag
StartDrawing(ScreenOutput())
Buffer = DrawingBuffer()
Pitch = DrawingBufferPitch()
MoveMemory(Buffer + Pitch, Buffer, (DHeight - 1) * Pitch)
GrabImage(0, 1, 0, YPos, DWidth, 1)
YPos + 1
DrawImage(ImageID(1), 0, DHeight - 1)
FreeImage(1)
StopDrawing()
LastTime = ActualTime
EndIf
EndIf
EndIf
EndIf
FlipBuffers()
Until Exit
But I think you should try it with Sprites.