MapEditor.Mod 2.6 KB

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