Free Hero Mesh

Check-in [9889c7bed6]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Corrections to default configuration, and some more stuff added to README
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 9889c7bed6ace6547aa08f6033f578c35e8cecd2
User & Date: user on 2021-06-16 18:03:20
Other Links: manifest | tags
Context
2021-06-18
00:28
Display yellow level numbers in solution replay mode check-in: d803d36742 user: user tags: trunk
2021-06-16
18:03
Corrections to default configuration, and some more stuff added to README check-in: 9889c7bed6 user: user tags: trunk
2021-06-13
22:31
Add a few more commands into the picture editor check-in: d021d4aad7 user: user tags: trunk
Changes

Modified README from [7e8d2c2a58] to [6086b5c9c2].

43
44
45
46
47
48
49






50
51
52
53
54
55
56
57
58
59
60
61
62















63
64
65
66
67
68
69

* If you wish to alter some of the files, Node.js or a compatible
JavaScript runtime is required for compiling these files (you do not need
this if you do not wish to modify Free Hero Mesh)

* The smallxrm is required. It is included with this package; you must
compile smallxrm.c as smallxrm.o (one way is "bash smallxrm.c").







The distributor should edit man6/heromesh.str in order to correctly
specify the directory containing the documentation files.

Before using it, you must create a file called .heromeshrc in your home
directory; you may use default.heromeshrc to start with, and then customize
it as you wish.

