1Cellular Automata based wildfire for FlightGear/CVS
2---------------------------------------------------
3
4Copyright (C) 2008 - 2009  Anders Gidenstam
5
6 *  These programs are free software; you can redistribute them and/or modify
7 *  them under the terms of the GNU General Public License as published by
8 *  the Free Software Foundation; either version 2 of the License, or
9 *  (at your option) any later version.
10 *
11 *  This program is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 *  GNU General Public License for more details.
15 *
16 *  You should have received a copy of the GNU General Public License
17 *  along with this program; if not, write to the Free Software
18 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20Usage
21-----
22
23A fire is started by calling wild_fire.ignite(pos) where pos is a
24valid geo.Coord instance.
25
26Example: starting fires by ctrl+shift+click:
27
28Put this Nasal fragment somewhere where it is run at startup.
29(E.g. in a <nasal><MyStuff><script>...</script></MyStuff></nasal>
30block in preferences.xml.)
31
32setlistener("/sim/signals/click", func {
33  if (__kbd.shift.getBoolValue()) {
34    if (__kbd.ctrl.getBoolValue()) {
35      var click_pos = geo.click_position();
36      wildfire.ignite(click_pos);
37    }
38  }
39});
40
41
42Configuration properties
43-----------------------
44
45These properties can be set at runtime, in preferences.xml or in any
46other way supported by FlightGear.
47
48/environment/wildfire/enabled : bool
49  Enables/disables the whole WildFire module.
50  On disable the current state is lost. Can be used to reset WildFire.
51
52/environment/wildfire/share-events : bool
53  Enables/disables sending and receiving of fire events over the
54  multiplayer network.
55
56/environment/wildfire/fire-on-crash : bool
57  If true a fire will start if the aircraft crashes.
58
59/environment/wildfire/report-score : bool
60  Report the result of fire fighting.
61
62/environment/wildfire/models/enabled : bool
63  Enables/disables rendering of the 3d models.
64  (That is, fire, smoke, soot and foam.)
65
66/environment/wildfire/save-on-exit : bool
67  If set the current log of Wildfire events is saved in
68  ~/.fgfs/Wildfire/fire_log.xml .
69
70/environment/wildfire/restore-on-startup : bool
71  If set Wildfire will load and execute the events in
72  ~/.fgfs/Wildfire/fire_log.xml . This recreates the fire state
73  as it where when the log was saved.
74  NOTE: A long event log or one that covers a long period of time will take
75  a a lot of time to recreate.
76  Storing and reloading of the CA state, as opposed to the event log, is not
77  supported yet.
78
79
80API
81---
82
83ignite : func (pos, source=1)
84     pos    - fire location    : geo.Coord
85     source - broadcast event? : {0, 1}
86
87   Start a fire.
88
89
90resolve_water_drop : func (pos, radius, volume, source=1)
91     pos    - drop location    : geo.Coord
92     radius - drop radius m    : double
93     volume - Not used         : double
94     source - broadcast event? : {0, 1}
95
96  Extinguishes any fires in the cells within r of pos and
97  makes the cells nonflammable.
98
99resolve_retardant_drop : func (pos, radius, volume, source=1) {
100     pos    - drop location    : geo.Coord
101     radius - drop radius m    : double
102     volume - Not used         : double
103     source - broadcast event? : {0, 1}
104
105  Identical to resolve_water_drop.
106
107resolve_foam_drop : func (pos, radius, volume, source=1) {
108     pos    - drop location    : geo.Coord
109     radius - drop radius m    : double
110     volume - Not used         : double
111     source - broadcast?       : {0, 1}
112
113  Extinguishes any fires in the cells within r of pos and
114  makes the cells nonflammable and foamy.
115
116load_event_log : func (filename, skip_ahead_until=-1)
117     filename         - getprop("/sim/fg-home") ~ "/Wildfire/" ~ filename
118     skip_ahead_until - skip from last event to this time : double (epoch)
119                        fast forward from skip_ahead_until
120                        to current time.
121       x < last event   - fast forward all the way to current time (use 0).
122                          NOTE: Can be VERY time consuming.
123       -1               - skip to current time.
124
125  Loads an event log.
126  The skip_ahead_until argument can be used for synchronizing a restored
127  fire state among multiple players.
128
129save_event_log : func (filename)
130     filename         - getprop("/sim/fg-home") ~ "/Wildfire/" ~ filename
131
132  Saves an event log.
133
134print_score = func
135  Print a summary of the current wildfire state.
136
137
138/Anders
139