ifmapper 1.0.0 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.