MapEditor.Mod 3.3 KB

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