MapEditor.Mod 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. MODULE MapEditor;
  2. IMPORT G := Graph, S := SimpleGui, Out, Int, Strings;
  3. CONST window = FALSE;
  4. VAR
  5. frmMain: S.Form;
  6. pnlTop: S.Panel;
  7. lblMapName: S.Label;
  8. edtMapName: S.Edit;
  9. btnOpen: S.Button;
  10. btnSave: S.Button;
  11. btnExit: S.Button;
  12. pnlSide: S.Panel;
  13. sbxMap: S.ScrollBox;
  14. map: S.Widget;
  15. PROCEDURE BtnExitOnClick(c: S.Widget);
  16. BEGIN
  17. S.Quit
  18. END BtnExitOnClick;
  19. PROCEDURE MapOnPaint(c: S.Widget; x, y, w, h: INTEGER);
  20. VAR color: G.Color;
  21. BEGIN
  22. G.MakeCol(color, 255, 255, 0);
  23. G.Line(x, y, x + w - 1, y + h - 1, color);
  24. G.Line(x + w - 1, y, x, y + h - 1, color);
  25. END MapOnPaint;
  26. PROCEDURE SbxMapOnMouseMove(c: S.Widget; x, y: INTEGER; btns: SET);
  27. VAR color: G.Color;
  28. draw: BOOLEAN;
  29. BEGIN
  30. draw := TRUE;
  31. IF btns = {1} THEN
  32. G.MakeCol(color, 0, 0, 0)
  33. ELSIF btns = {2} THEN
  34. G.MakeCol(color, 0, 255, 255)
  35. ELSE
  36. draw := FALSE
  37. END;
  38. IF draw THEN
  39. G.Target(c(S.Canvas).bmp);
  40. G.PutPixel(x, y, color)
  41. END
  42. END SbxMapOnMouseMove;
  43. PROCEDURE InitInterface(): BOOLEAN;
  44. VAR W, H: INTEGER;
  45. color: G.Color;
  46. BEGIN
  47. G.GetScreenSize(W, H);
  48. frmMain := S.NewForm(0, 0, W, H);
  49. pnlTop := S.NewPanel(frmMain, 0, 0, W, 40);
  50. lblMapName := S.NewLabel(pnlTop, 8, 9, 120, 22, 'Имя файла:');
  51. S.LabelSetAlign(lblMapName, S.alRight);
  52. edtMapName := S.NewEdit(pnlTop, lblMapName.x + lblMapName.w + 8,
  53. 9, 120, 22);
  54. btnOpen := S.NewButton(pnlTop, edtMapName.x + edtMapName.w + 8,
  55. 8, 96, 24, 'Открыть');
  56. btnSave := S.NewButton(pnlTop, btnOpen.x + btnOpen.w + 8,
  57. 8, 96, 24, 'Сохранить');
  58. btnExit := S.NewButton(pnlTop, W - 68, 8, 60, 24, 'Выход');
  59. S.SetOnClick(btnExit, BtnExitOnClick);
  60. pnlSide := S.NewPanel(frmMain, 0, pnlTop.h, 180, H - pnlTop.h);
  61. G.MakeCol(color, 40, 150, 40);
  62. S.SetBgColor(pnlSide, color);
  63. sbxMap := S.NewScrollBox(frmMain, pnlSide.w, pnlTop.h,
  64. W - pnlSide.w, H - pnlTop.h);
  65. S.ScrollBoxSetInnerSize(sbxMap, 1024, 1024);
  66. G.MakeCol(color, 0, 0, 0);
  67. S.SetBgColor(sbxMap, color);
  68. (*S.ScrollBoxSetNoBg(sbxMap, TRUE);*)
  69. (*S.SetOnMouseMove(sbxMap, SbxMapOnMouseMove);*)
  70. RETURN TRUE END InitInterface;
  71. PROCEDURE Init(): BOOLEAN;
  72. VAR ok: BOOLEAN;
  73. BEGIN ok := TRUE;
  74. IF window THEN G.Settings(640, 480, {G.window}) END;
  75. G.Init;
  76. IF ~G.Done THEN ok := FALSE END;
  77. IF ok THEN
  78. S.Init;
  79. IF ~S.Done THEN ok := FALSE END
  80. END;
  81. IF ok & ~InitInterface() THEN ok := FALSE END
  82. RETURN ok END Init;
  83. PROCEDURE Close;
  84. BEGIN
  85. G.Close
  86. END Close;
  87. BEGIN
  88. IF Init() THEN S.Run ELSE Out.String('Error loading.'); Out.Ln END;
  89. Close
  90. END MapEditor.