vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 function Tetris_stone_outside_test ()
2 --variablen holen und setzen
3 local spalten = Tetris["game"]["x"];
4 local zeilen = Tetris["game"]["y"];
5 local anz_s = Tetris["game"]["s_anz_s"];
6 --liste erstellen
7 for s = 1, anz_s do
8 --pos des berechneten steins auslesen
9 local pos_string = Tetris["game"]["s_temp"]["temp"][s];
10 --pos x y als zahlen holen
11 local pos_xy = Tetris_return_xy(pos_string);
12 local pos_x = pos_xy["x"];
13 local pos_y = pos_xy["y"];
14 --überprüfen ob stein auserhalb spielfeld
15 if ((pos_x > spalten) or (pos_x < 1) or (pos_y > zeilen) or (pos_y < 1)) then
16 --stein ist nicht im spielfeld
17 return true;
18 else
19 --überprüfen ob stein schon besetzt ist
20 if not (Tetris["game"]["feld"][pos_string] == 0) then
21 return true;
22 end
23 end
24 end
25 --keine ungültige oder besetzte steine gefunden
26 return false;
27 end
28  
29 --position des zukünftigen bausteins berechnen
30 function Tetris_falling_stone_coming_soon ()
31 --variablen holen und setzen
32 local stone = Tetris["game"]["s"];
33 local s_lage = Tetris["game"]["s_lage"];
34 local x_pos = Tetris["game"]["s_pos_x"];
35 local y_pos = Tetris["game"]["s_pos_y"];
36 local anz_s = Tetris["game"]["s_anz_s"];
37 --pos der steine über diesen baustein in dieser lage holen
38 local infos = Tetris_baustein (stone, 2, s_lage);
39 --liste erstellen
40 for s = 1, anz_s do
41 --relative pos des steins zum nullpunkt des bausteins als string
42 local r_string_s_pos = infos[s];
43 --zahlen auslesen
44 local r_s_pos = Tetris_return_xy(r_string_s_pos);
45 local r_s_x = r_s_pos["x"];
46 local r_s_y = r_s_pos["y"];
47 --absolute pos des steins im gamewindow
48 local s_x = x_pos+r_s_x;
49 local s_y = y_pos+r_s_y;
50 --pos des steines als string im temp speichern
51 Tetris["game"]["s_temp"]["temp"][s]="x"..s_x.."y"..s_y;
52 end
53 end
54  
55 --aktuelle neue position des bausteins speichern
56 function Tetris_falling_stone ()
57 --variablen holen und setzen
58 local anz_s = Tetris["game"]["s_anz_s"];
59 --liste erstellen
60 for s = 1, anz_s do
61 --pos des berechneten steins auslesen
62 local pos = Tetris["game"]["s_temp"]["temp"][s];
63 --pos des steines als string im temp speichern
64 Tetris["game"]["s_temp"][s]=pos;
65 end
66 end
67  
68 --aktueller baustein in feldliste speichern
69 function Tetris_save_stone ()
70 --variablen holen und setzen
71 local anz_s = Tetris["game"]["s_anz_s"];
72 local stone = Tetris["game"]["s"];
73 --in liste speichern
74 for s = 1, anz_s do
75 --pos des aktuellen steins auslesen
76 local pos = Tetris["game"]["s_temp"][s];
77 --pos des steines im feld speichern
78 Tetris["game"]["feld"][pos]=stone;
79 end
80 end
81  
82 --return pos x_y als zahlen im table zurück
83 function Tetris_return_xy(string_xy)
84 local suchx = string.find(string_xy, "x", 1);
85 local suchy = string.find(string_xy, "y", 1);
86 local stringleng = string.len(string_xy);
87 local x_pos = tonumber(string.sub(string_xy,suchx+1,suchy-1));
88 local y_pos = tonumber(string.sub(string_xy,suchy+1,stringleng));
89 local pos = {["x"]=x_pos, ["y"]=y_pos};
90 return pos;
91 end
92  
93 --feldliste erstellen
94 function Tetris_fieldlist_create ()
95 --variablen holen und setzen
96 local spalten = Tetris["game"]["x"];
97 local zeilen = Tetris["game"]["y"];
98 --vorherige gespeicherte angaben löschen
99 Tetris["game"]["feld"]= { };
100 --liste erstellen
101 for spalte = 1, spalten do
102 for zeile = 1, zeilen do
103 Tetris["game"]["feld"]["x"..spalte.."y"..zeile]=0;
104 end
105 end
106 end
107  
108 --überprüfen ob eine linie fertig ist
109 --wenn ja, nummer der linie durchgeben
110 --wenn nein, 0 durchgeben
111 function Tetris_complet_zeile_test ()
112 --variablen holen und setzen
113 local spalten = Tetris["game"]["x"];
114 local zeilen = Tetris["game"]["y"];
115 local zahler = 0
116 for zeile = 1, zeilen do
117 local zahler = 0
118 for spalte = 1, spalten do
119 --überprüfen ob dieses feld 0 ist
120 if (Tetris["game"]["feld"]["x"..spalte.."y"..zeile]==0) then
121 --weiter zur nächsten zeile
122 spalte = spalten+1;
123 else
124 --volles feld gefunden
125 zahler = zahler+1;
126 end
127  
128 end
129 --überprüfen ob die gerade überprüfte zeile voll ist
130 if (zahler == spalten) then
131 return zeile;
132 end
133 end
134 return 0;
135 end
136  
137 function Tetris_delet_line (linie)
138 --linie = zeile die gelöscht werden muss
139 if (Tetris["debug"]==1) then
140 DEFAULT_CHAT_FRAME:AddMessage("Delet Linie "..linie);
141 end
142 --variablen holen und setzen
143 local spalten = Tetris["game"]["x"];
144 local zeilen = Tetris["game"]["y"];
145 for zeile=1 , zeilen-linie do
146 for spalte = 1, spalten do
147 --nummer des oberen feldes auslesen
148 local field_nr = Tetris["game"]["feld"]["x"..spalte.."y"..zeile+linie];
149 --nummer ins untere feld schreiben
150 Tetris["game"]["feld"]["x"..spalte.."y"..zeile+linie-1] = field_nr;
151 end
152 end
153 end
154  
155 function Tetris_random_stone (anz_s)
156 --variablen holen und setzen
157 local zufall = math.random(anz_s);
158 return zufall;
159 end
160  
161 function Tetris_release_stone ()
162 --variablen holen und setzen
163 local s_next = Tetris["game"]["s_next"];
164 local spalten = Tetris["game"]["x"];
165 local anz_s = Tetris["game"]["stones"]["anz_stones"];
166 local s = "";
167 --überprüfen ob der nächste stein bekannt ist
168 if (s_next == 0) then
169 --zufalls-stein generieren
170 local zufall = Tetris_random_stone (anz_s)
171 --stein holen dem diese zufallszahl zugeordnet ist
172 s = Tetris["game"]["stones"][zufall];
173 --nächster stein bekannt
174 else
175 s = s_next;
176 end
177 --infos über diesen stein holen
178 local infos = Tetris_baustein (s, 1)
179 local anz_lagen = infos[1];
180 local anz_steine = infos[2];
181 --baustein-nullpunkt setzen
182 local x = spalten/2;
183 local x = math.ceil(x)+1;
184 local y = Tetris["game"]["y"];
185 --nächster zufallstein generieren
186 local zufall = Tetris_random_stone (anz_s);
187 local s_next = Tetris["game"]["stones"][zufall];
188 Tetris["game"]["s_next"] = s_next;
189 --alle angaben speichern
190 Tetris["game"]["s"]=s;
191 Tetris["game"]["s_anz_s"]=anz_steine;
192 Tetris["game"]["s_anz_l"]=anz_lagen;
193 Tetris["game"]["s_lage"]=1;
194 Tetris["game"]["s_pos_x"]=x;
195 Tetris["game"]["s_pos_y"]=y;
196 if (Tetris["debug"]==1) then
197 DEFAULT_CHAT_FRAME:AddMessage("This Stone="..s.." Next Stone="..s_next);
198 end
199 end
200  
201 --position des zukünftigen bausteins berechnen, für NS
202 function Tetris_falling_stone_coming_soon_NS ()
203 --variablen holen und setzen
204 local stone = Tetris["game"]["s_next"];
205 local s_lage = 1;
206 local x_pos = math.ceil(Tetris["game"]["NS_x"]/2+1);
207 local y_pos = Tetris["game"]["NS_y"];
208 --anz. steine die dieser baustein hat holen
209 local info_anz_s = Tetris_baustein (stone, 1);
210 local anz_s = info_anz_s[2];
211 --pos der steine über diesen baustein in dieser lage holen
212 local infos = Tetris_baustein (stone, 2, s_lage);
213 --liste erstellen
214 for s = 1, anz_s do
215 --relative pos des steins zum nullpunkt des bausteins als string
216 local r_string_s_pos = infos[s];
217 --zahlen auslesen
218 local r_s_pos = Tetris_return_xy(r_string_s_pos);
219 local r_s_x = r_s_pos["x"];
220 local r_s_y = r_s_pos["y"];
221 --absolute pos des steins im gamewindow
222 local s_x = x_pos+r_s_x;
223 local s_y = y_pos+r_s_y;
224 --pos des steines als string im temp speichern
225 Tetris["game"]["s_NS_temp"][s]="x"..s_x.."y"..s_y;
226 end
227 end
228  
229 function Tetris_ingame(nr)
230 --nr = neuer ingamestatus
231 if (nr == 0) then
232 Tetris["ingame"]=0;
233 Tetris_GF_b_pause:Disable();
234 Tetris_GF_BF_l:Disable();
235 Tetris_GF_BF_u:Disable();
236 Tetris_GF_BF_r:Disable();
237 Tetris_GF_BF_d:Disable();
238 end
239 if (nr == 1) then
240 Tetris["ingame"]=1;
241 Tetris_GF_b_pause:Enable();
242 Tetris_GF_BF_l:Enable();
243 Tetris_GF_BF_u:Enable();
244 Tetris_GF_BF_r:Enable();
245 Tetris_GF_BF_d:Enable();
246 end
247 end
248  
249 function Tetris_stonelist_create ()
250 local max_s = Tetris["options"]["max_s"];
251 Tetris["game"]["stones"] = { };
252 for s = 1, max_s do
253 local status = Tetris["options"]["stones"][s];
254 if status == 1 then
255 table.insert(Tetris["game"]["stones"],s)
256 end
257 end
258 --falls kein stein gewählt ist
259 local anz_s = table.getn(Tetris["game"]["stones"]);
260 if (anz_s < 1) then
261 Tetris["game"]["stones"]["anz_stones"]=1;
262 table.insert(Tetris["options"]["stones"],1)
263 else
264 Tetris["game"]["stones"]["anz_stones"]=anz_s;
265 end
266 end
267  
268 function Tetris_creat_custom_lines (lines)
269 --lines = anzahl linien
270 --variablen holen und setzen
271 local spalten = Tetris["game"]["x"];
272 local zeilen = Tetris["game"]["y"];
273 local max_s = Tetris["options"]["max_s"];
274  
275 for zeile = 1, lines do
276 for spalte = 1, spalten do
277 local zufall = Tetris_random_stone(2);
278 if (zufall == 1) then
279 local zufall = Tetris_random_stone(max_s);
280 Tetris["game"]["feld"]["x"..spalte.."y"..zeile] = zufall;
281 end
282 end
283 end
284 end