ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/preprocess
Revision: 1.18
Committed: Thu Feb 15 21:07:49 2007 UTC (17 years, 3 months ago) by root
Branch: MAIN
Changes since 1.17: +1 -0 lines
Log Message:
- use a simpler, less fancy loader base design (basically a one-line-lookahead
  top-down parser).

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2    
3 root 1.8 my %ARG = @ARGV;
4    
5 root 1.3 use List::Util;
6    
7 root 1.1 # todo: gather dynamically
8     my @kw = qw(
9 root 1.4 no_pass
10     walk_on
11     walk_off
12     fly_on
13     fly_off
14     flying
15    
16 root 1.1 ac
17     activate_on_push
18     activate_on_release
19     alive
20     anim_speed
21     animation
22     applied
23     arch
24     armour
25     attach
26     attack_movement
27     attacktype
28     auto_apply
29     been_applied
30     berserk
31     blocksview
32     body_range
33     body_arm
34     body_torso
35     body_head
36     body_neck
37     body_skill
38     body_finger
39     body_shoulder
40     body_foot
41     body_hand
42     body_wrist
43     body_waist
44     can_apply
45     can_cast_spell
46     can_roll
47     can_see_in_dark
48     can_use_armour
49     can_use_bow
50     can_use_horn
51     can_use_range
52     can_use_ring
53     can_use_rod
54     can_use_scroll
55     can_use_shield
56     can_use_skill
57     can_use_wand
58     can_use_weapon
59     carrying
60     casting_time
61     cha
62     changing
63     client_type
64     con
65     confused
66     connected
67     container
68     cursed
69     custom_name
70     dam
71     dam_modifier
72     damned
73 root 1.12 destroy_on_death
74 root 1.1 dex
75     direction
76     duration
77     duration_modifier
78     editable
79     editor_folder
80     elevation
81     end
82     endlore
83     endmsg
84     exp
85     expmul
86     face
87     food
88     friendly
89     gen_sp_armour
90     generator
91     glow_radius
92     grace
93     has_ready_bow
94     has_ready_horn
95     has_ready_rod
96     has_ready_scroll
97     has_ready_skill
98     has_ready_wand
99     has_ready_weapon
100 root 1.7 has_ready_range
101 root 1.1 hitback
102     hp
103     identified
104     immune
105     int
106     inv_locked
107     invisible
108     is_animated
109     is_blind
110     is_buildable
111     is_cauldron
112 root 1.7 is_dust
113 root 1.1 is_floor
114     is_hilly
115     is_lightable
116     is_thrown
117     is_turnable
118     is_used_up
119     is_water
120     is_wooded
121     item_power
122     known_cursed
123     known_magical
124     last_eat
125     last_grace
126     last_heal
127     last_sp
128     level
129     lifesave
130     lore
131     luck
132     magic
133     make_invisible
134     material
135     materialname
136     maxgrace
137     maxhp
138     maxsp
139     monster
140     more
141     move_allow
142     move_block
143     move_off
144     move_on
145     move_slow
146     move_slow_penalty
147     move_state
148     move_type
149     msg
150     name
151     name_pl
152     neutral
153     no_attack
154     no_damage
155     no_drop
156     no_fix_player
157     no_magic
158     no_pick
159     no_skill_ident
160     no_steal
161     no_strength
162     nrof
163 root 1.13 obj_original
164 root 1.1 object
165     oid
166     one_hit
167     only_attack
168     other_arch
169     overlay_floor
170     path_attuned
171     path_denied
172     path_repelled
173     perm_exp
174     pick_up
175 root 1.7 player_sold
176 root 1.1 pow
177     protected
178     race
179     random_move
180     random_movement
181     randomitems
182     range
183     range_modifier
184     reflect_missile
185     reflect_spell
186     reflecting
187     resist_acid
188     resist_blind
189     resist_cancellation
190     resist_chaos
191     resist_cold
192     resist_confusion
193     resist_counterspell
194     resist_death
195     resist_deplete
196     resist_disease
197     resist_drain
198     resist_electricity
199     resist_fear
200     resist_fire
201     resist_ghosthit
202     resist_godpower
203     resist_holyword
204     resist_internal
205     resist_life_stealing
206     resist_magic
207     resist_paralyze
208     resist_physical
209     resist_poison
210     resist_slow
211     resist_turn_undead
212     resist_weaponmagic
213     run_away
214     scared
215     see_anywhere
216     see_invisible
217     skill
218     slaying
219     sleep
220     slow_move
221     smoothlevel
222     sp
223     speed
224     speed_left
225     splitting
226     stand_still
227     startequip
228     state
229     stealth
230     str
231     subtype
232     tear_down
233     title
234     tooltype
235     treasure
236     type
237     unaggressive
238     undead
239     unique
240     unpaid
241     use_content_on_gen
242 root 1.6 uuid
243 root 1.1 value
244     vulnerable
245     was_wiz
246     wc
247     weapontype
248     weight
249     will_apply
250     wis
251     wiz
252     x
253     xrays
254     y
255 root 1.5
256     Object
257     Str
258     Dex
259     Con
260     Wis
261     Cha
262     Int
263     Pow
264     More
265 root 1.9
266     maplore
267     endmaplore
268     enter_x
269     enter_y
270     width
271     height
272     reset_timeout
273     reset_time
274     swap_time
275     difficulty
276     darkness
277     fixed_resettime
278     per_player
279     per_party
280     region
281     shopitems
282     shopgreed
283     shopmin
284     shopmax
285     shoprace
286     outdoor
287     tile_path_1
288     tile_path_2
289     tile_path_3
290     tile_path_4
291    
292     file_format_version
293    
294     temp
295     pressure
296     humid
297     windspeed
298     winddir
299     sky
300 root 1.10
301     map
302     savebed_map
303     bed_x
304     bed_y
305     password
306     shoottype
307     bowtype
308     petmode
309     gen_hp
310     gen_sp
311     gen_grace
312     listening
313     peaceful
314     digestion
315     pickup
316     outputs_sync
317     outputs_count
318     usekeys
319     unapply
320     weapon_sp
321     lev_array
322     endplst
323 root 1.14
324     color_fg
325     color_bg
326     visibility
327     magicmap
328    
329     parent
330     longname
331 root 1.15 jail_map
332     jail_x
333     jail_y
334 root 1.14 fallback
335     nomore
336 root 1.16
337     chance
338     mods
339     diff
340     saves
341     description
342     density
343     damage
344 root 1.17
345     anim
346     mina
347     facings
348 root 1.18 player
349 root 1.1 );
350    
351 root 1.8 open GPERF, "|-", "exec $ARG{GPERF} -m50 >kw_hash.h"
352     or die "$ARGV{GPERF}: $!";
353 root 1.1
354     print GPERF <<EOF;
355     %language=C++
356     %enum
357     %define class-name kw_lex
358     %define lookup-function-name match
359     %struct-type
360     %compare-strncmp
361     %delimiters=,
362 root 1.2 struct keyword_idx { const char *name; enum keyword index; };
363 root 1.1 %%
364     EOF
365    
366     for (@kw) {
367 root 1.3 printf GPERF "%s,%s\n", $_, "KW_$_";
368 root 1.1 }
369    
370     print GPERF <<EOF;
371     %%
372 root 1.3 extern const char *const keyword_str [] = {
373 root 1.1 "<EOF>",
374     "<ERROR>",
375     EOF
376    
377     for (@kw) {
378     printf GPERF " \"%s\",\n", $_;
379     }
380    
381 root 1.3 print GPERF "};\n";
382    
383     printf GPERF "\nextern const unsigned char keyword_len [] = { 5, 7, %s };\n\n",
384     join ", ", map length, @kw;
385 root 1.1
386 root 1.8 close GPERF
387     or die "$ARG{GPERF}: failed to run";
388    
389 root 1.1 open KW, ">", "keyword.h";
390    
391     print KW <<EOF;
392     #ifndef KW_H__
393     #define KW_H__
394    
395     enum keyword {
396 root 1.7 KW_NULL = 0,
397     KW_EOF = 0,
398     KW_ERROR,
399 root 1.1 EOF
400    
401     for (@kw) {
402 root 1.3 printf KW " %s,\n", "KW_$_",
403 root 1.1 }
404    
405     print KW <<EOF;
406     NUM_KEYWORD,
407     };
408    
409     extern const char *const keyword_str [];
410 root 1.3 extern const unsigned char keyword_len [];
411    
412     EOF
413    
414     printf KW "#define MAX_KEYWORD_LEN %d\n", List::Util::max map length, @kw;
415    
416     print KW <<EOF;
417 root 1.1
418     #endif
419    
420     EOF
421