ifmapper 1.0.0 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. data/HISTORY.txt +648 -627
  2. data/IFMapper.gemspec +29 -28
  3. data/IFMapper.rbw +31 -31
  4. data/TODO.txt +8 -7
  5. data/bin/IFMapper +31 -31
  6. data/docs/en/index.html +0 -0
  7. data/docs/en/start.html +3 -2
  8. data/docs/en/start.html~ +516 -0
  9. data/docs/es/index.html +0 -0
  10. data/docs/es/start.html +13 -14
  11. data/docs/es/start.html~ +1280 -0
  12. data/docs/images/IFMapper_main.gif +0 -0
  13. data/docs/images/automap.gif +0 -0
  14. data/docs/images/complex_connection.gif +0 -0
  15. data/docs/images/connection.gif +0 -0
  16. data/docs/images/connection_menu.gif +0 -0
  17. data/docs/images/room_description.gif +0 -0
  18. data/docs/images/room_small.gif +0 -0
  19. data/icons/copy.png +0 -0
  20. data/icons/cut.png +0 -0
  21. data/icons/filenew.png +0 -0
  22. data/icons/fileopen.png +0 -0
  23. data/icons/filesave.png +0 -0
  24. data/icons/filesaveas.png +0 -0
  25. data/icons/help.png +0 -0
  26. data/icons/kill.png +0 -0
  27. data/icons/nextpage.png +0 -0
  28. data/icons/paste.png +0 -0
  29. data/icons/prevpage.png +0 -0
  30. data/icons/printicon.png +0 -0
  31. data/icons/redo.png +0 -0
  32. data/icons/room_e.gif +0 -0
  33. data/icons/room_e.xpm +0 -0
  34. data/icons/room_n.gif +0 -0
  35. data/icons/room_n.xpm +0 -0
  36. data/icons/room_ne.gif +0 -0
  37. data/icons/room_ne.xpm +0 -0
  38. data/icons/room_nw.gif +0 -0
  39. data/icons/room_nw.xpm +0 -0
  40. data/icons/room_s.gif +0 -0
  41. data/icons/room_s.xpm +0 -0
  42. data/icons/room_se.gif +0 -0
  43. data/icons/room_se.xpm +0 -0
  44. data/icons/room_sw.gif +0 -0
  45. data/icons/room_sw.xpm +0 -0
  46. data/icons/room_w.gif +0 -0
  47. data/icons/room_w.xpm +0 -0
  48. data/icons/saveas.png +0 -0
  49. data/icons/undo.png +0 -0
  50. data/icons/winapp.png +0 -0
  51. data/icons/zoom.png +0 -0
  52. data/lib/IFMapper/AStar.rb +250 -250
  53. data/lib/IFMapper/Connection.rb +202 -202
  54. data/lib/IFMapper/FXAboutDialogBox.rb +32 -32
  55. data/lib/IFMapper/FXConnection.rb +364 -364
  56. data/lib/IFMapper/FXConnectionDialogBox.rb +124 -124
  57. data/lib/IFMapper/FXDCPostscript.rb +404 -404
  58. data/lib/IFMapper/FXDCPrint.rb +15 -15
  59. data/lib/IFMapper/FXItemList.rb +108 -0
  60. data/lib/IFMapper/FXMap.rb +2147 -2116
  61. data/lib/IFMapper/FXMapColorBox.rb +88 -88
  62. data/lib/IFMapper/FXMapDialogBox.rb +127 -127
  63. data/lib/IFMapper/FXMapFileDialog.rb +34 -34
  64. data/lib/IFMapper/FXMapperSettings.rb +206 -205
  65. data/lib/IFMapper/FXMapperWindow.rb +1592 -1571
  66. data/lib/IFMapper/FXPDFMapExporterOptionsDialogBox.rb +46 -0
  67. data/lib/IFMapper/FXRoom.rb +263 -263
  68. data/lib/IFMapper/FXRoomDialogBox.rb +159 -159
  69. data/lib/IFMapper/FXRoomList.rb +95 -95
  70. data/lib/IFMapper/FXSearchDialogBox.rb +51 -51
  71. data/lib/IFMapper/FXSection.rb +33 -33
  72. data/lib/IFMapper/FXSectionDialogBox.rb +38 -38
  73. data/lib/IFMapper/FXSpline.rb +52 -52
  74. data/lib/IFMapper/FXWarningBox.rb +51 -50
  75. data/lib/IFMapper/GUEReader.rb +445 -445
  76. data/lib/IFMapper/IFMReader.rb +584 -584
  77. data/lib/IFMapper/IFMWriter.rb +245 -227
  78. data/lib/IFMapper/Inform7Writer.rb +579 -573
  79. data/lib/IFMapper/InformReader.rb +478 -478
  80. data/lib/IFMapper/InformWriter.rb +364 -359
  81. data/lib/IFMapper/Map.rb +202 -200
  82. data/lib/IFMapper/MapPrinting.rb +162 -162
  83. data/lib/IFMapper/MapReader.rb +900 -900
  84. data/lib/IFMapper/PDFMapExporter.rb +526 -483
  85. data/lib/IFMapper/Room.rb +153 -151
  86. data/lib/IFMapper/Section.rb +234 -234
  87. data/lib/IFMapper/TADSReader.rb +474 -471
  88. data/lib/IFMapper/TADSWriter.rb +375 -370
  89. data/lib/IFMapper/TranscriptDialogBox.rb +0 -0
  90. data/lib/IFMapper/TranscriptReader.rb +1361 -1359
  91. data/lib/IFMapper/locales/en/Messages.rb +446 -435
  92. data/lib/IFMapper/locales/es/Messages.rb +451 -440
  93. data/lib/IFMapper/locales/es/Messages_iso-8859-1.rb +455 -440
  94. data/lib/IFMapper/locales/es/runme.sh +3 -3
  95. data/maps/A New Life.map b/data/maps/A New → Life.map +0 -0
  96. data/maps/AMFV.map +0 -0
  97. data/maps/AllRoads.map +0 -0
  98. data/maps/Aotearoa.map +0 -0
  99. data/maps/Bronze.map +0 -0
  100. data/maps/Bureaucracy.ifm +0 -0
  101. data/maps/Bureaucracy.map +0 -0
  102. data/maps/CityOfSecrets.map +0 -0
  103. data/maps/DDIV.map +0 -0
  104. data/maps/Following_A_Star.map +0 -0
  105. data/maps/Heated.map +0 -0
  106. data/maps/Heroine.map +0 -0
  107. data/maps/History Repeating.map b/data/maps/History → Repeating.map +0 -0
  108. data/maps/Hollywood_Hijinx.ifm +0 -0
  109. data/maps/Janitor.map +0 -0
  110. data/maps/Jigsaw.ifm +0 -0
  111. data/maps/Jigsaw.map +0 -0
  112. data/maps/LGOP.ifm +0 -0
  113. data/maps/Mercy.ifm +0 -0
  114. data/maps/Ninjas_Fate.map +0 -0
  115. data/maps/Pen_and_Paint.map +0 -0
  116. data/maps/Planetfall.ifm +0 -0
  117. data/maps/Planetfall.map +0 -0
  118. data/maps/Plundered_Hearts.ifm +0 -0
  119. data/maps/QuietEvening.map +0 -0
  120. data/maps/Ralph.ifm +0 -0
  121. data/maps/Reliques_of_Tolti_Alph.map +0 -0
  122. data/maps/Revolution.map +0 -0
  123. data/maps/Robots_of_Dawn.ifm +0 -0
  124. data/maps/SavoirFare.map +0 -0
  125. data/maps/Seastalker.ifm +0 -0
  126. data/maps/Seastalker.map +0 -0
  127. data/maps/Sherlock.ifm +0 -0
  128. data/maps/SoFar.ifm +0 -0
  129. data/maps/Starcross.ifm +0 -0
  130. data/maps/Suspended.ifm +0 -0
  131. data/maps/Tangle.map +0 -0
  132. data/maps/The_Lost_Sheep.map +0 -0
  133. data/maps/Unforgotten.map +0 -0
  134. data/maps/Warbler's Nest.map +0 -0
  135. data/maps/Warbler's_Nest.map +0 -0
  136. data/maps/Westminster_Abbey.map +0 -0
  137. data/maps/WinterWonderland.map +0 -0
  138. data/maps/Wishbringer.ifm +0 -0
  139. data/maps/Wishbringer2.ifm +0 -0
  140. data/maps/Zork1.ifm +0 -0
  141. data/maps/Zork2.ifm +0 -0
  142. data/maps/Zork3.ifm +0 -0
  143. data/maps/Zork_Zero.ifm +0 -0
  144. data/maps/anchor.ifm +0 -0
  145. data/maps/anchor.map +0 -0
  146. data/maps/atrox.ifm +0 -0
  147. data/maps/awaken.ifm +0 -0
  148. data/maps/babel.ifm +0 -0
  149. data/maps/balances.map +0 -0
  150. data/maps/ballerina.map +0 -0
  151. data/maps/bear.map +0 -0
  152. data/maps/bluechairs.map +0 -0
  153. data/maps/break_in.map +0 -0
  154. data/maps/bse.ifm +0 -0
  155. data/maps/building.map +0 -0
  156. data/maps/change.ifm +0 -0
  157. data/maps/christminster.map +0 -0
  158. data/maps/curses.ifm +0 -0
  159. data/maps/curves.ifm +0 -0
  160. data/maps/deadline.map +0 -0
  161. data/maps/delusions.map +0 -0
  162. data/maps/devours.map +0 -0
  163. data/maps/distress.map +0 -0
  164. data/maps/djinni.map +0 -0
  165. data/maps/dreamhold.map +0 -0
  166. data/maps/drift3.map +0 -0
  167. data/maps/eas.map +0 -0
  168. data/maps/eas2.map +0 -0
  169. data/maps/eas3.map +0 -0
  170. data/maps/edifice.ifm +0 -0
  171. data/maps/fallacy.map +0 -0
  172. data/maps/frozen.ifm +0 -0
  173. data/maps/gamlet.map +0 -0
  174. data/maps/glow.ifm +0 -0
  175. data/maps/guilty_bastards.map +0 -0
  176. data/maps/heist.map +0 -0
  177. data/maps/heroes.map +0 -0
  178. data/maps/inhumane.map +0 -0
  179. data/maps/kaged.map +0 -0
  180. data/maps/library.ifm +0 -0
  181. data/maps/lurkinghorror.map +0 -0
  182. data/maps/metamorphoses.map +0 -0
  183. data/maps/mindelec.ifm +0 -0
  184. data/maps/minster.ifm +0 -0
  185. data/maps/mite.map +0 -0
  186. data/maps/moonmist.map +0 -0
  187. data/maps/muldoon_legacy.map +0 -0
  188. data/maps/muse.ifm +0 -0
  189. data/maps/paperchase.ifm +0 -0
  190. data/maps/party.map +0 -0
  191. data/maps/pawn.map +0 -0
  192. data/maps/photograph.map +0 -0
  193. data/maps/pkgirl.map +0 -0
  194. data/maps/pytho.map +0 -0
  195. data/maps/risorgimento.map +0 -0
  196. data/maps/sherbet.map +0 -0
  197. data/maps/simple.map +0 -0
  198. data/maps/slouch.map +0 -0
  199. data/maps/space_st.ifm +0 -0
  200. data/maps/splashdown.map +0 -0
  201. data/maps/spring.map +0 -0
  202. data/maps/squarecircle.map +0 -0
  203. data/maps/stationfall.ifm +0 -0
  204. data/maps/theatre.ifm +0 -0
  205. data/maps/toonesia.ifm +0 -0
  206. data/maps/tortoise.ifm +0 -0
  207. data/maps/trinity.map +0 -0
  208. data/maps/vespers.map +0 -0
  209. data/maps/vgame.ifm +0 -0
  210. data/maps/wasp.map +0 -0
  211. data/maps/weather.ifm +0 -0
  212. data/maps/windhall.ifm +0 -0
  213. data/maps/worlds.map +0 -0
  214. data/maps/xtcontest.map +0 -0
  215. data/maps/zdungeon.map +0 -0
  216. data/maps/zebulon.ifm +0 -0
  217. data/maps/zerosum.map +0 -0
  218. metadata +226 -183
