Re: PureBasic 6.21 beta 8 is out !
Posted: Tue May 06, 2025 10:19 am
May be you can comment stuff step by step
http://www.purebasic.com
https://www.purebasic.fr/english/
True. I overlooked that. Sorry!
Then I assume it's not the drawings, but something else. I don't use canvas, so I'm just stabbing in the dark.when I reduce the drawing operations to a minimum, it still lags.
Yep, it's weird... What I find really weird is that I cannot ALT-F4 the game. Does BindEvent() work exactly the same as handling events with WaitWindowEvent()? If it's stuck in an event loop, it wouldn't redraw the game at all (as it is a custom event).diceman wrote: Wed May 07, 2025 1:37 pm Don't know if helpful (maybe not), but with my game (turn-based dungeon crawler "The Ruins of Calaworm"), and another sideproject (an asteroids-shooter called "Cherry Shift") all is well.No lags, graphics is rendering fast as ever, also no CPU overload. Working on a (kinda) ancient laptop with Windows 10.
Hope you can figure things out.
Yes, it does, or at least is supposed to. I use BindEvent() for all of my apps, my main loop is always Repeat : WaitWindowEvent(1) : ForEver, and then I just BindEvent to #PB_Event_CloseWindow. I have no issues on PB 6.21 beta 9, but I'm writing desktop apps, not games. It should work the same though.Joubarbe wrote: Wed May 07, 2025 8:39 pm Yep, it's weird... What I find really weird is that I cannot ALT-F4 the game. Does BindEvent() work exactly the same as handling events with WaitWindowEvent()? If it's stuck in an event loop, it wouldn't redraw the game at all (as it is a custom event).
Code: Select all
BindGadgetEvent(#CANVAS_MAIN, @OnInput(), #PB_EventType_Input)
BindGadgetEvent(#CANVAS_MAIN, @OnKeyUp(), #PB_EventType_KeyUp)
BindGadgetEvent(#CANVAS_MAIN, @OnKeyDown(), #PB_EventType_KeyDown)
BindGadgetEvent(#CANVAS_MAIN, @OnLeftClick(), #PB_EventType_LeftClick)
BindGadgetEvent(#CANVAS_MAIN, @OnRightClick(), #PB_EventType_RightClick)
BindGadgetEvent(#CANVAS_MAIN, @OnMouseMove(), #PB_EventType_MouseMove)
BindGadgetEvent(#CANVAS_MAIN, @OnMouseWheel(), #PB_EventType_MouseWheel)
BindEvent(#PB_Event_SizeWindow, @OnResize(), #WINDOW_MAIN)
BindEvent(#PB_Event_ActivateWindow, @OnFocus(), #WINDOW_MAIN)
BindEvent(#PB_Event_Timer, @OnTimer(), #WINDOW_MAIN)
BindEvent(#EVENT_REDRAW_TERMINAL, @RenderTerminal())
BindEvent(#EVENT_REDRAW_VIEW, @RenderView())
AddKeyboardShortcut(#WINDOW_MAIN, #PB_Shortcut_Tab, #EVENT_TAB)
AddKeyboardShortcut(#WINDOW_MAIN, #PB_Shortcut_Shift | #PB_Shortcut_Tab, #EVENT_SHIFT_TAB)
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
CloseTerminal()
Case #PB_Event_Menu
Select EventMenu()
Case #EVENT_TAB
If terminal\no_keyboard_navigation = #False And terminal\active_view\locked = #False
NextView()
EndIf
Case #EVENT_SHIFT_TAB
If terminal\no_keyboard_navigation = #False And terminal\active_view\locked = #False
PreviousView()
EndIf
EndSelect
EndSelect
ForEver
Code: Select all
event = WaitWindowEvent(1)
You can definitely use BindEvent() for all of these, that's how I do it in my app.Joubarbe wrote: Wed May 07, 2025 9:17 pm Unfortunately, some events cannot be bound, so my event declaration block looks like this:
EDIT: Hmm... Maybe they could all go to BindEvent actuallyCode: Select all
BindGadgetEvent(#CANVAS_MAIN, @OnInput(), #PB_EventType_Input) BindGadgetEvent(#CANVAS_MAIN, @OnKeyUp(), #PB_EventType_KeyUp) BindGadgetEvent(#CANVAS_MAIN, @OnKeyDown(), #PB_EventType_KeyDown) BindGadgetEvent(#CANVAS_MAIN, @OnLeftClick(), #PB_EventType_LeftClick) BindGadgetEvent(#CANVAS_MAIN, @OnRightClick(), #PB_EventType_RightClick) BindGadgetEvent(#CANVAS_MAIN, @OnMouseMove(), #PB_EventType_MouseMove) BindGadgetEvent(#CANVAS_MAIN, @OnMouseWheel(), #PB_EventType_MouseWheel) BindEvent(#PB_Event_SizeWindow, @OnResize(), #WINDOW_MAIN) BindEvent(#PB_Event_ActivateWindow, @OnFocus(), #WINDOW_MAIN) BindEvent(#PB_Event_Timer, @OnTimer(), #WINDOW_MAIN) BindEvent(#EVENT_REDRAW_TERMINAL, @RenderTerminal()) BindEvent(#EVENT_REDRAW_VIEW, @RenderView()) AddKeyboardShortcut(#WINDOW_MAIN, #PB_Shortcut_Tab, #EVENT_TAB) AddKeyboardShortcut(#WINDOW_MAIN, #PB_Shortcut_Shift | #PB_Shortcut_Tab, #EVENT_SHIFT_TAB) Repeat event = WaitWindowEvent() Select event Case #PB_Event_CloseWindow CloseTerminal() Case #PB_Event_Menu Select EventMenu() Case #EVENT_TAB If terminal\no_keyboard_navigation = #False And terminal\active_view\locked = #False NextView() EndIf Case #EVENT_SHIFT_TAB If terminal\no_keyboard_navigation = #False And terminal\active_view\locked = #False PreviousView() EndIf EndSelect EndSelect ForEver
![]()