ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/deliantra/gde/bin/gce
Revision: 1.19
Committed: Sun Apr 2 16:26:30 2006 UTC (20 years, 6 months ago) by elmex
Branch: MAIN
Changes since 1.18: +2 -1 lines
Log Message:
bumped version and write it into the rc file

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2 root 1.16
3 elmex 1.19 our $VERSION = '1.0';
4 elmex 1.12
5     BEGIN {
6     if (%PAR::LibCache) {
7 root 1.16 @INC = grep ref, @INC; # weed out all paths except pars loader refs
8    
9 elmex 1.12 while (my ($filename, $zip) = each %PAR::LibCache) {
10     for ($zip->memberNames) {
11     next unless /^\/root\/(.*)/;
12     $zip->extractMember ($_, "$ENV{PAR_TEMP}/$1")
13     unless -e "$ENV{PAR_TEMP}/$1";
14     }
15     }
16    
17     $ENV{CROSSFIRE_LIBDIR} ||= $ENV{PAR_TEMP};
18    
19     if ($^O eq "MSWin32") {
20     $ENV{GTK_RC_FILES} = "$ENV{PAR_TEMP}/share/themes/MS-Windows/gtk-2.0/gtkrc";
21     }
22     }
23     }
24    
25     use Gtk2 -init;
26    
27     use Data::Dumper;
28     use File::Spec;
29    
30     use Crossfire;
31    
32     use GCE::MainWindow;
33    
34     our $CFG;
35     our $MAINWIN;
36    
37     our $DOCUMENTATION = join ("\n", do { local $/; <DATA> });
38    
39     sub read_cfg {
40     my ($file) = @_;
41    
42     open CFG, $file
43     or return;
44    
45     $CFG = eval join '', <CFG>;
46    
47     close CFG;
48     }
49    
50     sub write_cfg {
51     my ($file) = @_;
52    
53     open CFG, ">$file"
54     or return;
55    
56     {
57     local $Data::Dumper::Purity = 1;
58 elmex 1.19 $CFG->{VERSION} = $VERSION;
59 elmex 1.12 print CFG Data::Dumper->Dump ([$CFG], [qw/CFG/]);
60     }
61    
62     close CFG;
63     }
64    
65     # following 2 functions are taken from CV :)
66     sub find_rcfile($) {
67     my $path;
68    
69     for (@INC) {
70    
71     $path = "$_/GCE/$_[0]";
72     return $path if -r $path;
73     }
74    
75     die "FATAL: can't find required file $_[0]\n";
76     }
77    
78     sub require_image($) {
79     new_from_file Gtk2::Gdk::Pixbuf find_rcfile "images/$_[0]";
80     }
81    
82     sub get_pos_and_size {
83     my ($window) = @_;
84    
85     my ($x, $y) = $window->get_position;
86     my ($w, $h) = $window->get_size;
87    
88     return [$x, $y, $w, $h];
89     }
90    
91     sub set_pos_and_size {
92     my ($window, $p_and_s, $default_w, $default_h, $default_x, $default_y) = @_;
93    
94     $window->set_default_size ($p_and_s->[2] || $default_w, $p_and_s->[3] || $default_h);
95    
96     # FIXME: This sucks, moving it after showing it can't be a good thing.
97     $window->show_all;
98     $window->move ($p_and_s->[0] || $default_x, $p_and_s->[1] || $default_y);
99     }
100    
101     read_cfg "$Crossfire::VARDIR/gceconfig";
102    
103     $CFG->{LIBDIR} ||= $ENV{CROSSFIRE_LIBDIR};
104     $CFG->{MAPDIR} ||= File::Spec->catfile ($CFG->{LIBDIR}, 'maps');
105    
106     # must be done after changing the libdir path:
107     Crossfire::set_libdir ($CFG->{LIBDIR});
108     Crossfire::load_archetypes;
109     Crossfire::load_tilecache;
110    
111     my $w = GCE::MainWindow->new;
112    
113     $w->load_layout;
114    
115     $w->show_all;
116    
117     Gtk2->main;
118    
119     __DATA__
120 root 1.7
121 root 1.1 =head1 NAME
122    
123     gce - gtk (perl) crossfire editor
124    
125 elmex 1.10 =head1 SYNOPSIS
126    
127 root 1.11 gce [<map-filename>...]
128 elmex 1.10
129     =head1 FEATURES
130    
131     gce is a map editor for crossfire.
132    
133 root 1.11 Its main features are:
134    
135     - higher map editing comfort
136 elmex 1.10 - intelligent placement tool
137     - intelligent connection tool
138     - intelligent erase tool
139     - faster and smaller than the java editor
140     - map normalizing (removal of old deprecated attributes)
141     - exit following
142     - world map navigation
143 root 1.11 - easier installation (on windows)
144 elmex 1.18 - auto joining of walls (see Placement tool -> auto setting)
145 elmex 1.10
146     =head1 DESCRIPTION
147    
148 root 1.13 =head2 THE TOOLBOX WINDOW
149 elmex 1.10
150 root 1.13 The toolbox window is the main window of gce. It provides the display of
151     the currently selected object and the tools. The buttons select of the
152     editing tool:
153 elmex 1.10
154     =over 4
155    
156     =item * Pick
157    
158 root 1.11 This tool is the simplest of all. It lets the user select the topmost
159     object of a map cell in the map window and updates the stack view for the
160     current space.
161    
162     If the pick attr flag is set only the attribute editor and the stack
163     view are updated. This is useful when you want to put an object in the
164     attribute editor and want to place an object from the map, you picked
165     before, in an inventory of a different object (you just picked). This is a
166     very special thing. It will propably go away.
167 elmex 1.10
168     Shortcut-key in map editor: i
169    
170     =item * Place
171    
172     This is the intelligent placement tool. It has many modes:
173    
174     =over 4
175    
176     =item auto
177    
178 root 1.11 This mode implements DWIM (do-what-I-mean) by trying to do the the right
179     thing(tm) with the selected object:
180    
181     If you place a floor arch, it will try to replace the existing floor or
182     set the floor below all items. If you place a monster or other arch, it
183     will place it on top. If you place a wall, it will put the wall above the
184     floor and propably replace other walls.
185 elmex 1.10
186 elmex 1.18 Autojoin also works only in this mode. To draw an wall with autojoining pick
187     the wall arch which name looks like: <wallname>_0. It's the single point wall
188     tile which has no connections.
189     When you place this arch now, it will autoconnect the walls you are drawing.
190    
191 elmex 1.10 =item top
192    
193 root 1.11 Places the arch on the top of the stack of the map cell.
194 elmex 1.10
195     =item above floor
196    
197 root 1.11 Places the arch just right above the floor (or the bottom of the stack).
198 elmex 1.10
199     =item below floor
200    
201 root 1.11 Places the arch just right below the floor (or the bottom of the stack).
202 elmex 1.10
203     =item bottom
204    
205 root 1.11 Places the arch on the bottom of the stack.
206 elmex 1.10
207     =back
208    
209     Shortcut-key in map editor: p
210    
211     =item * Erase
212    
213     This is the tool that lets you erase an arch.
214 root 1.11
215 elmex 1.10 It has following modes:
216    
217     =over 4
218    
219     =item top
220    
221     Erases the topmost object on the stack.
222    
223     =item walls
224    
225 root 1.11 Erases all walls in the stack (and only walls).
226 elmex 1.10
227     =item above floor
228    
229     Erases the first object above the floor.
230    
231     =item floor
232    
233 root 1.11 Erases all floor from the stack (and only the floor).
234 elmex 1.10
235     =item below floor
236    
237     Erases the first object below the floor.
238    
239     =item bottom
240    
241     Erases the first object on the bottom of the stack.
242    
243     =item pick match
244    
245 root 1.11 This erases all objects from the stack that match the currently selected
246     object.
247 elmex 1.10
248 root 1.11 =item protect walls (checkbox)
249 elmex 1.10
250 root 1.11 This protects walls from being erased (except when erasing walls).
251 elmex 1.10
252 root 1.11 =item protect monsters (checkbox)
253 elmex 1.10
254 root 1.11 This protects monsters from being erased.
255 elmex 1.10
256     =back
257    
258     Shortcut-key in map editor: e
259    
260     =item * Select
261    
262 root 1.11 This is the selection tool. It can be used to select rectangular areas and
263     operate on that area in various ways:
264 elmex 1.10
265     =over 4
266    
267     =item copy
268    
269 root 1.11 This just copies all objects from the selected area into an internal
270     buffer for later paste operations.
271 elmex 1.10
272     Shortcut-key in map editor: c
273    
274     =item paste
275    
276 root 1.11 This function pastes the internal buffer into the map, beginning in the
277     top left corner of the selected area. The size of the selection has no
278     relevance to the result: IT always places the whole internal buffer onto
279     the map.
280 elmex 1.10
281     Shortcut-key in map editor: p
282    
283     =item invoke
284    
285 root 1.11 This function is a very powerful one. It can apply another tool (such as
286     the place tool) on all spaces of the selected area.
287    
288     It can, for example, be used to fill a map with floor tiles or erase
289     everything.
290 elmex 1.10
291     Shortcut-key in map editor: n
292    
293     =back
294    
295     Shortcut-key in map editor: s
296    
297     =item * Eval
298    
299 root 1.11 This is a very special tool which isn't finished yet. It lets you specify
300     a perl snippet that can manipulate the stack.
301 elmex 1.10
302     Shortcut-key in map editor: l
303    
304     =item * Connect Exit
305    
306 root 1.11 This tool connects two exits or teleporters.
307    
308     You can either connect two exits to each other, or just point an exit to
309     a certain location on a map.
310 elmex 1.10
311     Shortcut-key in map editor: x
312    
313     =item * Follow Exit
314    
315 root 1.11 With this tool you can follow exits and teleporters by opening the target
316     map in a new window (or presents an existing window).
317 elmex 1.10
318     Shortcut-key in map editor: f
319    
320     =back
321    
322     =head2 THE STACK VIEW
323    
324 root 1.11 This window displays the stack of a map space/coordinate.
325 elmex 1.10
326 root 1.11 You can swap two objects on the stack and delete a object from the stack
327     by dragging one object over another.
328    
329     By clicking on an item on the stack you can make it the currently selected
330     object.
331 elmex 1.10
332     =head2 THE MAP EDITOR
333    
334     This window just displays the map and lets you use the tools. The shortcuts are
335     documented above in the tool descriptions.
336    
337 root 1.11 You can pan the map using the middle mouse button and use the tool with
338     the left mouse button.
339 elmex 1.10
340 root 1.11 There are two modifiers: Holding down the Meta/Alt-key temporarily
341     switches to the pick tool. Holding down the Ctrl-key temporarily switched
342     to the erase tool. Both will use their current settings. To change them,
343     you need to select the tools using the toolbox first.
344 elmex 1.10
345     =head2 THE ATTRIBUTE EDITOR
346    
347 root 1.11 The attribute editor display the archetype name followed by the object
348     name and the type of the object in parentheses.
349    
350     Since there are often many attributes for a given object, they are sorted
351     into different categories/tabs.
352 elmex 1.10
353 root 1.11 The lore and msg tabs let you edit the text attributes of the object.
354 elmex 1.10
355 root 1.11 The inventory tab lets you add stuff to the inventory by dragging them
356     from the selected object in the toolbox to the top most button with the
357     image in the inventory (the inventory editor is subject to change and
358     improvement).
359    
360     Both field labels and value widgets have tool tips enabled. Tool tips on
361     the labels explain the attribute in more detail. The tool tips on the
362     value widgets show the default value from the archetype.
363 elmex 1.10
364    
365     =head2 THE PICK WINDOW
366    
367 root 1.11 Pick windows are used to quickly pick archetypes from specific categories.
368    
369     Left click creates an object from the archetype and makes it the currently
370     selected object for the tools and the attribute editor.
371    
372     You can change the attributes of the currently selected object in the
373     attribute editor.
374 elmex 1.10
375     You can open multiple pick windows.
376    
377 elmex 1.12 =head1 AUTHOR
378 root 1.1
379 root 1.15 All of the editor GUI:
380 root 1.4
381 elmex 1.12 Robin Redeker <elmex@ta-sa.org>
382     http://www.ta-sa.org/
383 root 1.6
384 root 1.15 The Crossfire map handling module and map widget:
385 root 1.1
386     Marc Lehmann <schmorp@schmorp.de>
387     http://home.schmorp.de/
388    
389     =cut