MapEditor.Mod 2.4 KB

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