Rev 21 | Rev 23 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 21 | Rev 22 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | unit GamMain; |
1 | unit GamMain; |
2 | 2 | ||
3 | // TODO unDelphiX auf GitHub |
- | |
4 | // - Dokumente als MarkDown |
- | |
5 | // - dxmEdit + dxwEdit fixes |
- | |
6 | // (GIT OK) - Dplay disable |
- | |
7 | - | ||
8 | // TODO 2024 Review |
3 | // TODO 2024 Review |
9 | // ---------------- |
4 | // ---------------- |
10 | // Quellcode optimieren und klassen-namen überdenken |
- | |
11 | // [OK SVN 12] Form Screen center anstelle Desktop Center |
5 | // [OK SVN 12] Form Screen center anstelle Desktop Center |
- | 6 | // [OK SVN 17] Levelconverter entfernen, stattdessen einlesen abwärtskompatibel machen |
|
- | 7 | // [OK SVN 18] MCI hangs a lot! Use new unDelphiX DXMusic component for MIDI! |
|
- | 8 | // [OK SVN 19] Pause wird nicht in Caption geschrieben |
|
- | 9 | // [OK SVN 19] Wenn man pause gemacht hat und fenster wechselt und wieder zurückwechselt, ist pause aufgehoben. |
|
- | 10 | // [OK SVN 21] DPlayX.dll auskommentieren wegen Windows Meldung |
|
12 | // Vollbild entf. |
11 | // [OK SVN 22] Vollbild entf. |
13 | // [OK SVN 21] DPlayX.dll auskommentieren => OK! |
12 | // [OK SVN 22] Credits: unDelphiX (micrel.cz/Dx) |
- | 13 | // Quellcode optimieren und klassen-namen überdenken |
|
14 | // EV CodeSign |
14 | // EV CodeSign |
15 | // Spielstände usw. "Spiele" Ordner speichern, Config in Registry sichern, etc. |
15 | // Spielstände usw. "Spiele" Ordner speichern, Config in Registry sichern, etc. |
16 | // Neue Einheiten => Medikit, Ufo das im Kreis fliegt und nicht weggeht |
16 | // Neue Einheiten => Medikit, Ufo das im Kreis fliegt und nicht weggeht |
17 | // Bei Pause => Entweder alles grau werden lassen |
17 | // Bei Pause => Entweder alles grau werden lassen |
18 | // [OK SVN 19] Pause wird nicht in Caption geschrieben |
- | |
19 | // [OK SVN 19] Wenn man pause gemacht hat und fenster wechselt und wieder zurückwechselt, ist pause aufgehoben. |
- | |
20 | // Alle Notizen durchschauen |
18 | // Alle Notizen durchschauen |
21 | // Boss schwieriger machen: Er soll auch nach links und rechts gehen? |
19 | // Boss schwieriger machen: Er soll auch nach links und rechts gehen? |
22 | // Cooldown für Laser? |
20 | // Cooldown für Laser? |
23 | // Improve Sound effects |
21 | // Improve Sound effects |
24 | // [OK SVN 18] MCI hangs a lot! Use new unDelphiX DXMusic component for MIDI! |
- | |
25 | // Zwei Fenster in Taskleiste |
22 | // Zwei Fenster in Taskleiste |
26 | // "Doku" in Hilfemenü einbinden, ggf. auch den Leveleditor ins Menü machen |
23 | // "Doku" in Hilfemenü einbinden, ggf. auch den Leveleditor ins Menü machen |
27 | // Highscore Liste |
24 | // Highscore Liste |
28 | // Multilingual (all strings in resourcestrings) |
25 | // Multilingual (all strings in resourcestrings) |
29 | // [OK SVN 17] Levelconverter entfernen, stattdessen einlesen abwärtskompatibel machen |
- | |
30 | // Credits: unDelphiX (micrel.cz/Dx) |
- | |
31 | 26 | ||
32 | interface |
27 | interface |
33 | 28 | ||
34 | uses |
29 | uses |
35 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, |
30 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, |
Line 225... | Line 220... | ||
225 | Spiel: TMenuItem; |
220 | Spiel: TMenuItem; |
226 | GameStart: TMenuItem; |
221 | GameStart: TMenuItem; |
227 | GamePause: TMenuItem; |
222 | GamePause: TMenuItem; |
228 | Beenden: TMenuItem; |
223 | Beenden: TMenuItem; |
229 | Einstellungen: TMenuItem; |
224 | Einstellungen: TMenuItem; |
230 | OptionFullScreen: TMenuItem; |
- | |
231 | OptionMusic: TMenuItem; |
225 | OptionMusic: TMenuItem; |
232 | Leer2: TMenuItem; |
226 | Leer2: TMenuItem; |
233 | Leer4: TMenuItem; |
- | |
234 | Hilfe: TMenuItem; |
227 | Hilfe: TMenuItem; |
235 | OptionSound: TMenuItem; |
228 | OptionSound: TMenuItem; |
236 | Leer3: TMenuItem; |
229 | Leer3: TMenuItem; |
237 | Spielstand: TMenuItem; |
230 | Spielstand: TMenuItem; |
238 | Leer5: TMenuItem; |
231 | Leer5: TMenuItem; |
239 | Neustart: TMenuItem; |
232 | Neustart: TMenuItem; |
240 | OptionBreitbild: TMenuItem; |
- | |
241 | Spielgeschwindigkeit: TMenuItem; |
233 | Spielgeschwindigkeit: TMenuItem; |
242 | Leicht: TMenuItem; |
234 | Leicht: TMenuItem; |
243 | Mittel: TMenuItem; |
235 | Mittel: TMenuItem; |
244 | Schwer: TMenuItem; |
236 | Schwer: TMenuItem; |
245 | Informationen: TMenuItem; |
237 | Informationen: TMenuItem; |
Line 252... | Line 244... | ||
252 | procedure DXDrawInitialize(Sender: TObject); |
244 | procedure DXDrawInitialize(Sender: TObject); |
253 | procedure FormCreate(Sender: TObject); |
245 | procedure FormCreate(Sender: TObject); |
254 | procedure DXTimerTimer(Sender: TObject; LagCount: Integer); |
246 | procedure DXTimerTimer(Sender: TObject; LagCount: Integer); |
255 | procedure DXTimerActivate(Sender: TObject); |
247 | procedure DXTimerActivate(Sender: TObject); |
256 | procedure DXTimerDeactivate(Sender: TObject); |
248 | procedure DXTimerDeactivate(Sender: TObject); |
257 | procedure OptionFullScreenClick(Sender: TObject); |
- | |
258 | procedure DXDrawInitializing(Sender: TObject); |
249 | procedure DXDrawInitializing(Sender: TObject); |
259 | procedure GameStartClick(Sender: TObject); |
250 | procedure GameStartClick(Sender: TObject); |
260 | procedure GamePauseClick(Sender: TObject); |
251 | procedure GamePauseClick(Sender: TObject); |
261 | procedure BeendenClick(Sender: TObject); |
252 | procedure BeendenClick(Sender: TObject); |
262 | procedure OptionSoundClick(Sender: TObject); |
253 | procedure OptionSoundClick(Sender: TObject); |
263 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); |
- | |
264 | procedure OptionMusicClick(Sender: TObject); |
254 | procedure OptionMusicClick(Sender: TObject); |
265 | procedure SpielstandClick(Sender: TObject); |
255 | procedure SpielstandClick(Sender: TObject); |
266 | procedure NeustartClick(Sender: TObject); |
256 | procedure NeustartClick(Sender: TObject); |
267 | procedure OptionBreitbildClick(Sender: TObject); |
- | |
268 | procedure LeichtClick(Sender: TObject); |
257 | procedure LeichtClick(Sender: TObject); |
269 | procedure MittelClick(Sender: TObject); |
258 | procedure MittelClick(Sender: TObject); |
270 | procedure SchwerClick(Sender: TObject); |
259 | procedure SchwerClick(Sender: TObject); |
271 | procedure FormShow(Sender: TObject); |
260 | procedure FormShow(Sender: TObject); |
272 | procedure InformationenClick(Sender: TObject); |
261 | procedure InformationenClick(Sender: TObject); |
Line 524... | Line 513... | ||
524 | Imagelist.Items.LoadFromFile(FDirectory+'DirectX\Graphic.dxg'); |
513 | Imagelist.Items.LoadFromFile(FDirectory+'DirectX\Graphic.dxg'); |
525 | ImageList.Items.MakeColorTable; |
514 | ImageList.Items.MakeColorTable; |
526 | DXDraw.ColorTable := ImageList.Items.ColorTable; |
515 | DXDraw.ColorTable := ImageList.Items.ColorTable; |
527 | DXDraw.DefColorTable := ImageList.Items.ColorTable; |
516 | DXDraw.DefColorTable := ImageList.Items.ColorTable; |
528 | DXDraw.UpdatePalette; |
517 | DXDraw.UpdatePalette; |
529 | OptionBreitBild.enabled := OptionFullScreen.checked; |
- | |
530 | DXDraw.Finalize; |
518 | DXDraw.Finalize; |
531 | if OptionFullScreen.Checked then |
- | |
532 | begin |
- | |
533 | if not (doFullScreen in DXDraw.Options) then StoreWindow; |
- | |
534 | DXDraw.Options := DXDraw.Options + [doFullScreen]; |
- | |
535 | end |
- | |
536 | else |
- | |
537 | begin |
- | |
538 | if doFullScreen in DXDraw.Options then RestoreWindow; |
- | |
539 | DXDraw.Options := DXDraw.Options - [doFullScreen]; |
519 | DXDraw.Options := DXDraw.Options - [doFullScreen]; |
540 | end; |
- | |
541 | if not OptionBreitBild.checked then |
- | |
542 | begin |
- | |
543 | dxdraw.autosize := false; |
- | |
544 | dxdraw.Top := 0; |
- | |
545 | dxdraw.Left := 0; |
- | |
546 | dxdraw.width := mainform.ClientWidth; |
- | |
547 | dxdraw.height := mainform.ClientHeight; |
- | |
548 | dxdraw.surfacewidth := mainform.ClientWidth; |
- | |
549 | dxdraw.surfaceheight := mainform.ClientHeight; |
- | |
550 | end |
- | |
551 | else dxdraw.autosize := true; |
520 | DXDraw.autosize := true; |
552 | DXDraw.Initialize; |
521 | DXDraw.Initialize; |
553 | except |
522 | except |
554 | //Imagelist.Items.clear; |
523 | //Imagelist.Items.clear; |
555 | //application.terminate; |
524 | //application.terminate; |
556 | end; |
525 | end; |
Line 1269... | Line 1238... | ||
1269 | exit; |
1238 | exit; |
1270 | end; |
1239 | end; |
1271 | GameStartClick(GameStart); |
1240 | GameStartClick(GameStart); |
1272 | end; |
1241 | end; |
1273 | 1242 | ||
1274 | procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word; |
- | |
1275 | Shift: TShiftState); |
- | |
1276 | begin |
- | |
1277 | if (ssAlt in Shift) and (Key=VK_RETURN) then |
- | |
1278 | OptionFullScreenClick(OptionFullScreen); |
- | |
1279 | end; |
- | |
1280 | - | ||
1281 | procedure TMainForm.GameStartClick(Sender: TObject); |
1243 | procedure TMainForm.GameStartClick(Sender: TObject); |
1282 | begin |
1244 | begin |
1283 | StartScene(gsTitle); |
1245 | StartScene(gsTitle); |
1284 | end; |
1246 | end; |
1285 | 1247 | ||
Line 1405... | Line 1367... | ||
1405 | procedure TMainForm.BeendenClick(Sender: TObject); |
1367 | procedure TMainForm.BeendenClick(Sender: TObject); |
1406 | begin |
1368 | begin |
1407 | close; |
1369 | close; |
1408 | end; |
1370 | end; |
1409 | 1371 | ||
1410 | procedure TMainForm.OptionFullScreenClick(Sender: TObject); |
- | |
1411 | begin |
- | |
1412 | OptionFullScreen.Checked := not OptionFullScreen.Checked; |
- | |
1413 | DXInit; |
- | |
1414 | writeoptions; |
- | |
1415 | end; |
- | |
1416 | - | ||
1417 | procedure TMainForm.OptionSoundClick(Sender: TObject); |
1372 | procedure TMainForm.OptionSoundClick(Sender: TObject); |
1418 | begin |
1373 | begin |
1419 | OptionSound.Checked := not OptionSound.Checked; |
1374 | OptionSound.Checked := not OptionSound.Checked; |
1420 | SoundInit; |
1375 | SoundInit; |
1421 | WriteOptions; |
1376 | WriteOptions; |
Line 1552... | Line 1507... | ||
1552 | try |
1507 | try |
1553 | if OptionMusic.checked then INIDatei.WriteBool('Settings', 'Music', true) |
1508 | if OptionMusic.checked then INIDatei.WriteBool('Settings', 'Music', true) |
1554 | else INIDatei.WriteBool('Settings', 'Music', false); |
1509 | else INIDatei.WriteBool('Settings', 'Music', false); |
1555 | if OptionSound.checked then INIDatei.WriteBool('Settings', 'Sound', true) |
1510 | if OptionSound.checked then INIDatei.WriteBool('Settings', 'Sound', true) |
1556 | else INIDatei.WriteBool('Settings', 'Sound', false); |
1511 | else INIDatei.WriteBool('Settings', 'Sound', false); |
1557 | if OptionFullScreen.checked then INIDatei.WriteBool('Settings', 'FullScreen', true) |
- | |
1558 | else INIDatei.WriteBool('Settings', 'FullScreen', false); |
- | |
1559 | if OptionBreitbild.checked then INIDatei.WriteBool('Settings', 'ScreenAutoSize', true) |
- | |
1560 | else INIDatei.WriteBool('Settings', 'ScreenAutoSize', false); |
- | |
1561 | if FInterval = giLeicht then INIDatei.WriteInteger('Settings', 'Speed', 1); |
1512 | if FInterval = giLeicht then INIDatei.WriteInteger('Settings', 'Speed', 1); |
1562 | if FInterval = giMittel then INIDatei.WriteInteger('Settings', 'Speed', 2); |
1513 | if FInterval = giMittel then INIDatei.WriteInteger('Settings', 'Speed', 2); |
1563 | if FInterval = giSchwer then INIDatei.WriteInteger('Settings', 'Speed', 3); |
1514 | if FInterval = giSchwer then INIDatei.WriteInteger('Settings', 'Speed', 3); |
1564 | if FInterval = giMaster then INIDatei.WriteInteger('Settings', 'Speed', 4); |
1515 | if FInterval = giMaster then INIDatei.WriteInteger('Settings', 'Speed', 4); |
1565 | finally |
1516 | finally |
Line 1573... | Line 1524... | ||
1573 | begin |
1524 | begin |
1574 | INIDatei := TIniFile.Create(FDirectory+'Einstellungen\SpaceMission.ini'); |
1525 | INIDatei := TIniFile.Create(FDirectory+'Einstellungen\SpaceMission.ini'); |
1575 | try |
1526 | try |
1576 | optionmusic.checked := INIDatei.ReadBool('Settings', 'Music', true); |
1527 | optionmusic.checked := INIDatei.ReadBool('Settings', 'Music', true); |
1577 | optionsound.checked := INIDatei.ReadBool('Settings', 'Sound', true); |
1528 | optionsound.checked := INIDatei.ReadBool('Settings', 'Sound', true); |
1578 | optionfullscreen.checked := INIDatei.ReadBool('Settings', 'fullscreen', false); |
- | |
1579 | OptionBreitBild.checked := INIDatei.ReadBool('Settings', 'ScreenAutoSize', true); |
- | |
1580 | if INIDatei.ReadInteger('Settings', 'Speed', 2) = 1 then |
1529 | if INIDatei.ReadInteger('Settings', 'Speed', 2) = 1 then |
1581 | begin |
1530 | begin |
1582 | FInterval := giLeicht; |
1531 | FInterval := giLeicht; |
1583 | Leicht.checked := true; |
1532 | Leicht.checked := true; |
1584 | end; |
1533 | end; |
Line 2393... | Line 2342... | ||
2393 | EnemyCounter := 0; |
2342 | EnemyCounter := 0; |
2394 | StartScene(gsMain); |
2343 | StartScene(gsMain); |
2395 | MusicSwitchTrack(mtGame); |
2344 | MusicSwitchTrack(mtGame); |
2396 | end; |
2345 | end; |
2397 | 2346 | ||
2398 | procedure TMainForm.OptionBreitbildClick(Sender: TObject); |
- | |
2399 | begin |
- | |
2400 | OptionBreitbild.Checked := not OptionBreitbild.Checked; |
- | |
2401 | DXInit; |
- | |
2402 | writeoptions; |
- | |
2403 | end; |
- | |
2404 | - | ||
2405 | procedure TMainForm.LeichtClick(Sender: TObject); |
2347 | procedure TMainForm.LeichtClick(Sender: TObject); |
2406 | begin |
2348 | begin |
2407 | leicht.checked := true; |
2349 | leicht.checked := true; |
2408 | FInterval := giLeicht; |
2350 | FInterval := giLeicht; |
2409 | writeoptions; |
2351 | writeoptions; |