Jelajahi Sumber

SimpleGui: Delay if no flip

Arthur Yefimov 1 tahun lalu
induk
melakukan
096c50d730

+ 2 - 2
Programs/Examples/Game/MapEditor.Mod

@@ -1,6 +1,6 @@
 MODULE MapEditor;
 IMPORT G := Graph, S := SimpleGui, Out, Int, Strings, E := GameEngine;
-CONST window = FALSE;
+CONST window = ~FALSE;
 VAR
   frmMain: S.Form;
 
@@ -118,7 +118,7 @@ RETURN TRUE END InitInterface;
 PROCEDURE Init(): BOOLEAN;
 VAR ok: BOOLEAN;
 BEGIN ok := TRUE;
-  IF window THEN G.Settings(640, 480, {G.window}) END;
+  IF window THEN G.Settings(640, 480, {G.window, G.maximized}) END;
   G.Init;
   IF ~G.Done THEN ok := FALSE END;
   IF ok THEN

+ 4 - 0
Programs/Examples/Game/SimpleGui.Mod

@@ -37,6 +37,8 @@ TYPE
     bgColor*, fgColor*: G.Color;
     redraw*: BOOLEAN; (** TRUE if widget or it's insides need to be redrawn *)
     redrawSelf*: BOOLEAN; (** TRUE if widget itself needs to be redrawn *)
+    visible*: BOOLEAN;
+    enabled*: BOOLEAN;
     focusable*: BOOLEAN; (** TRUE if widget can get focus *)
     focused*: BOOLEAN; (** TRUE if this widget is globally in focus *)
     hovered*: BOOLEAN; (** TRUE if mouse pointer is over the widget *)
@@ -421,6 +423,7 @@ END SetOnClick;
 PROCEDURE InitWidget*(c: Widget; w, h: INTEGER);
 BEGIN c.x := 0; c.y := 0; c.w := w; c.h := h;
   c.redraw := TRUE; c.redrawSelf := TRUE;
+  c.visible := TRUE; c.enabled := TRUE;
   c.focusable := FALSE; c.focused := FALSE;
   c.hovered := FALSE; c.pressed := FALSE;
   G.MakeCol(c.bgColor, 180, 180, 180);
@@ -1131,6 +1134,7 @@ BEGIN
   IF updated OR forceFlip THEN
     G.Flip;
     forceFlip := FALSE
+  ELSE G.Delay(4)
   END
 END DrawAll;
 

+ 9 - 9
Programs/Examples/TestSimpleGui.Mod → Programs/Examples/Game/TestSimpleGui.Mod

@@ -11,7 +11,7 @@ VAR
   btn2: S.Button;
   btnMove: S.Button;
   edtText: S.Edit;
-  scbHoriz, scbHoriz2: S.ScrollBar;
+  scbHorz, scbHorz2: S.ScrollBar;
   scbVert: S.ScrollBar;
   sbxMap: S.ScrollBox;
   btnFile: S.Button;
@@ -62,18 +62,18 @@ END BtnMoveOnMouseMove;
 PROCEDURE OnScroll(c: S.ScrollBar; value: INTEGER);
 VAR s: ARRAY 32 OF CHAR;
 BEGIN
-  S.ScrollBarSetValue(scbHoriz2, value);
+  S.ScrollBarSetValue(scbHorz2, value);
 
-  Int.Str(scbHoriz.value, s);
+  Int.Str(scbHorz.value, s);
   Strings.Append(':', s);
   Int.Append(scbVert.value, s);
   S.EditSetText(edtText, s)
 END OnScroll;
 
-PROCEDURE ScbHoriz2OnScroll(c: S.ScrollBar; value: INTEGER);
+PROCEDURE ScbHorz2OnScroll(c: S.ScrollBar; value: INTEGER);
 BEGIN
   S.ScrollBarSetValue(scbVert, value)
-END ScbHoriz2OnScroll;
+END ScbHorz2OnScroll;
 
 PROCEDURE CustomOnPaint(c: S.Widget; x, y, w, h: INTEGER);
 VAR color: G.Color;
@@ -123,10 +123,10 @@ BEGIN
   S.SetOnClick(btnExit, BtnExitOnClick);
   S.SetOnMouseMove(btnExit, BtnExitOnMouseMove);
   edtText := S.NewEdit(pnlSide, 4, 60, 96, 20);
-  scbHoriz := S.NewScrollBar(pnlSide, 4, 84, 96, 16);
-  S.ScrollBarSetOnScroll(scbHoriz, OnScroll);
-  scbHoriz2 := S.NewScrollBar(pnlSide, 24, 104, 76, 50);
-  S.ScrollBarSetOnScroll(scbHoriz2, ScbHoriz2OnScroll);
+  scbHorz := S.NewScrollBar(pnlSide, 4, 84, 96, 16);
+  S.ScrollBarSetOnScroll(scbHorz, OnScroll);
+  scbHorz2 := S.NewScrollBar(pnlSide, 24, 104, 76, 50);
+  S.ScrollBarSetOnScroll(scbHorz2, ScbHorz2OnScroll);
   scbVert := S.NewScrollBar(pnlSide, 4, 104, 16, 140);
   S.ScrollBarSetVertical(scbVert, TRUE);
   S.ScrollBarSetOnScroll(scbVert, OnScroll);