data/HISTORY.txt CHANGED
@@ -1,627 +1,648 @@
1
- v1.0.0 Bug fixes:
2
- - Versioning number now reflects v1.0.0 everywhere unlike v0.9.9.
3
-
4
- Improvements:
5
- - IFMapper now supports (actually, needs) Fox1.6.
6
- - IFMapper now supports internationalization to allow writing
7
- adventures in other languages besides English under Fox1.6
8
- using Unicode (UTF-8).
9
- Language can be changed by setting the environment variable
10
- LC_ALL or by starting IFMapper.rbw like:
11
-
12
- > ruby IFMapper.rbw -l es
13
-
14
- Languages currently supported: English (en) and Spanish (es).
15
- Default is still English.
16
- To write out Inform or TADS text in other languages, you will
17
- also need ruby's iconv module (which should now be part of
18
- both the windows and unix distros)
19
- To add new languages, go to ifmapper-1.0.0/lib/IFMapper/locales
20
- and add one for your particular language.
21
- Then you need to create an UTF-8 Message.rb file.
22
- If your editor does not support writing out UTF-8 directly,
23
- you can create a file in another encoding and then convert
24
- it with an utility like iconv (see example in
25
- ifmapper-1.0.0/lib/IFMapper/locales/es)
26
-
27
- - Inform7 writer is now better:
28
- * It now properly recognizes male/female people a
29
- tad better.
30
- * It now tries to avoid tags as much as possible
31
- to keep Inform7's concept of natural language.
32
- * It recognizes additional words as potential containers, etc.
33
- * It now recognizes the 'lit' property in some objects.
34
- - Bug fixed wrap_text() in all exporters.
35
-
36
-
37
- v0.9.9 Improvements:
38
- - It is now possible to export maps in Inform 7 new (beta) syntax,
39
- albeit the English grammar is still very limited.
40
- Just name your map with extension ".inform" instead of ".inf"
41
- when saving it or exporting it.
42
-
43
- v0.9.8 Bug fixes:
44
- - TADS Exporter was incorrectly recognizing locations with "room" in
45
- them as keywords and adding numbers to their tags. Fixed.
46
- [Bug Report: Greg Boetcherr]
47
- - When replacing dark rooms with lit rooms, the transcript
48
- automapper was discarding all other connections. So, if two dark
49
- rooms were connected, once one of the dark rooms became lit, the
50
- connection to the other dark room was removed. Fixed.
51
- - Typo: 'interative' for 'interactive' fixed in TranscriptReader.rb
52
- [Bug Report: unknown]
53
- - Fixed PDF Exporter which had broken in v0.9.7.
54
-
55
- Improvements:
56
- - Automapper now recognizes two new ways of describing exits as
57
- being blocked.
58
- - Automapper was not dealing with Undo properly when mapping
59
- interactively, leading to the creation of wrong exits if user
60
- moved right after an undo.
61
- - Automapper now tries to use the path map to determine if a location
62
- in map is blocked. This should have the benefit of having the
63
- automapper avoid placing rooms in the middle of complex connections.
64
- - Automapper now capitalizes the name of the game/room a tad more
65
- correctly, by always having the first word capitalized.
66
- - Added HTML documentation and upload it to rubyforge. These HTML
67
- docs are now also distributed with IFMapper.
68
- - Gem will now add a copy of 'IFMapper.rbw' to the ruby bin directory.
69
- [Suggestion: Lyle Johnson]
70
- - Added north-west, north-east, south-west, south-east as alternative
71
- move directions.
72
- [Suggestion: unknown]
73
-
74
-
75
- v0.9.7 What's new:
76
- - IFM exporting was incorrectly exporting
77
- map "";
78
- for sections that were unnamed and also when there was only one
79
- section.
80
- Now, IFM exporting will not export map name if only one section
81
- is present. And if multiple sections are present but are unnamed,
82
- sections will be given the default name of "Section #".
83
- [Bug Report: Eric Forgeot]
84
-
85
- - Improved name finding for Classic transcripts, by actually dealing
86
- with parenthesis in short names a tad more strictly.
87
-
88
- - Added support for reading GUEMap maps (.gmp format).
89
- For both, GUEMap v1.0+ and GUEMap v2.0 (beta).
90
- Comments in GUEmaps will be placed in the task section of rooms.
91
- As GUEmaps supports placing rooms with a finer grid, IFMapper will
92
- try to translate grid positions, but may not always be entirely
93
- successful.
94
-
95
- - Fixed a crashing bug that could occur very rarely when loading
96
- multiple maps due to the canvas not being created.
97
-
98
- - Fixed my email in the README.txt.
99
-
100
- - Improved warning box to allow for multi-line messages.
101
- This helps with telling user about errors when reading from
102
- a file.
103
-
104
- - Rewrote a big chunk of the map readers (inform/tads). Reason was
105
- two-fold:
106
- * make the code smaller and simpler
107
- * fix a logic problem in the layout algorithm which was
108
- leading to maps being laid out much bigger when map had
109
- a lot of one way connections. Now room layout is much, much
110
- improved.
111
- [Bug Report: Greg Boettcher]
112
- * sped up the creation of map code a tad.
113
-
114
- - Inform reader now understands most special international character
115
- sequences (@:a, etc).
116
-
117
- - TADS reader was marking some one way door exits as normal exits.
118
- Fixed.
119
-
120
- - TADS reader was not dealing with @location notation properly.
121
- It was sometimes placing objects in the wrong room, or completely
122
- ignoring them.
123
-
124
- - TADS reader now handles exits that are <<replaceAction(Enter,*)>>
125
-
126
- - Inform and TADS readers will now extract the name of the map from the
127
- Story constant.
128
-
129
- - Inform reader is a tad smarter about locating objects.
130
-
131
-
132
- v0.9.6 What's new:
133
-
134
- - IFM exporting had gotten broken around v0.9 due to a refactoring
135
- bug. Fixed.
136
-
137
- - CTRL selection was never quite working as advertised. Now it
138
- properly does toggle selecting of rooms/connections.
139
-
140
- - Minor improvement to the automapper. Now places that have Dr.,
141
- St., Ave. and Inc. in them will be recognized as locations.
142
- Previously, they were ignored due to the period.
143
-
144
- - The automapper will now correctly parse objects from take commands
145
- when the response is something like:
146
- You take the pencil from the bag.
147
- Previously, the object was considered to be 'pencil from the bag'
148
- instead of just 'pencil'.
149
-
150
- - Slight improvement to the automapper room description
151
- identification. When comparing descriptions and a perfect match
152
- or submatch of the description cannot be found against a room, all
153
- words in that room description will be compared for a
154
- potential match. A room will be matched as already present if
155
- at least 20 words match (they also have to be in the same order).
156
- However, if multiple rooms happen to match 20 words, then the room
157
- with more words matched will be considered as the correct match.
158
- This improvement helps with locations that have identical
159
- descriptions but that perhaps only change the exit paths.
160
-
161
- - I bug fixed the problem with TADS transcripts with the automapper
162
- crashing it. This was supposed to be fixed in 0.9.5 but I had
163
- inadvertedly reverted the fix before release.
164
-
165
- - Added a new mode to Automapper of transcripts. The new
166
- mode is called Capitalized and helps map rooms where the room name
167
- uses a single capitalized sentence, like:
168
- Women's change room
169
- Western closet
170
- instead of the more standard:
171
- Women's Change Room
172
- Western Closet
173
- This format seems somewhat popular among IFComp entries, which are
174
- probably trying to follow Infocom's format, but do so incorrectly.
175
-
176
- - Added a new ADRIFT mode to Automapper. This mode helps map
177
- ADRIFT games, which have some weird form of transcripts, lacking a
178
- prompt. Tested with The PK Girl mainly.
179
-
180
- - TADS3 source code reader is now much improved.
181
- It recognizes PathPassages, TravelMessage and noTravel
182
- exits properly.
183
- It does not consider a missing room as a fatal error and
184
- will properly find names of rooms when room line is split into
185
- multiple lines.
186
- It will also display passage and stairway exits properly (previously,
187
- they were considered door exits).
188
- Also, TADS3 reader can now properly parse a t3m Makefile for
189
- sources.
190
- You should now be able to map the big TADS3 demo game
191
- Return to Ditch Day from source, which previously would run
192
- into some issues.
193
-
194
- - TADS and Inform readers now use a slightly different algorithm for
195
- laying out rooms. This new algorithm results in smaller maps and
196
- usually less complex exits failing.
197
-
198
- v0.9.5 What's new:
199
-
200
- - IFMapper now looks for Fox1.4 and 1.2, in that order. Note that
201
- I still recommend Fox1.2, as it is more stable.
202
-
203
- - Automapper now supports selecting how locations are identified
204
- (either by comparing the room descriptions or just the short name)
205
- as well as adds support for some unusual location short name
206
- formats used in some Infocom games (Moonmist, Witness).
207
-
208
- - Automapper should now be able to automatically detect the name of
209
- the game from the transcript (at least with WinFrotz and
210
- Glux transcripts).
211
-
212
- - Automapper was idiotically skipping the first command typed in
213
- transcript. Fixed.
214
-
215
- - Room descriptions now remove starting/trailing spaces or newlines.
216
-
217
- - If possible, when getting an object, if the automapper sees an
218
- answer like "You now have the ...", it will take the object name
219
- from that line instead of from the name the user typed in his
220
- command.
221
-
222
- - Removed some debugging put statements from automapper that had been
223
- left by mistake in v0.9.
224
-
225
- - Added the name of the room to the statusbar when mouse is over
226
- a room.
227
-
228
- - You can now save an .ifm, .t, or .inf file directly from the
229
- save as requester, if you type in a filename with such an
230
- extension.
231
-
232
- - The automapper now also looks for transcripts with extensions
233
- .scr (Magnetic Scrolls/Glux) and .txt (Hugo) by default.
234
- Note that Hugo, Glux and Magnetic Scrolls transcripts do
235
- not append text to transcripts after each move, instead keeping a
236
- buffer that gets spit out when filled. Thus, automapping while
237
- playing a game with these interpreters game is not as interactive
238
- as with winfrotz and similar. This method can also lead to some
239
- rooms to be missed or some connections be mistaken, as sometimes
240
- room descriptions will be written out only partially.
241
- Finally, TADS interpreter is the worst, in that it will actually
242
- lock the transcript file, not allowing any other program to read it.
243
-
244
- - Cut/Copying was not allowing you to copy stub connections. Fixed.
245
-
246
- - Pasting was not pasting the path properties (special, door, etc)
247
-
248
- - I changed a tad how connections are stored internally to using
249
- arrays for the two rooms and the two exit texts. I then added
250
- code for some common operations.
251
-
252
- - I removed the idea of BtoA connections. Now, whenever a BtoA
253
- connection is needed, the elements in the connection are reversed.
254
- This helps immensely to simplify operations and comparisons
255
- on connections (and I should have done this much earlier).
256
- In the GUI, if you want to flip a connection from A->B to B->A,
257
- you no longer do so with clicking twice on the connection but
258
- can do so now from the right mouse menu.
259
-
260
- - Stub connections are now drawn a tad shorter. This helps to
261
- avoid the problem of two nearby stub connections looking as
262
- if it was a single connection.
263
-
264
- - Connection window now correctly disables buttons when selecting
265
- looping connections.
266
-
267
- - Looping connections are no longer drawn as curves, as they look
268
- more clear as straight lines.
269
-
270
- - Fixed a minor display bug that would draw room index numbers
271
- with the wrong font, while editing the room.
272
-
273
- - Help->About will now also display the FXRuby version being
274
- used.
275
-
276
- - When adding multiple objects with 'get all' during an automapping
277
- of a transcript, you would get additional newlines. Fixed.
278
-
279
- - Sped up a tad path finding and most operations involving path map.
280
-
281
- - Added a check to automapper when transcripts cannot be opened.
282
- This helps, for example, with TADS transcripts, which are locked
283
- and cannot be opened while you are still on script mode (this
284
- absolutely blows in TADS!).
285
- Previously, opening a TADS transcript in progress would just
286
- crash IFMapper.
287
-
288
- - Fixed yet another problem with links among rooms in different
289
- sections that could still result in crashes while automapping.
290
-
291
- - File->Save As will now warn you if you are about to overwrite a
292
- file.
293
-
294
- - Deleting rooms will now correctly recalculate the path map.
295
-
296
- - IFMapper gem was not including the demo maps with extension
297
- .map. Fixed.
298
-
299
- - Fixed a thread racing condition which would modify the map's
300
- sizes as it was being drawn. This could sometimes result in crashes
301
- during transcript automapping. Now we use a mutex to avoid the
302
- problem.
303
-
304
- - I added a work-around for a bug in Fox that would sometimes
305
- not re-initialize the canvas properly and would lead to a crash,
306
- usually after 1+ hour of use of the automapper. This problem is not
307
- yet fixed (it is a Fox issue), but the work-around will try at
308
- least twice to make it work.
309
-
310
- - Switching from one map to another now immediately updates the
311
- section # in the toolbar.
312
-
313
- - There's now a new option called Map->Room List which will
314
- list all the rooms in your map, allowing you to also select
315
- and sort rooms from that list.
316
-
317
- - Added new full maps for Risorgimiento Represo, Christminster, a full
318
- Anchorhead, the three Earth & Sky games, City of Secrets, Moonmist,
319
- All Roads, Trinity.
320
- Partial maps for Dreamhold, Savoir Fare, Heroine's Mantle, World's
321
- Apart, Metamorphoses, Pytho's Mask.
322
- All of these were created with the automapper, as I played those
323
- games.
324
-
325
- v0.9 - What's new:
326
-
327
- - Fixed a very idiotic bug in Cut algorithm. It was basically
328
- destroying all cut connections right after they were cut.
329
-
330
- - Editing rooms' names or objects now results in a much, much
331
- faster redraw of the map, even if map is very complex.
332
-
333
- - You can now display and edit a location's description. This
334
- description is often used by the the automapper during transcript
335
- mapping to determine the uniqueness of a room, albeit the main
336
- use of editing a room description is to allow creation of
337
- new games (currently, Inform/TADS3).
338
-
339
- - You can now optionally avoid displaying the task or description
340
- section on rooms.
341
- This is mainly to allow you to read maps that have walkthru tasks
342
- in them without giving away the game.
343
-
344
- - IFMapper now supports the concept of closed but unlocked doors.
345
- These will be displayed as a white square between connections.
346
- The main interest of placing these doors is for creation
347
- of new Inform games, not so much for solving games.
348
-
349
- - You can now select exit stubs. Useful for deleting them when
350
- automapper detects them incorrectly.
351
-
352
- - Saving and Loading a map will now verify the integrity of the map
353
- is correct. This prevets autosave from saving a corrupt map if
354
- there is a bug in the program.
355
-
356
- - CTRL-Selection is a toggle selection. That is, if you click once
357
- on something already selected, it is deselected.
358
-
359
- - Automapper improvements
360
- * Automapper will now deal with complex commands involving 'then'
361
- a tad better.
362
- * An additional fix to dark rooms. Looking in a dark room would
363
- result in the dark room being created, even if the room had
364
- already been tagged as dark. Fixed.
365
- * When choosing an up/down/in/out/random move direction, a new
366
- connection will not be generated if there is already a similar
367
- n/s/e/w/etc. link between the two rooms. This helps to simplify
368
- some maps.
369
- * Automapper now will try to automatically remove stub exits that
370
- are not really exits if the user tries to move in that direction
371
- and fails.
372
- * Automapping was incorrectly reporting a maze when a new exit
373
- would point in the same direction as a visited up/down or in/out
374
- exit.
375
- * Room descriptions are now compared (and stored) without \n at the
376
- end of each line. This helps with comparing descriptions with any
377
- description the user typed manually.
378
- * Automapper will no longer crash if a link is attempted between
379
- two rooms in different sections, nor will it corrupt your map as
380
- it did before.
381
- * Automapper is now a tad smarter in not considering words such
382
- as open/close in descriptions. This helps the automapper not
383
- get confused if a door which is part of the room description
384
- changes state.
385
-
386
- - Inform support.
387
-
388
- * You can now read an inform file and automap it, with
389
- some limitations.
390
- The main limitation deals with how doors are handled, as Inform
391
- offers an almost infinite number of ways of dealing with doors,
392
- including the use of at least one of 4 popular libraries. Some
393
- code will actually resolve issues of where doors lead to within,
394
- for example, the "Enter" or "Exit" command, making parsing .inf
395
- files impossible without writing a full inform compiler.
396
- A second limitation is that Inform allows doors that exist only
397
- on one "side" of a room. These exits will be ignored.
398
- The inform automapper should prove compatible with most door
399
- libraries, but will probably choke on a lot of hand-coded code.
400
-
401
- * You can now export a map as an Inform .inf (source code) file.
402
- This can be helpful at the beginning of designing a game to place
403
- all objects/characters, doors and room descriptions easily.
404
- Obviously, these source code files will later get hacked heavily
405
- manually to provide the real game functionality.
406
- IFMapper just gives you a start, helping you design
407
- the landscape a tad more easily.
408
- Doors are created in Inform using Andrew MacKinnon's easydoors
409
- Inform extension.
410
-
411
- NOTE: A word of warning about reading Inform or TADS maps.
412
- Since these file formats have no concept of 'sections', they
413
- can lead to some **HUGE** maps. The original Adventure, for
414
- example, results in a 100x100 map. These huge maps may run
415
- into memory issues and currently make the path-finding algorithm
416
- work extremely slow.
417
-
418
- - TADS 3 support
419
-
420
- * NOTE: TADS 2 is currently *NOT* supported.
421
-
422
- * You can now read a TADS 3 file and automap it, with some
423
- limitations.
424
- Basically, TADS 3 templates are currently *NOT* supported.
425
- Instead, the standard library templates are kind of hard-coded
426
- in the reader.
427
- TADS 3's standard lib is more sensible than Inform when it
428
- comes to doors, so it should hopefully lead to less
429
- problems there.
430
-
431
- * You can now export a TADS 3 (.t) file. Same concept as Inform,
432
- albeit doors are created using TADS3 standard door classes.
433
-
434
-
435
-
436
- v0.8.5 - This is mainly a bug fix release.
437
-
438
- - Improvements to the automapper:
439
- * Now it uses much, much less memory as the automapper database
440
- will now use the actual map database. This is mainly a departure
441
- from the original Perl code.
442
- * Now it will properly recognize rooms that were created manually.
443
- This allows you to start the automapper with an already created
444
- map and also work around any rooms that the automapper does not
445
- automatically recognize.
446
- * Cut/Copy/Paste rooms will also internally copy their descriptions,
447
- so the automapper will not get confused.
448
- * Adding objects now checks if the object was already typed in
449
- manually.
450
- * Fixed a bug with in/out/down/up exits not recognizing if the exit
451
- was already drawn in the room, resulting in two identical exits.
452
- * Now saving/loading a map that has been automapped will also save its
453
- descriptions. This allows you to keep automapping a game easily
454
- in different sessions.
455
- * Restore/Restart/Unscript was not working appropiately.
456
- It should have allowed you to "teleport" to any new location, yet
457
- it was creating incorrect links.
458
- * There's now better handling of rooms gone dark (previously, they
459
- were treated as a separate location and multiple dark rooms
460
- would create links to a single dark room)
461
-
462
- - .map save format now is smaller, as some useless data was getting
463
- saved, which we now skip. Note, however, that when automapping
464
- .map size is bigger, as room descriptions get also stored now.
465
-
466
- - Fixed a minor display bug when room name would take 4 rows and
467
- objects would not fit in box.
468
-
469
- - Added some new (possibly incomplete) maps, that I did while
470
- testing the stuff. All done with automapper:
471
- Deadline, Dutch Dapper, Blue Doors, Inhumane, Not Just an
472
- Ordinary Ballerina.
473
-
474
- - Map resizing was always complaining about rooms being deleted.
475
- Fixed.
476
-
477
- - Fixed a nasty crashing bug that would happen if trying to load
478
- an IFM file with no windows open.
479
-
480
- - Fixed a nasty crashing bug when pasting and then immediately
481
- selecting pasted rooms, as the rooms were not added to the
482
- pathmap.
483
-
484
- - Complex doors that are locked are now drawn with a crossed line
485
- along the middle.
486
-
487
- - Complex paths drawn as bsplines are now drawn with a tad less
488
- quality to improve drawing speed.
489
-
490
- v0.8.1 - Just some fixes to the automapper, as it was failing on some
491
- relatively simple games.
492
-
493
- Automapper was not matching rooms with periods in them. This was
494
- causing problems with games that had rooms like "Mr. Hellman's
495
- Bedroom".
496
-
497
- Improved the handling of multiple directional commands. A command
498
- like: 'n, e, w' is now handled properly.
499
-
500
- Moved 'fox' requires together so it is easy to upgrade to
501
- upcoming fox14.
502
-
503
- v0.8 - Added the ability to create linked rooms using the Numeric Keypad.
504
- Turn on NUM LOCK, select a single room and then use the numbers in
505
- the keypad to move thru an exit or add a room in a certain direction.
506
-
507
- Changed name of the main program from IFMapper.rb to IFMapper.rbw.
508
- This helps on windows in not bringing up a dummy console window.
509
-
510
- Added Home/End/PageUp/PageDown to move nodes diagonally. This
511
- helps with the Keypad, when not in NUM LOCK mode.
512
-
513
- Fixed a bug that effected IFMReader that I inadvertedly
514
- introduced in v0.7.
515
-
516
- Removed Postscript support. I just realized that GSview also reads
517
- PDFs making Postscript really not needed.
518
-
519
- Added splitting of huge sections into multiple pages when spitting
520
- PDFs.
521
-
522
- Fixed a bug that would result in a stack trace when loading an IFM
523
- file that was pretty big onto an a very tiny empty map.
524
-
525
- Added the ability to Automap a game from transcripts. Go to
526
- your game, type 'script' and the filename to save your transcript to.
527
- Then, go to IFMapper and go to Map->Automap->Start. Give it that
528
- filename. Voila. IFMapper will start automapping the game.
529
- Leave the transcript on and, as you play the game, IFMapper behind
530
- the scenes will keep automapping.
531
-
532
- # Added tooltip when zoomed out.
533
-
534
- v0.7 - Fix the issue of users trying to fire up the application from another
535
- directory, without cd'ing themselves to the IFMapper directory.
536
-
537
- Added IFM export.
538
- Note that albeit you can load and save out an IFM map file, if you load
539
- and then save an ifm file, the integrity of the ifm file created by
540
- hand will not be kept.
541
- Things such as ifm variables, task and object dependencies will be
542
- lost if you do that. It is unlikely I will add full walkthru
543
- functionality to IFMapper.
544
- IFMapper's main format remains its propietary .map format (which is
545
- just marshalling of its internal ruby classes).
546
-
547
- Added a popup menu to the use of the right mouse button. The main
548
- functionality of this is to allow you to easily shift or switch
549
- a connection from one room exit to another.
550
- To use it, select a single connection among rooms, then press RMB
551
- and select the room and the exit you want to shift the connection to.
552
- Voila! Much easier than having to delete and recreate the connection.
553
-
554
- Improved selection mechanism a tad to be more accurate. Now you
555
- can create complex connections near other complex connections, allowing
556
- you to make, for example, intercrossing connections like:
557
- R---R
558
- |\ /|
559
- | X |
560
- |/ \|
561
- R---R
562
- This still needs some minor work as you cannot select long connections
563
- near room transition areas.
564
-
565
- Fixed a startup crashing bug when HOME variable was not defined.
566
- If it is, IFMapper will use the value of it. If not, user preferences
567
- will get saved to %USERPROFILE% if defined or %HOMEDRIVE%/%HOMEPATH%.
568
- If all fails, prefs will get saved to the current directory.
569
-
570
- Searching rooms, objects or tasks now also tries to center the window
571
- on the current room being found. The Next/Previous button now make
572
- a tad more sense. Also, rooms in other sections are not selected
573
- until you move to that section using Next/Previous.
574
-
575
- There's now an additional search item to allow searching for keywords
576
- in tasks.
577
-
578
- You can now select all nodes or none of them from a menu option.
579
-
580
- Zooming with mousewheel is a tad faster.
581
-
582
- There's now some very bare bones Postscript exporting, albeit no
583
- printing yet. Printing is really a tough cookie to crack across
584
- platforms.
585
-
586
- Fixed a minor bug regarding failed connections that could show with some
587
- ifm files (mainly Zork1.ifm)
588
-
589
- Added some more documentation and also some thank yous.
590
-
591
- Added proper cut/copy/pasting of rooms and connections to the same
592
- section, to new sections or even to different maps. Just select the
593
- rooms and connections you want to copy and do cut/copy and then paste.
594
- Rooms are pasted to the first map area that has enough free nodes to
595
- support them.
596
-
597
- Made SHIFT-DRAG selection also select connections.
598
-
599
- Updated my email.
600
-
601
- v0.6 - Fixed a crashing bug when nodes were moved too far to the right or
602
- to the bottom of the map area.
603
-
604
- Recoded A* algorithm to fix some bugs and moved it away from FXMap
605
- class, into its separate class and file.
606
-
607
- Added cursors for n/nw/w/sw/s/se/e/ne connections. Note, however,
608
- that the hotspot for the cursors is not working properly (this seems
609
- an fxruby bug).
610
-
611
- Added color preferences.
612
-
613
- Some refactoring and documenting of code.
614
-
615
- PDF Export is improved. Now map sections will be packed into a
616
- page when possible. A landscape page will be automatically chosen
617
- for each section, if it helps fit the map in the page.
618
- Also, pdf export will now show objects in rooms as well as 'U', 'D',
619
- 'I', 'O' text in exits.
620
-
621
- Added the ability to set the map width/height from the Map Information
622
- panel.
623
-
624
- Fixed an obscure bug when loading IFM maps that were bigger than the
625
- default map size.
626
-
627
- v0.5 - First public release on Rubyforge.
1
+ v1.0.6 - Added new item list window.
2
+
3
+ v1.0.5 - Improved PDF output in Letter box mode.
4
+ - Fixed IFM writer styles and syntax.
5
+
6
+ v1.0.4 - Fixed IFM connections to same room (loop paths)
7
+ - Improved PDF output, applied samwise patch.
8
+ - Fixed Inform7, 6 and TADS output of loop paths.
9
+
10
+ v1.0.2 - Added keyboard shortcut + and - for zooming in map
11
+
12
+ Bug fixes:
13
+ - Fixed modified map check which always asked for saving map.
14
+ - Fixed start bug for unknown locales. They now default to english.
15
+ - Fixed deleting of a section due to a typo.
16
+
17
+ v1.0.1 Bug fixes:
18
+ - Read only and automap title now print properly.
19
+ - Bunch of warnings of ruby1.8.3 now removed.
20
+ - Added rake-compiler to dependency since fox needs it.
21
+
22
+ v1.0.0 Bug fixes:
23
+ - Versioning number now reflects v1.0.0 everywhere unlike v0.9.9.
24
+
25
+ Improvements:
26
+ - IFMapper now supports (actually, needs) Fox1.6.
27
+ - IFMapper now supports internationalization to allow writing
28
+ adventures in other languages besides English under Fox1.6
29
+ using Unicode (UTF-8).
30
+ Language can be changed by setting the environment variable
31
+ LC_ALL or by starting IFMapper.rbw like:
32
+
33
+ > ruby IFMapper.rbw -l es
34
+
35
+ Languages currently supported: English (en) and Spanish (es).
36
+ Default is still English.
37
+ To write out Inform or TADS text in other languages, you will
38
+ also need ruby's iconv module (which should now be part of
39
+ both the windows and unix distros)
40
+ To add new languages, go to ifmapper-1.0.0/lib/IFMapper/locales
41
+ and add one for your particular language.
42
+ Then you need to create an UTF-8 Message.rb file.
43
+ If your editor does not support writing out UTF-8 directly,
44
+ you can create a file in another encoding and then convert
45
+ it with an utility like iconv (see example in
46
+ ifmapper-1.0.0/lib/IFMapper/locales/es)
47
+
48
+ - Inform7 writer is now better:
49
+ * It now properly recognizes male/female people a
50
+ tad better.
51
+ * It now tries to avoid tags as much as possible
52
+ to keep Inform7's concept of natural language.
53
+ * It recognizes additional words as potential containers, etc.
54
+ * It now recognizes the 'lit' property in some objects.
55
+ - Bug fixed wrap_text() in all exporters.
56
+
57
+
58
+ v0.9.9 Improvements:
59
+ - It is now possible to export maps in Inform 7 new (beta) syntax,
60
+ albeit the English grammar is still very limited.
61
+ Just name your map with extension ".inform" instead of ".inf"
62
+ when saving it or exporting it.
63
+
64
+ v0.9.8 Bug fixes:
65
+ - TADS Exporter was incorrectly recognizing locations with "room" in
66
+ them as keywords and adding numbers to their tags. Fixed.
67
+ [Bug Report: Greg Boetcherr]
68
+ - When replacing dark rooms with lit rooms, the transcript
69
+ automapper was discarding all other connections. So, if two dark
70
+ rooms were connected, once one of the dark rooms became lit, the
71
+ connection to the other dark room was removed. Fixed.
72
+ - Typo: 'interative' for 'interactive' fixed in TranscriptReader.rb
73
+ [Bug Report: unknown]
74
+ - Fixed PDF Exporter which had broken in v0.9.7.
75
+
76
+ Improvements:
77
+ - Automapper now recognizes two new ways of describing exits as
78
+ being blocked.
79
+ - Automapper was not dealing with Undo properly when mapping
80
+ interactively, leading to the creation of wrong exits if user
81
+ moved right after an undo.
82
+ - Automapper now tries to use the path map to determine if a location
83
+ in map is blocked. This should have the benefit of having the
84
+ automapper avoid placing rooms in the middle of complex connections.
85
+ - Automapper now capitalizes the name of the game/room a tad more
86
+ correctly, by always having the first word capitalized.
87
+ - Added HTML documentation and upload it to rubyforge. These HTML
88
+ docs are now also distributed with IFMapper.
89
+ - Gem will now add a copy of 'IFMapper.rbw' to the ruby bin directory.
90
+ [Suggestion: Lyle Johnson]
91
+ - Added north-west, north-east, south-west, south-east as alternative
92
+ move directions.
93
+ [Suggestion: unknown]
94
+
95
+
96
+ v0.9.7 What's new:
97
+ - IFM exporting was incorrectly exporting
98
+ map "";
99
+ for sections that were unnamed and also when there was only one
100
+ section.
101
+ Now, IFM exporting will not export map name if only one section
102
+ is present. And if multiple sections are present but are unnamed,
103
+ sections will be given the default name of "Section #".
104
+ [Bug Report: Eric Forgeot]
105
+
106
+ - Improved name finding for Classic transcripts, by actually dealing
107
+ with parenthesis in short names a tad more strictly.
108
+
109
+ - Added support for reading GUEMap maps (.gmp format).
110
+ For both, GUEMap v1.0+ and GUEMap v2.0 (beta).
111
+ Comments in GUEmaps will be placed in the task section of rooms.
112
+ As GUEmaps supports placing rooms with a finer grid, IFMapper will
113
+ try to translate grid positions, but may not always be entirely
114
+ successful.
115
+
116
+ - Fixed a crashing bug that could occur very rarely when loading
117
+ multiple maps due to the canvas not being created.
118
+
119
+ - Fixed my email in the README.txt.
120
+
121
+ - Improved warning box to allow for multi-line messages.
122
+ This helps with telling user about errors when reading from
123
+ a file.
124
+
125
+ - Rewrote a big chunk of the map readers (inform/tads). Reason was
126
+ two-fold:
127
+ * make the code smaller and simpler
128
+ * fix a logic problem in the layout algorithm which was
129
+ leading to maps being laid out much bigger when map had
130
+ a lot of one way connections. Now room layout is much, much
131
+ improved.
132
+ [Bug Report: Greg Boettcher]
133
+ * sped up the creation of map code a tad.
134
+
135
+ - Inform reader now understands most special international character
136
+ sequences (@:a, etc).
137
+
138
+ - TADS reader was marking some one way door exits as normal exits.
139
+ Fixed.
140
+
141
+ - TADS reader was not dealing with @location notation properly.
142
+ It was sometimes placing objects in the wrong room, or completely
143
+ ignoring them.
144
+
145
+ - TADS reader now handles exits that are <<replaceAction(Enter,*)>>
146
+
147
+ - Inform and TADS readers will now extract the name of the map from the
148
+ Story constant.
149
+
150
+ - Inform reader is a tad smarter about locating objects.
151
+
152
+
153
+ v0.9.6 What's new:
154
+
155
+ - IFM exporting had gotten broken around v0.9 due to a refactoring
156
+ bug. Fixed.
157
+
158
+ - CTRL selection was never quite working as advertised. Now it
159
+ properly does toggle selecting of rooms/connections.
160
+
161
+ - Minor improvement to the automapper. Now places that have Dr.,
162
+ St., Ave. and Inc. in them will be recognized as locations.
163
+ Previously, they were ignored due to the period.
164
+
165
+ - The automapper will now correctly parse objects from take commands
166
+ when the response is something like:
167
+ You take the pencil from the bag.
168
+ Previously, the object was considered to be 'pencil from the bag'
169
+ instead of just 'pencil'.
170
+
171
+ - Slight improvement to the automapper room description
172
+ identification. When comparing descriptions and a perfect match
173
+ or submatch of the description cannot be found against a room, all
174
+ words in that room description will be compared for a
175
+ potential match. A room will be matched as already present if
176
+ at least 20 words match (they also have to be in the same order).
177
+ However, if multiple rooms happen to match 20 words, then the room
178
+ with more words matched will be considered as the correct match.
179
+ This improvement helps with locations that have identical
180
+ descriptions but that perhaps only change the exit paths.
181
+
182
+ - I bug fixed the problem with TADS transcripts with the automapper
183
+ crashing it. This was supposed to be fixed in 0.9.5 but I had
184
+ inadvertedly reverted the fix before release.
185
+
186
+ - Added a new mode to Automapper of transcripts. The new
187
+ mode is called Capitalized and helps map rooms where the room name
188
+ uses a single capitalized sentence, like:
189
+ Women's change room
190
+ Western closet
191
+ instead of the more standard:
192
+ Women's Change Room
193
+ Western Closet
194
+ This format seems somewhat popular among IFComp entries, which are
195
+ probably trying to follow Infocom's format, but do so incorrectly.
196
+
197
+ - Added a new ADRIFT mode to Automapper. This mode helps map
198
+ ADRIFT games, which have some weird form of transcripts, lacking a
199
+ prompt. Tested with The PK Girl mainly.
200
+
201
+ - TADS3 source code reader is now much improved.
202
+ It recognizes PathPassages, TravelMessage and noTravel
203
+ exits properly.
204
+ It does not consider a missing room as a fatal error and
205
+ will properly find names of rooms when room line is split into
206
+ multiple lines.
207
+ It will also display passage and stairway exits properly (previously,
208
+ they were considered door exits).
209
+ Also, TADS3 reader can now properly parse a t3m Makefile for
210
+ sources.
211
+ You should now be able to map the big TADS3 demo game
212
+ Return to Ditch Day from source, which previously would run
213
+ into some issues.
214
+
215
+ - TADS and Inform readers now use a slightly different algorithm for
216
+ laying out rooms. This new algorithm results in smaller maps and
217
+ usually less complex exits failing.
218
+
219
+ v0.9.5 What's new:
220
+
221
+ - IFMapper now looks for Fox1.4 and 1.2, in that order. Note that
222
+ I still recommend Fox1.2, as it is more stable.
223
+
224
+ - Automapper now supports selecting how locations are identified
225
+ (either by comparing the room descriptions or just the short name)
226
+ as well as adds support for some unusual location short name
227
+ formats used in some Infocom games (Moonmist, Witness).
228
+
229
+ - Automapper should now be able to automatically detect the name of
230
+ the game from the transcript (at least with WinFrotz and
231
+ Glux transcripts).
232
+
233
+ - Automapper was idiotically skipping the first command typed in
234
+ transcript. Fixed.
235
+
236
+ - Room descriptions now remove starting/trailing spaces or newlines.
237
+
238
+ - If possible, when getting an object, if the automapper sees an
239
+ answer like "You now have the ...", it will take the object name
240
+ from that line instead of from the name the user typed in his
241
+ command.
242
+
243
+ - Removed some debugging put statements from automapper that had been
244
+ left by mistake in v0.9.
245
+
246
+ - Added the name of the room to the statusbar when mouse is over
247
+ a room.
248
+
249
+ - You can now save an .ifm, .t, or .inf file directly from the
250
+ save as requester, if you type in a filename with such an
251
+ extension.
252
+
253
+ - The automapper now also looks for transcripts with extensions
254
+ .scr (Magnetic Scrolls/Glux) and .txt (Hugo) by default.
255
+ Note that Hugo, Glux and Magnetic Scrolls transcripts do
256
+ not append text to transcripts after each move, instead keeping a
257
+ buffer that gets spit out when filled. Thus, automapping while
258
+ playing a game with these interpreters game is not as interactive
259
+ as with winfrotz and similar. This method can also lead to some
260
+ rooms to be missed or some connections be mistaken, as sometimes
261
+ room descriptions will be written out only partially.
262
+ Finally, TADS interpreter is the worst, in that it will actually
263
+ lock the transcript file, not allowing any other program to read it.
264
+
265
+ - Cut/Copying was not allowing you to copy stub connections. Fixed.
266
+
267
+ - Pasting was not pasting the path properties (special, door, etc)
268
+
269
+ - I changed a tad how connections are stored internally to using
270
+ arrays for the two rooms and the two exit texts. I then added
271
+ code for some common operations.
272
+
273
+ - I removed the idea of BtoA connections. Now, whenever a BtoA
274
+ connection is needed, the elements in the connection are reversed.
275
+ This helps immensely to simplify operations and comparisons
276
+ on connections (and I should have done this much earlier).
277
+ In the GUI, if you want to flip a connection from A->B to B->A,
278
+ you no longer do so with clicking twice on the connection but
279
+ can do so now from the right mouse menu.
280
+
281
+ - Stub connections are now drawn a tad shorter. This helps to
282
+ avoid the problem of two nearby stub connections looking as
283
+ if it was a single connection.
284
+
285
+ - Connection window now correctly disables buttons when selecting
286
+ looping connections.
287
+
288
+ - Looping connections are no longer drawn as curves, as they look
289
+ more clear as straight lines.
290
+
291
+ - Fixed a minor display bug that would draw room index numbers
292
+ with the wrong font, while editing the room.
293
+
294
+ - Help->About will now also display the FXRuby version being
295
+ used.
296
+
297
+ - When adding multiple objects with 'get all' during an automapping
298
+ of a transcript, you would get additional newlines. Fixed.
299
+
300
+ - Sped up a tad path finding and most operations involving path map.
301
+
302
+ - Added a check to automapper when transcripts cannot be opened.
303
+ This helps, for example, with TADS transcripts, which are locked
304
+ and cannot be opened while you are still on script mode (this
305
+ absolutely blows in TADS!).
306
+ Previously, opening a TADS transcript in progress would just
307
+ crash IFMapper.
308
+
309
+ - Fixed yet another problem with links among rooms in different
310
+ sections that could still result in crashes while automapping.
311
+
312
+ - File->Save As will now warn you if you are about to overwrite a
313
+ file.
314
+
315
+ - Deleting rooms will now correctly recalculate the path map.
316
+
317
+ - IFMapper gem was not including the demo maps with extension
318
+ .map. Fixed.
319
+
320
+ - Fixed a thread racing condition which would modify the map's
321
+ sizes as it was being drawn. This could sometimes result in crashes
322
+ during transcript automapping. Now we use a mutex to avoid the
323
+ problem.
324
+
325
+ - I added a work-around for a bug in Fox that would sometimes
326
+ not re-initialize the canvas properly and would lead to a crash,
327
+ usually after 1+ hour of use of the automapper. This problem is not
328
+ yet fixed (it is a Fox issue), but the work-around will try at
329
+ least twice to make it work.
330
+
331
+ - Switching from one map to another now immediately updates the
332
+ section # in the toolbar.
333
+
334
+ - There's now a new option called Map->Room List which will
335
+ list all the rooms in your map, allowing you to also select
336
+ and sort rooms from that list.
337
+
338
+ - Added new full maps for Risorgimiento Represo, Christminster, a full
339
+ Anchorhead, the three Earth & Sky games, City of Secrets, Moonmist,
340
+ All Roads, Trinity.
341
+ Partial maps for Dreamhold, Savoir Fare, Heroine's Mantle, World's
342
+ Apart, Metamorphoses, Pytho's Mask.
343
+ All of these were created with the automapper, as I played those
344
+ games.
345
+
346
+ v0.9 - What's new:
347
+
348
+ - Fixed a very idiotic bug in Cut algorithm. It was basically
349
+ destroying all cut connections right after they were cut.
350
+
351
+ - Editing rooms' names or objects now results in a much, much
352
+ faster redraw of the map, even if map is very complex.
353
+
354
+ - You can now display and edit a location's description. This
355
+ description is often used by the the automapper during transcript
356
+ mapping to determine the uniqueness of a room, albeit the main
357
+ use of editing a room description is to allow creation of
358
+ new games (currently, Inform/TADS3).
359
+
360
+ - You can now optionally avoid displaying the task or description
361
+ section on rooms.
362
+ This is mainly to allow you to read maps that have walkthru tasks
363
+ in them without giving away the game.
364
+
365
+ - IFMapper now supports the concept of closed but unlocked doors.
366
+ These will be displayed as a white square between connections.
367
+ The main interest of placing these doors is for creation
368
+ of new Inform games, not so much for solving games.
369
+
370
+ - You can now select exit stubs. Useful for deleting them when
371
+ automapper detects them incorrectly.
372
+
373
+ - Saving and Loading a map will now verify the integrity of the map
374
+ is correct. This prevets autosave from saving a corrupt map if
375
+ there is a bug in the program.
376
+
377
+ - CTRL-Selection is a toggle selection. That is, if you click once
378
+ on something already selected, it is deselected.
379
+
380
+ - Automapper improvements
381
+ * Automapper will now deal with complex commands involving 'then'
382
+ a tad better.
383
+ * An additional fix to dark rooms. Looking in a dark room would
384
+ result in the dark room being created, even if the room had
385
+ already been tagged as dark. Fixed.
386
+ * When choosing an up/down/in/out/random move direction, a new
387
+ connection will not be generated if there is already a similar
388
+ n/s/e/w/etc. link between the two rooms. This helps to simplify
389
+ some maps.
390
+ * Automapper now will try to automatically remove stub exits that
391
+ are not really exits if the user tries to move in that direction
392
+ and fails.
393
+ * Automapping was incorrectly reporting a maze when a new exit
394
+ would point in the same direction as a visited up/down or in/out
395
+ exit.
396
+ * Room descriptions are now compared (and stored) without \n at the
397
+ end of each line. This helps with comparing descriptions with any
398
+ description the user typed manually.
399
+ * Automapper will no longer crash if a link is attempted between
400
+ two rooms in different sections, nor will it corrupt your map as
401
+ it did before.
402
+ * Automapper is now a tad smarter in not considering words such
403
+ as open/close in descriptions. This helps the automapper not
404
+ get confused if a door which is part of the room description
405
+ changes state.
406
+
407
+ - Inform support.
408
+
409
+ * You can now read an inform file and automap it, with
410
+ some limitations.
411
+ The main limitation deals with how doors are handled, as Inform
412
+ offers an almost infinite number of ways of dealing with doors,
413
+ including the use of at least one of 4 popular libraries. Some
414
+ code will actually resolve issues of where doors lead to within,
415
+ for example, the "Enter" or "Exit" command, making parsing .inf
416
+ files impossible without writing a full inform compiler.
417
+ A second limitation is that Inform allows doors that exist only
418
+ on one "side" of a room. These exits will be ignored.
419
+ The inform automapper should prove compatible with most door
420
+ libraries, but will probably choke on a lot of hand-coded code.
421
+
422
+ * You can now export a map as an Inform .inf (source code) file.
423
+ This can be helpful at the beginning of designing a game to place
424
+ all objects/characters, doors and room descriptions easily.
425
+ Obviously, these source code files will later get hacked heavily
426
+ manually to provide the real game functionality.
427
+ IFMapper just gives you a start, helping you design
428
+ the landscape a tad more easily.
429
+ Doors are created in Inform using Andrew MacKinnon's easydoors
430
+ Inform extension.
431
+
432
+ NOTE: A word of warning about reading Inform or TADS maps.
433
+ Since these file formats have no concept of 'sections', they
434
+ can lead to some **HUGE** maps. The original Adventure, for
435
+ example, results in a 100x100 map. These huge maps may run
436
+ into memory issues and currently make the path-finding algorithm
437
+ work extremely slow.
438
+
439
+ - TADS 3 support
440
+
441
+ * NOTE: TADS 2 is currently *NOT* supported.
442
+
443
+ * You can now read a TADS 3 file and automap it, with some
444
+ limitations.
445
+ Basically, TADS 3 templates are currently *NOT* supported.
446
+ Instead, the standard library templates are kind of hard-coded
447
+ in the reader.
448
+ TADS 3's standard lib is more sensible than Inform when it
449
+ comes to doors, so it should hopefully lead to less
450
+ problems there.
451
+
452
+ * You can now export a TADS 3 (.t) file. Same concept as Inform,
453
+ albeit doors are created using TADS3 standard door classes.
454
+
455
+
456
+
457
+ v0.8.5 - This is mainly a bug fix release.
458
+
459
+ - Improvements to the automapper:
460
+ * Now it uses much, much less memory as the automapper database
461
+ will now use the actual map database. This is mainly a departure
462
+ from the original Perl code.
463
+ * Now it will properly recognize rooms that were created manually.
464
+ This allows you to start the automapper with an already created
465
+ map and also work around any rooms that the automapper does not
466
+ automatically recognize.
467
+ * Cut/Copy/Paste rooms will also internally copy their descriptions,
468
+ so the automapper will not get confused.
469
+ * Adding objects now checks if the object was already typed in
470
+ manually.
471
+ * Fixed a bug with in/out/down/up exits not recognizing if the exit
472
+ was already drawn in the room, resulting in two identical exits.
473
+ * Now saving/loading a map that has been automapped will also save its
474
+ descriptions. This allows you to keep automapping a game easily
475
+ in different sessions.
476
+ * Restore/Restart/Unscript was not working appropiately.
477
+ It should have allowed you to "teleport" to any new location, yet
478
+ it was creating incorrect links.
479
+ * There's now better handling of rooms gone dark (previously, they
480
+ were treated as a separate location and multiple dark rooms
481
+ would create links to a single dark room)
482
+
483
+ - .map save format now is smaller, as some useless data was getting
484
+ saved, which we now skip. Note, however, that when automapping
485
+ .map size is bigger, as room descriptions get also stored now.
486
+
487
+ - Fixed a minor display bug when room name would take 4 rows and
488
+ objects would not fit in box.
489
+
490
+ - Added some new (possibly incomplete) maps, that I did while
491
+ testing the stuff. All done with automapper:
492
+ Deadline, Dutch Dapper, Blue Doors, Inhumane, Not Just an
493
+ Ordinary Ballerina.
494
+
495
+ - Map resizing was always complaining about rooms being deleted.
496
+ Fixed.
497
+
498
+ - Fixed a nasty crashing bug that would happen if trying to load
499
+ an IFM file with no windows open.
500
+
501
+ - Fixed a nasty crashing bug when pasting and then immediately
502
+ selecting pasted rooms, as the rooms were not added to the
503
+ pathmap.
504
+
505
+ - Complex doors that are locked are now drawn with a crossed line
506
+ along the middle.
507
+
508
+ - Complex paths drawn as bsplines are now drawn with a tad less
509
+ quality to improve drawing speed.
510
+
511
+ v0.8.1 - Just some fixes to the automapper, as it was failing on some
512
+ relatively simple games.
513
+
514
+ Automapper was not matching rooms with periods in them. This was
515
+ causing problems with games that had rooms like "Mr. Hellman's
516
+ Bedroom".
517
+
518
+ Improved the handling of multiple directional commands. A command
519
+ like: 'n, e, w' is now handled properly.
520
+
521
+ Moved 'fox' requires together so it is easy to upgrade to
522
+ upcoming fox14.
523
+
524
+ v0.8 - Added the ability to create linked rooms using the Numeric Keypad.
525
+ Turn on NUM LOCK, select a single room and then use the numbers in
526
+ the keypad to move thru an exit or add a room in a certain direction.
527
+
528
+ Changed name of the main program from IFMapper.rb to IFMapper.rbw.
529
+ This helps on windows in not bringing up a dummy console window.
530
+
531
+ Added Home/End/PageUp/PageDown to move nodes diagonally. This
532
+ helps with the Keypad, when not in NUM LOCK mode.
533
+
534
+ Fixed a bug that effected IFMReader that I inadvertedly
535
+ introduced in v0.7.
536
+
537
+ Removed Postscript support. I just realized that GSview also reads
538
+ PDFs making Postscript really not needed.
539
+
540
+ Added splitting of huge sections into multiple pages when spitting
541
+ PDFs.
542
+
543
+ Fixed a bug that would result in a stack trace when loading an IFM
544
+ file that was pretty big onto an a very tiny empty map.
545
+
546
+ Added the ability to Automap a game from transcripts. Go to
547
+ your game, type 'script' and the filename to save your transcript to.
548
+ Then, go to IFMapper and go to Map->Automap->Start. Give it that
549
+ filename. Voila. IFMapper will start automapping the game.
550
+ Leave the transcript on and, as you play the game, IFMapper behind
551
+ the scenes will keep automapping.
552
+
553
+ # Added tooltip when zoomed out.
554
+
555
+ v0.7 - Fix the issue of users trying to fire up the application from another
556
+ directory, without cd'ing themselves to the IFMapper directory.
557
+
558
+ Added IFM export.
559
+ Note that albeit you can load and save out an IFM map file, if you load
560
+ and then save an ifm file, the integrity of the ifm file created by
561
+ hand will not be kept.
562
+ Things such as ifm variables, task and object dependencies will be
563
+ lost if you do that. It is unlikely I will add full walkthru
564
+ functionality to IFMapper.
565
+ IFMapper's main format remains its propietary .map format (which is
566
+ just marshalling of its internal ruby classes).
567
+
568
+ Added a popup menu to the use of the right mouse button. The main
569
+ functionality of this is to allow you to easily shift or switch
570
+ a connection from one room exit to another.
571
+ To use it, select a single connection among rooms, then press RMB
572
+ and select the room and the exit you want to shift the connection to.
573
+ Voila! Much easier than having to delete and recreate the connection.
574
+
575
+ Improved selection mechanism a tad to be more accurate. Now you
576
+ can create complex connections near other complex connections, allowing
577
+ you to make, for example, intercrossing connections like:
578
+ R---R
579
+ |\ /|
580
+ | X |
581
+ |/ \|
582
+ R---R
583
+ This still needs some minor work as you cannot select long connections
584
+ near room transition areas.
585
+
586
+ Fixed a startup crashing bug when HOME variable was not defined.
587
+ If it is, IFMapper will use the value of it. If not, user preferences
588
+ will get saved to %USERPROFILE% if defined or %HOMEDRIVE%/%HOMEPATH%.
589
+ If all fails, prefs will get saved to the current directory.
590
+
591
+ Searching rooms, objects or tasks now also tries to center the window
592
+ on the current room being found. The Next/Previous button now make
593
+ a tad more sense. Also, rooms in other sections are not selected
594
+ until you move to that section using Next/Previous.
595
+
596
+ There's now an additional search item to allow searching for keywords
597
+ in tasks.
598
+
599
+ You can now select all nodes or none of them from a menu option.
600
+
601
+ Zooming with mousewheel is a tad faster.
602
+
603
+ There's now some very bare bones Postscript exporting, albeit no
604
+ printing yet. Printing is really a tough cookie to crack across
605
+ platforms.
606
+
607
+ Fixed a minor bug regarding failed connections that could show with some
608
+ ifm files (mainly Zork1.ifm)
609
+
610
+ Added some more documentation and also some thank yous.
611
+
612
+ Added proper cut/copy/pasting of rooms and connections to the same
613
+ section, to new sections or even to different maps. Just select the
614
+ rooms and connections you want to copy and do cut/copy and then paste.
615
+ Rooms are pasted to the first map area that has enough free nodes to
616
+ support them.
617
+
618
+ Made SHIFT-DRAG selection also select connections.
619
+
620
+ Updated my email.
621
+
622
+ v0.6 - Fixed a crashing bug when nodes were moved too far to the right or
623
+ to the bottom of the map area.
624
+
625
+ Recoded A* algorithm to fix some bugs and moved it away from FXMap
626
+ class, into its separate class and file.
627
+
628
+ Added cursors for n/nw/w/sw/s/se/e/ne connections. Note, however,
629
+ that the hotspot for the cursors is not working properly (this seems
630
+ an fxruby bug).
631
+
632
+ Added color preferences.
633
+
634
+ Some refactoring and documenting of code.
635
+
636
+ PDF Export is improved. Now map sections will be packed into a
637
+ page when possible. A landscape page will be automatically chosen
638
+ for each section, if it helps fit the map in the page.
639
+ Also, pdf export will now show objects in rooms as well as 'U', 'D',
640
+ 'I', 'O' text in exits.
641
+
642
+ Added the ability to set the map width/height from the Map Information
643
+ panel.
644
+
645
+ Fixed an obscure bug when loading IFM maps that were bigger than the
646
+ default map size.
647
+
648
+ v0.5 - First public release on Rubyforge.