ifmapper 0.5 → 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.
- data/HISTORY.txt +26 -0
- data/IFMapper.gemspec +1 -1
- data/icons/room_e.gif +0 -0
- data/icons/room_e.xpm +39 -0
- data/icons/room_n.gif +0 -0
- data/icons/room_n.xpm +40 -0
- data/icons/room_ne.gif +0 -0
- data/icons/room_ne.xpm +80 -0
- data/icons/room_nw.gif +0 -0
- data/icons/room_nw.xpm +80 -0
- data/icons/room_s.gif +0 -0
- data/icons/room_s.xpm +40 -0
- data/icons/room_se.gif +0 -0
- data/icons/room_se.xpm +80 -0
- data/icons/room_sw.gif +0 -0
- data/icons/room_sw.xpm +80 -0
- data/icons/room_w.gif +0 -0
- data/icons/room_w.xpm +39 -0
- data/lib/IFMapper/AStar.rb +243 -0
- data/lib/IFMapper/FXConnection.rb +101 -72
- data/lib/IFMapper/FXMap.rb +155 -230
- data/lib/IFMapper/FXMapColorBox.rb +92 -0
- data/lib/IFMapper/FXMapDialogBox.rb +83 -7
- data/lib/IFMapper/FXMapperSettings.rb +1 -0
- data/lib/IFMapper/FXMapperWindow.rb +82 -48
- data/lib/IFMapper/FXRoom.rb +43 -17
- data/lib/IFMapper/{FXPage.rb → FXSection.rb} +3 -3
- data/lib/IFMapper/{FXPageDialogBox.rb → FXSectionDialogBox.rb} +6 -6
- data/lib/IFMapper/FXSpline.rb +10 -14
- data/lib/IFMapper/IFMReader.rb +39 -31
- data/lib/IFMapper/Map.rb +42 -43
- data/lib/IFMapper/MapPrinting.rb +161 -0
- data/lib/IFMapper/PDFMapExporter.rb +128 -51
- data/lib/IFMapper/Room.rb +11 -1
- data/lib/IFMapper/{Page.rb → Section.rb} +65 -42
- metadata +34 -15
data/lib/IFMapper/Room.rb
CHANGED
@@ -61,7 +61,7 @@ class Room
|
|
61
61
|
end
|
62
62
|
|
63
63
|
#
|
64
|
-
# Given
|
64
|
+
# Given an 'adjacent' room, return the most direct exit from this
|
65
65
|
# room to room b.
|
66
66
|
#
|
67
67
|
def exit_to(b)
|
@@ -86,6 +86,16 @@ class Room
|
|
86
86
|
return vector_to_dir(dx, dy)
|
87
87
|
end
|
88
88
|
|
89
|
+
#
|
90
|
+
# Copy a room to another
|
91
|
+
#
|
92
|
+
def copy(b)
|
93
|
+
@name = b.name
|
94
|
+
@objects = b.objects
|
95
|
+
@tasks = b.tasks
|
96
|
+
@darkness = b.darkness
|
97
|
+
end
|
98
|
+
|
89
99
|
|
90
100
|
def initialize(x, y, name = 'Room')
|
91
101
|
@exits = Array.new( DIRECTIONS.size )
|
@@ -3,11 +3,13 @@
|
|
3
3
|
require 'IFMapper/Connection'
|
4
4
|
require 'IFMapper/Room'
|
5
5
|
|
6
|
-
class
|
6
|
+
class Section
|
7
7
|
attr_accessor :rooms
|
8
8
|
attr_accessor :connections
|
9
9
|
attr_accessor :name
|
10
10
|
|
11
|
+
class ConnectionError < StandardError; end
|
12
|
+
|
11
13
|
def marshal_load(v)
|
12
14
|
@rooms = v[0]
|
13
15
|
@connections = v[1]
|
@@ -46,7 +48,9 @@ class Page
|
|
46
48
|
return [ minXY, maxXY ]
|
47
49
|
end
|
48
50
|
|
49
|
-
|
51
|
+
#
|
52
|
+
# Delete a connection from section
|
53
|
+
#
|
50
54
|
def delete_connection(c)
|
51
55
|
a = c.roomA
|
52
56
|
if a
|
@@ -61,6 +65,9 @@ class Page
|
|
61
65
|
@connections.delete(c)
|
62
66
|
end
|
63
67
|
|
68
|
+
#
|
69
|
+
# Delete a connection at a certain index location
|
70
|
+
#
|
64
71
|
def delete_connection_at( idx )
|
65
72
|
c = @connections[idx]
|
66
73
|
|
@@ -77,6 +84,58 @@ class Page
|
|
77
84
|
@connections.delete_at(idx)
|
78
85
|
end
|
79
86
|
|
87
|
+
#
|
88
|
+
# Create a new connection among two rooms thru their exits
|
89
|
+
#
|
90
|
+
def new_connection( roomA, exitA, roomB, exitB = nil )
|
91
|
+
c = Connection.new( roomA, roomB )
|
92
|
+
_new_connection( c, roomA, exitA, roomB, exitB )
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# Delete a room at a certain index
|
97
|
+
#
|
98
|
+
def delete_room_at(idx)
|
99
|
+
r = @rooms[idx]
|
100
|
+
r.exits.each { |e|
|
101
|
+
next if not e
|
102
|
+
delete_connection(e)
|
103
|
+
}
|
104
|
+
@rooms.delete_at(idx)
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# Delete a room
|
109
|
+
#
|
110
|
+
def delete_room(r)
|
111
|
+
r.exits.each { |e|
|
112
|
+
next if not e
|
113
|
+
delete_connection(e)
|
114
|
+
}
|
115
|
+
@rooms.delete(r)
|
116
|
+
end
|
117
|
+
|
118
|
+
#
|
119
|
+
# Create a new room (note: FXSection overrides this creating an
|
120
|
+
# FXRoom instead).
|
121
|
+
#
|
122
|
+
def new_room( x, y )
|
123
|
+
r = Room.new( x, y, 'New Location' )
|
124
|
+
return _new_room(r, x, y)
|
125
|
+
end
|
126
|
+
|
127
|
+
def initialize()
|
128
|
+
@rooms = []
|
129
|
+
@connections = []
|
130
|
+
end
|
131
|
+
|
132
|
+
protected
|
133
|
+
|
134
|
+
def _new_room( r, x, y )
|
135
|
+
@rooms.push(r)
|
136
|
+
return r
|
137
|
+
end
|
138
|
+
|
80
139
|
def _new_connection(c, roomA, exitA, roomB, exitB)
|
81
140
|
exitA = roomA.exit_to(roomB) if not exitA
|
82
141
|
if not exitA
|
@@ -85,14 +144,14 @@ No exit given or guessed to connect:
|
|
85
144
|
Room #{roomA} (#{roomA.x}, #{roomA.y})
|
86
145
|
Room #{roomB} (#{roomB.x}, #{roomB.y})
|
87
146
|
EOF
|
88
|
-
raise err
|
147
|
+
raise ConnectionError, err
|
89
148
|
end
|
90
149
|
|
91
150
|
if roomA[exitA]
|
92
151
|
if not @connections.include?(roomA[exitA])
|
93
|
-
raise "room exit filled but not in page"
|
152
|
+
raise ConnectionError, "room exit filled but not in page"
|
94
153
|
end
|
95
|
-
raise "room exit #{exitA} for #{roomA} is filled"
|
154
|
+
raise ConnectionError, "room exit #{exitA} for #{roomA} is filled"
|
96
155
|
end
|
97
156
|
|
98
157
|
roomA[exitA] = c
|
@@ -111,7 +170,7 @@ EOF
|
|
111
170
|
end
|
112
171
|
|
113
172
|
if roomB and roomB[exitB] and roomB[exitB] != c
|
114
|
-
raise "room exit #{exitB} for #{roomB} is filled"
|
173
|
+
raise ConnectionError, "room exit #{exitB} for #{roomB} is filled"
|
115
174
|
end
|
116
175
|
roomB[exitB] = c if roomB
|
117
176
|
|
@@ -119,40 +178,4 @@ EOF
|
|
119
178
|
return c
|
120
179
|
end
|
121
180
|
|
122
|
-
def new_connection( roomA, exitA, roomB, exitB = nil )
|
123
|
-
c = Connection.new( roomA, roomB )
|
124
|
-
_new_connection(c, roomA, exitA, roomB, exitB )
|
125
|
-
end
|
126
|
-
|
127
|
-
def delete_room_at(idx)
|
128
|
-
r = @rooms[idx]
|
129
|
-
r.exits.each { |e|
|
130
|
-
next if not e
|
131
|
-
delete_connection(e)
|
132
|
-
}
|
133
|
-
@rooms.delete_at(idx)
|
134
|
-
end
|
135
|
-
|
136
|
-
def delete_room(r)
|
137
|
-
r.exits.each { |e|
|
138
|
-
next if not e
|
139
|
-
delete_connection(e)
|
140
|
-
}
|
141
|
-
@rooms.delete(r)
|
142
|
-
end
|
143
|
-
|
144
|
-
def _new_room( r, x, y )
|
145
|
-
@rooms.push(r)
|
146
|
-
return r
|
147
|
-
end
|
148
|
-
|
149
|
-
def new_room( x, y )
|
150
|
-
r = Room.new( x, y, 'New Location' )
|
151
|
-
return _new_room(r, x, y)
|
152
|
-
end
|
153
|
-
|
154
|
-
def initialize()
|
155
|
-
@rooms = []
|
156
|
-
@connections = []
|
157
|
-
end
|
158
181
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ifmapper
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2005-08-
|
6
|
+
version: "0.6"
|
7
|
+
date: 2005-08-14
|
8
8
|
summary: Interactive Fiction Mapping Tool.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -28,27 +28,30 @@ authors:
|
|
28
28
|
- Gonzalo Garramuno
|
29
29
|
files:
|
30
30
|
- IFMapper.rb
|
31
|
-
- lib/IFMapper/
|
31
|
+
- lib/IFMapper/FXMap.rb
|
32
32
|
- lib/IFMapper/Map.rb
|
33
|
-
- lib/IFMapper/Connection.rb
|
34
|
-
- lib/IFMapper/FXMapperSettings.rb
|
35
33
|
- lib/IFMapper/FXSpline.rb
|
34
|
+
- lib/IFMapper/FXSection.rb
|
35
|
+
- lib/IFMapper/FXRoom.rb
|
36
36
|
- lib/IFMapper/FXMapDialogBox.rb
|
37
|
-
- lib/IFMapper/
|
38
|
-
- lib/IFMapper/FXConnection.rb
|
39
|
-
- lib/IFMapper/FXPageDialogBox.rb
|
40
|
-
- lib/IFMapper/FXPage.rb
|
41
|
-
- lib/IFMapper/FXSearchDialogBox.rb
|
37
|
+
- lib/IFMapper/FXSectionDialogBox.rb
|
42
38
|
- lib/IFMapper/FXMapperWindow.rb
|
43
|
-
- lib/IFMapper/IFMReader.rb
|
44
|
-
- lib/IFMapper/FXMap.rb
|
45
|
-
- lib/IFMapper/FXRoom.rb
|
46
|
-
- lib/IFMapper/Page.rb
|
47
|
-
- lib/IFMapper/FXMapFileDialog.rb
|
48
39
|
- lib/IFMapper/Room.rb
|
40
|
+
- lib/IFMapper/Section.rb
|
41
|
+
- lib/IFMapper/FXConnection.rb
|
42
|
+
- lib/IFMapper/IFMReader.rb
|
43
|
+
- lib/IFMapper/FXWarningBox.rb
|
44
|
+
- lib/IFMapper/FXMapColorBox.rb
|
49
45
|
- lib/IFMapper/PDFMapExporter.rb
|
46
|
+
- lib/IFMapper/MapPrinting.rb
|
47
|
+
- lib/IFMapper/FXMapperSettings.rb
|
48
|
+
- lib/IFMapper/Connection.rb
|
49
|
+
- lib/IFMapper/FXAboutDialogBox.rb
|
50
|
+
- lib/IFMapper/FXSearchDialogBox.rb
|
51
|
+
- lib/IFMapper/FXMapFileDialog.rb
|
50
52
|
- lib/IFMapper/FXRoomDialogBox.rb
|
51
53
|
- lib/IFMapper/FXConnectionDialogBox.rb
|
54
|
+
- lib/IFMapper/AStar.rb
|
52
55
|
- maps/Zork_Zero.ifm
|
53
56
|
- maps/anchor.ifm
|
54
57
|
- maps/atrox.ifm
|
@@ -111,6 +114,22 @@ files:
|
|
111
114
|
- icons/printicon.png
|
112
115
|
- icons/prevpage.png
|
113
116
|
- icons/nextpage.png
|
117
|
+
- icons/room_n.xpm
|
118
|
+
- icons/room_nw.xpm
|
119
|
+
- icons/room_ne.xpm
|
120
|
+
- icons/room_se.xpm
|
121
|
+
- icons/room_sw.xpm
|
122
|
+
- icons/room_s.xpm
|
123
|
+
- icons/room_w.xpm
|
124
|
+
- icons/room_e.xpm
|
125
|
+
- icons/room_n.gif
|
126
|
+
- icons/room_s.gif
|
127
|
+
- icons/room_sw.gif
|
128
|
+
- icons/room_se.gif
|
129
|
+
- icons/room_ne.gif
|
130
|
+
- icons/room_nw.gif
|
131
|
+
- icons/room_e.gif
|
132
|
+
- icons/room_w.gif
|
114
133
|
- HISTORY.txt
|
115
134
|
- IFMapper.gemspec
|
116
135
|
test_files: []
|