If compiled with "./compile p" then it is installed as "bin/heromesh"
(relative to the current directory, which should be the directory where
the source files are) and installs "bin/current.heromeshrc" as well (if it
does not already exist; it won't overwrite an existing file). In this case,
it can be used as a "portable app" mode.

















=== Documentation ===

Free Hero Mesh includes the following documentation files (plain text):

* ARCHITECTURE: Describes the source code of Free Hero Mesh. This is only







>
>
>
>
>
>













>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

* If you wish to alter some of the files, Node.js or a compatible
JavaScript runtime is required for compiling these files (you do not need
this if you do not wish to modify Free Hero Mesh)

* The smallxrm is required. It is included with this package; you must
compile smallxrm.c as smallxrm.o (one way is "bash smallxrm.c").

* Colour display, with resolution at least 640x480 (preferably more), and
at least 256 colours

* Keyboard and mouse, with three mouse buttons (the mouse wheel is not
needed and is not used, but it is OK if you have it)

The distributor should edit man6/heromesh.str in order to correctly
specify the directory containing the documentation files.

Before using it, you must create a file called .heromeshrc in your home
directory; you may use default.heromeshrc to start with, and then customize
it as you wish.

If compiled with "./compile p" then it is installed as "bin/heromesh"
(relative to the current directory, which should be the directory where
the source files are) and installs "bin/current.heromeshrc" as well (if it
does not already exist; it won't overwrite an existing file). In this case,
it can be used as a "portable app" mode.

There are optional runtime features that may require other programs in
order to use them, but that you can ignore if you do not use them. Such
optional features include:

* If you want to import/export pictures, you will need an implementation
of farbfeld. ImageMagick 7 includes an implementation of farbfeld, so if
you have that, then that will work. There are also other implementations,
such as the original "farbfeld" package, and Farbfeld Utilities.

* If you want to use the clipboard functions, you will need xclip or some
other program to interact the clipboard with stdin/stdout.

(The X window system is not necessarily required; you can use any system
that can be used with SDL.)


=== Documentation ===

Free Hero Mesh includes the following documentation files (plain text):

* ARCHITECTURE: Describes the source code of Free Hero Mesh. This is only

Modified default.heromeshrc from [3ae6768dd0] to [74d849228e].

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
?.gameKey.alt.N: 'NUMLOCK
?.gameKey.alt.O: 'SCRLOCK
?.gameKey.alt.S: 'SHIFT
?.gameKey.alt.T: 'TAB
?.gameKey.alt.Z: 'CTRL

! Game key bindings
?.gameKey.ctrl.E: ^E
?.gameKey.ctrl.I: select 'mi',:import_move_list;
?.gameKey.ctrl.Q: ^Q
?.gameKey.ctrl.S: ^S
?.gameKey.ctrl.T: ^T
?.gameKey.ctrl.X: select 'mx',:export_move_list;
?.gameClick.right: ^o
?.gameClick.middle: ^d
?.gameKey.kp_enter: =0
?.gameKey.escape: =0
?.gameKey.f1: +1
?.gameKey.f2: +10
?.gameKey.f3: +100
?.gameKey.f4: +1000
?.gameKey.shift.f1: -1
?.gameKey.shift.f2: -10
?.gameKey.shift.f3: -100
?.gameKey.shift.f4: -1000
?.gameKey.f5: ^M
?.gameKey.f6: ^<
?.gameKey.f7: ^>
?.gameKey.f8: ^s
?.gameKey.tab: ^I
?.gameKey.alt.D: select '^d',$key_xy;
?.gameKey.alt.G: ^g
?.gameKey.alt.P: ^p

! Editor key bindings
?.editKey.1: select 'mr',0;
?.editKey.2: select 'mr',1;
?.editKey.3: select 'mr',2;







|
<
|
|
<


















<







101
102
103
104
105
106
107
108

109
110

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

129
130
131
132
133
134
135
?.gameKey.alt.N: 'NUMLOCK
?.gameKey.alt.O: 'SCRLOCK
?.gameKey.alt.S: 'SHIFT
?.gameKey.alt.T: 'TAB
?.gameKey.alt.Z: 'CTRL

! Game key bindings
?.gameKey.ctrl.D: select '^d',$key_xy;

?.gameKey.ctrl.E: ^E
?.gameKey.ctrl.I: select 'mi',:import_move_list;

?.gameKey.ctrl.X: select 'mx',:export_move_list;
?.gameClick.right: ^o
?.gameClick.middle: ^d
?.gameKey.kp_enter: =0
?.gameKey.escape: =0
?.gameKey.f1: +1
?.gameKey.f2: +10
?.gameKey.f3: +100
?.gameKey.f4: +1000
?.gameKey.shift.f1: -1
?.gameKey.shift.f2: -10
?.gameKey.shift.f3: -100
?.gameKey.shift.f4: -1000
?.gameKey.f5: ^M
?.gameKey.f6: ^<
?.gameKey.f7: ^>
?.gameKey.f8: ^s
?.gameKey.tab: ^I

?.gameKey.alt.G: ^g
?.gameKey.alt.P: ^p

! Editor key bindings
?.editKey.1: select 'mr',0;
?.editKey.2: select 'mr',1;
?.editKey.3: select 'mr',2;
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169



170
171
172
?.editKey.down: select 'mR',+1;
?.editKey.C: select 'lc',:level_code where :level_code=cast(:level_code as int);
?.editKey.E: ^s
?.editKey.F: with n(n) as (select 65 union all select n+1 h from n where h<=64*pfheight()+65) select '^a',n from n;
?.editKey.R: select 're',substr(:resize,1,instr(:resize,'x')-1),substr(:resize,instr(:resize,'x')+1) where length(:resize);
?.editKey.ctrl.N: ^N
?.editKey.ctrl.P: ^P
?.editKey.ctrl.Q: ^Q
?.editKey.ctrl.S: ^S
?.editKey.ctrl.T: ^T
?.editKey.ctrl.X: select 're',pfwidth(),pfheight();
?.editKey.space: ^c
?.editKey.return: ^e
?.editKey.f1: select 'im',:Import_Level;
?.editKey.f2: select 'ex',:Export_Level;
?.editClick.left: ^a
?.editClick.ctrl.left: select 'em',id from objects where x=$X and y=$Y and up is null;
?.editClick.alt.left: ^u
?.editClick.right: delete from objects where x=$X and y=$Y and up is null;

! Global key bindings
?.?.kp_minus: select 'go',-(level()-1) where level()>1;
?.?.kp_plus: select 'go',-(level()+1) where level()<max_level();
?.?.ctrl.G: select 'go',-:Go_To_Level where :Go_To_Level=cast(:Go_To_Level as int) and cast(:Go_To_Level as int)>0;



?.?.shift.ctrl.M: select ':s';
?.?.f10: select ':x';








<
<
<














>
>
>



143
144
145
146
147
148
149



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
?.editKey.down: select 'mR',+1;
?.editKey.C: select 'lc',:level_code where :level_code=cast(:level_code as int);
?.editKey.E: ^s
?.editKey.F: with n(n) as (select 65 union all select n+1 h from n where h<=64*pfheight()+65) select '^a',n from n;
?.editKey.R: select 're',substr(:resize,1,instr(:resize,'x')-1),substr(:resize,instr(:resize,'x')+1) where length(:resize);
?.editKey.ctrl.N: ^N
?.editKey.ctrl.P: ^P



?.editKey.ctrl.X: select 're',pfwidth(),pfheight();
?.editKey.space: ^c
?.editKey.return: ^e
?.editKey.f1: select 'im',:Import_Level;
?.editKey.f2: select 'ex',:Export_Level;
?.editClick.left: ^a
?.editClick.ctrl.left: select 'em',id from objects where x=$X and y=$Y and up is null;
?.editClick.alt.left: ^u
?.editClick.right: delete from objects where x=$X and y=$Y and up is null;

! Global key bindings
?.?.kp_minus: select 'go',-(level()-1) where level()>1;
?.?.kp_plus: select 'go',-(level()+1) where level()<max_level();
?.?.ctrl.G: select 'go',-:Go_To_Level where :Go_To_Level=cast(:Go_To_Level as int) and cast(:Go_To_Level as int)>0;
?.?.ctrl.Q: ^Q
?.?.ctrl.S: ^S
?.?.ctrl.T: ^T
?.?.shift.ctrl.M: select ':s';
?.?.f10: select ':x';