MapEditor.Mod 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. MODULE MapEditor;
  2. IMPORT G := Graph, S := SimpleGui, Out;
  3. VAR
  4. frmMain: S.Form;
  5. pnlButtons: S.Panel;
  6. btnSave: S.Button;
  7. btnExit: S.Button;
  8. pnlMap: S.Panel;
  9. btn2: S.Button;
  10. btnMove: S.Button;
  11. XX, YY: INTEGER;
  12. moving: BOOLEAN;
  13. PROCEDURE Btn2OnClick(c: S.Widget);
  14. BEGIN
  15. c(S.Button).caption[1] := CHR((ORD(c(S.Button).caption[1]) + 1) MOD 1256)
  16. END Btn2OnClick;
  17. PROCEDURE BtnExitOnMouseMove(c: S.Widget; x, y: INTEGER);
  18. BEGIN
  19. c(S.Button).caption[5] := CHR((ORD(c(S.Button).caption[5]) + 1) MOD 256);
  20. c(S.Button).caption[6] := CHR(ORD(c(S.Button).caption[5]) + 1);
  21. c(S.Button).caption[7] := 0X
  22. END BtnExitOnMouseMove;
  23. PROCEDURE BtnMoveOnMouseDown(c: S.Widget; x, y: INTEGER);
  24. BEGIN moving := TRUE; XX := x; YY := y
  25. END BtnMoveOnMouseDown;
  26. PROCEDURE BtnMoveOnMouseUp(c: S.Widget; x, y: INTEGER);
  27. BEGIN moving := FALSE
  28. END BtnMoveOnMouseUp;
  29. PROCEDURE BtnMoveOnMouseMove(c: S.Widget; x, y: INTEGER);
  30. BEGIN
  31. IF moving THEN
  32. c.x := c.x + x - XX;
  33. c.y := c.y + y - YY;
  34. XX := x; YY := y;
  35. IF c.x < 0 THEN c.x := 0 END
  36. END;
  37. END BtnMoveOnMouseMove;
  38. PROCEDURE InitInterface(): BOOLEAN;
  39. VAR W, H: INTEGER;
  40. color: G.Color;
  41. BEGIN
  42. G.GetScreenSize(W, H);
  43. frmMain := S.NewForm(0, 0, W, H);
  44. pnlButtons := S.NewPanel(frmMain, 4, 4, 104, 60);
  45. G.MakeCol(color, 40, 150, 40);
  46. S.SetBgColor(pnlButtons, color);
  47. btnSave := S.NewButton(pnlButtons, 4, 4, 96, 24, 'Сохранить');
  48. btnExit := S.NewButton(pnlButtons, 4, 32, 96, 24, 'Выйти');
  49. S.SetOnMouseMove(btnExit, BtnExitOnMouseMove);
  50. pnlMap := S.NewPanel(frmMain, 112, 4, W - 116, H - 8);
  51. G.MakeCol(color, 150, 90, 40);
  52. S.SetBgColor(pnlMap, color);
  53. btn2 := S.NewButton(pnlMap, 64, 64, 96, 96, 'ОГО!');
  54. S.SetOnClick(btn2, Btn2OnClick);
  55. btnMove := S.NewButton(pnlMap, 168, 64, 96, 96, 'ДВИГАЙ');
  56. S.SetOnMouseDown(btnMove, BtnMoveOnMouseDown);
  57. S.SetOnMouseUp(btnMove, BtnMoveOnMouseUp);
  58. S.SetOnMouseMove(btnMove, BtnMoveOnMouseMove);
  59. moving := FALSE
  60. RETURN TRUE END InitInterface;
  61. PROCEDURE Init(): BOOLEAN;
  62. VAR ok: BOOLEAN;
  63. BEGIN ok := FALSE;
  64. G.Init;
  65. S.Init;
  66. IF G.Done & S.Done & InitInterface() THEN
  67. ok := TRUE
  68. END
  69. RETURN ok END Init;
  70. PROCEDURE Close;
  71. BEGIN
  72. G.Close
  73. END Close;
  74. BEGIN
  75. IF Init() THEN S.Run ELSE Out.String('Error loading.'); Out.Ln END;
  76. Close
  77. END MapEditor.