petermorphose 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +3 -0
- data/README.md +31 -0
- data/bin/petermorphose +3 -0
- data/levels/flgr_Der_Alkohol_und_seine_Folgen.pml +447 -0
- data/levels/jr_Am_Tempel_des_Harlow-Karlow.pml +413 -0
- data/levels/jr_Auf_der_Flucht.pml +456 -0
- data/levels/jr_Die_zwei_Baeume.pml +447 -0
- data/levels/jr_Feuertauchen.pml +343 -0
- data/levels/jr_Gemuetlicher_Aufstieg.pml +329 -0
- data/levels/jr_Gruenhuegelshausen.pml +423 -0
- data/levels/jr_Gruselgrotte.pml +421 -0
- data/levels/jr_Hoch_hinaus.pml +265 -0
- data/levels/jr_Vom_Ozean_in_die_Traufe.pml +342 -0
- data/levels/jr_Weg_durchs_Feuer.pml +544 -0
- data/levels/sl_Heimweg_zu_Henk.pml +307 -0
- data/media/arg1.wav +0 -0
- data/media/arg2.wav +0 -0
- data/media/arrow_hit.wav +0 -0
- data/media/blocker_break.wav +0 -0
- data/media/bow.wav +0 -0
- data/media/break1.wav +0 -0
- data/media/break2.wav +0 -0
- data/media/buttons.png +0 -0
- data/media/collect_ammo.wav +0 -0
- data/media/collect_freeze.wav +0 -0
- data/media/collect_health.wav +0 -0
- data/media/collect_key.wav +0 -0
- data/media/collect_points.wav +0 -0
- data/media/collect_star.wav +0 -0
- data/media/danger.png +0 -0
- data/media/death.wav +0 -0
- data/media/dialogs.bmp +0 -0
- data/media/door1.wav +0 -0
- data/media/door2.wav +0 -0
- data/media/eat.wav +0 -0
- data/media/effects.bmp +0 -0
- data/media/enemies.bmp +0 -0
- data/media/explosion.wav +0 -0
- data/media/game.ogg +0 -0
- data/media/gui.bmp +0 -0
- data/media/help1.wav +0 -0
- data/media/help2.wav +0 -0
- data/media/jump.wav +0 -0
- data/media/lava.wav +0 -0
- data/media/lever.wav +0 -0
- data/media/menu.ogg +0 -0
- data/media/morph.wav +0 -0
- data/media/player.bmp +0 -0
- data/media/player_arg.wav +0 -0
- data/media/shshsh.wav +0 -0
- data/media/skies.png +0 -0
- data/media/slime1.wav +0 -0
- data/media/slime2.wav +0 -0
- data/media/slime3.wav +0 -0
- data/media/stairs.wav +0 -0
- data/media/stairs_steps.wav +0 -0
- data/media/stuff.bmp +0 -0
- data/media/sword_whoosh.wav +0 -0
- data/media/tiles.bmp +0 -0
- data/media/title.png +0 -0
- data/media/title_dark.png +0 -0
- data/media/turbo.wav +0 -0
- data/media/water1.wav +0 -0
- data/media/water2.wav +0 -0
- data/media/whoosh.wav +0 -0
- data/media/whoosh_back.wav +0 -0
- data/media/won.bmp +0 -0
- data/media/yippie.wav +0 -0
- data/src/const.rb +301 -0
- data/src/en.yml +62 -0
- data/src/gosu-preview.rb +116 -0
- data/src/helpers/audio.rb +9 -0
- data/src/helpers/graphics.rb +24 -0
- data/src/helpers/input.rb +28 -0
- data/src/ini_file.rb +25 -0
- data/src/level_info.rb +63 -0
- data/src/localization.rb +19 -0
- data/src/main.rb +86 -0
- data/src/map.rb +136 -0
- data/src/objects/collectible_object.rb +174 -0
- data/src/objects/effect_object.rb +120 -0
- data/src/objects/game_object.rb +363 -0
- data/src/objects/living_object.rb +657 -0
- data/src/objects/object_def.rb +45 -0
- data/src/script.rb +207 -0
- data/src/states/credits.rb +24 -0
- data/src/states/game.rb +463 -0
- data/src/states/help.rb +268 -0
- data/src/states/level_selection.rb +43 -0
- data/src/states/menu.rb +45 -0
- data/src/states/options.rb +81 -0
- data/src/states/state.rb +11 -0
- data/src/states/title.rb +17 -0
- data/src/states/victory.rb +20 -0
- metadata +188 -0
data/src/states/help.rb
ADDED
@@ -0,0 +1,268 @@
|
|
1
|
+
# TODO translate to Ruby
|
2
|
+
=begin
|
3
|
+
State_ReadMe1: begin
|
4
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
5
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
6
|
+
|
7
|
+
DrawBMPText('Willkommen bei Peter Morphose!', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
8
|
+
|
9
|
+
DrawBMPText('Hier findest du die Erkl‰rung des Spielprinzips, der Steuerung und', 20, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
10
|
+
DrawBMPText('der Objekte und Kartenteile, die du im Spiel triffst. Die meisten', 20, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
11
|
+
DrawBMPText('Angaben beziehen sich auf das "Ritter"-Thema. Daher wird empfohlen,', 20, 100, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
12
|
+
DrawBMPText('zuerst Level mit diesem Thema zu spielen.', 20, 120, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
13
|
+
|
14
|
+
DrawBMPText('Die Steuerung: (Gamepad oder Tastatur)', 20, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
15
|
+
|
16
|
+
DrawBMPText('Pfeiltasten links/rechts: Laufen', 20, 220, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
17
|
+
DrawBMPText('Pfeiltaste rauf/Button 1: Springen', 20, 240, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
18
|
+
DrawBMPText('Leertaste/Button 2: Spezialaktion des aktuellen Peters', 20, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
19
|
+
DrawBMPText('Pfeiltaste runter/Button 3: Treppen und Bodenplatten benutzen', 20, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
20
|
+
DrawBMPText('Enter/Entfernen/Button 4: Wieder zum normalen Peter werden', 20, 300, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
21
|
+
DrawBMPText('P: Pause an/aus', 20, 320, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
22
|
+
DrawBMPText('Escape: Wieder zum Hauptmen¸', 20, 340, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
23
|
+
DrawBMPText('(Gamepad funktioniert nicht im Men¸.)', 20, 360, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
24
|
+
|
25
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 1 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
26
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
27
|
+
DXDraw.Flip;
|
28
|
+
end;
|
29
|
+
State_ReadMe2: begin
|
30
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
31
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
32
|
+
|
33
|
+
DrawBMPText('Weitere Tipps zur Steuerung:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
34
|
+
|
35
|
+
DrawBMPText('ï Nur der normale Peter kann Hebel umlegen (Spezialaktion). Wenn du', 20, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
36
|
+
DrawBMPText(' ein Spezialpeter bist und einen Hebel umlegen willst, musst du', 20, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
37
|
+
DrawBMPText(' dich erst zur¸ckverwandeln (Enter/B4).', 20, 100, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
38
|
+
DrawBMPText('ï Im Sprung kannst du die Flugrichtung ein wenig mit Links/Rechts', 20, 120, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
39
|
+
DrawBMPText(' beeinflussen.', 20, 140, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
40
|
+
DrawBMPText('ï Wenn du getroffen wirst, bist du f¸r etwa eine Sekunde transparent', 20, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
41
|
+
DrawBMPText(' und unverwundbar. Nutze die Zeit, um aus dem Get¸mmel zu entkommen!.', 20, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
42
|
+
|
43
|
+
DrawBMPText('Ziel des Spiels ist es, durch die jeweils letzte nach oben f¸hrende', 20, 220, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
44
|
+
DrawBMPText('Treppe des Levels zu gehen. Wenn du genug Sterne hast, hast du das', 20, 240, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
45
|
+
DrawBMPText('Level geschafft. In vielen Runden muss man unterwegs auch eine oder', 20, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
46
|
+
DrawBMPText('mehrere Geiseln retten (ber¸hren), um gewinnen zu kˆnnen. Das Ziel', 20, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
47
|
+
DrawBMPText('einer Runde siehst du vor dem Spielen im Levelauswahlbildschirm.', 20, 300, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
48
|
+
DrawBMPText('Was dich daran hindert, durch das Level zu kommen, ist vor allem', 20, 320, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
49
|
+
DrawBMPText('die Lava, die unerbittlich steigt und alles auf ihrem Wege toastet.', 20, 340, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
50
|
+
DrawBMPText('Aber auch einige Gegner und R‰tsel stehen dir im Weg...', 20, 360, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
51
|
+
|
52
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 2 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
53
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
54
|
+
DXDraw.Flip;
|
55
|
+
end;
|
56
|
+
State_ReadMe3: begin
|
57
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
58
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
59
|
+
|
60
|
+
DrawBMPText('Die 5 verschiedenen Peter:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
61
|
+
|
62
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Player], Act_Num, Bounds(20, 50, 48, 48), Boolean(Data.OptATI));
|
63
|
+
DrawBMPText('Das ist der normale Peter. Er ist wendig und kann Hebel', 80, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
64
|
+
DrawBMPText('umlegen (Leertaste/B2).', 80, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
65
|
+
|
66
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Player], Act_Num * 2 + Act_Action3, Bounds(20, 100, 48, 48), Boolean(Data.OptATI));
|
67
|
+
DrawBMPText('Ritterpeter ist stabiler und tr‰ger als Peter. Er kann daf¸r', 80, 110, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
68
|
+
DrawBMPText('mit dem Schwert zuschlagen (Leertaste/B2).', 80, 130, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
69
|
+
|
70
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Player], Act_Num * 5, Bounds(20, 150, 48, 48), Boolean(Data.OptATI));
|
71
|
+
DrawBMPText('Das ist Flitzebogenpeter. Er kann auf der Leertaste schieflen,', 80, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
72
|
+
DrawBMPText('verbraucht allerdings Munition.', 80, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
73
|
+
|
74
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Player], Act_Num * 9, Bounds(20, 200, 48, 48), Boolean(Data.OptATI));
|
75
|
+
DrawBMPText('Der Bombenlegerpeter kann Bomben werfen (Leertaste) und damit', 80, 210, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
76
|
+
DrawBMPText('Gegner bek‰mpfen und Sprengstoffkisten explodieren lassen.', 80, 230, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
77
|
+
|
78
|
+
DXImageListPack.Items[Image_Effects].DrawAdd(DXDraw.Surface, Bounds(20, 250, 48, 48), 8, 192);
|
79
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Player], Act_Num * 7, Bounds(20, 250, 48, 48), Boolean(Data.OptATI));
|
80
|
+
DrawBMPText('Feuerpeter hat keine Spezialaktion. Er ist beinahe', 80, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
81
|
+
DrawBMPText('unverwundbar und kann Gegner durch Ber¸hrung tˆten.', 80, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
82
|
+
|
83
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_MunitionBomber2 - 16, Bounds(10, 300, 48, 48), Boolean(Data.OptATI));
|
84
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_MunitionGun2 - 16, Bounds(20, 310, 48, 48), Boolean(Data.OptATI));
|
85
|
+
DrawBMPText('Pfeile sind Munition f¸r den Flitzebogenpeter, Bomben f¸r', 80, 310, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
86
|
+
DrawBMPText('Bombenlegerpeter.', 80, 330, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
87
|
+
|
88
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 3 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
89
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
90
|
+
DXDraw.Flip;
|
91
|
+
end;
|
92
|
+
State_ReadMe4: begin
|
93
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
94
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
95
|
+
|
96
|
+
DrawBMPText('Die 5 verschiedenen Gegner:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
97
|
+
|
98
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Enemies], 0, Bounds(580, 50, 48, 48), Boolean(Data.OptATI));
|
99
|
+
DrawBMPText('Kinderschrecks sind schwache, schnelle Gegner und meistens', 20, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
100
|
+
DrawBMPText('keine grofle Gefahr.', 20, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
101
|
+
|
102
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Enemies], Act_Num * 3 + Act_Action4, Bounds(580, 100, 48, 48), Boolean(Data.OptATI));
|
103
|
+
DrawBMPText('Tempelw‰chter sind zwar langsam, halten aber mehr Schl‰ge aus', 20, 110, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
104
|
+
DrawBMPText('als Kinderschrecks.', 20, 130, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
105
|
+
|
106
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Enemies], Act_Num * 8, Bounds(580, 150, 48, 48), Boolean(Data.OptATI));
|
107
|
+
DrawBMPText('Diese schnellen Gegner explodieren bei Kontakt mit Peter und', 20, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
108
|
+
DrawBMPText('ziehen ihm so viel Energie ab. Gef‰hrlich!', 20, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
109
|
+
|
110
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Enemies], Act_Num * 4, Bounds(580, 200, 48, 48), Boolean(Data.OptATI));
|
111
|
+
DrawBMPText('Bogenbayern lauern meistens an schwer erreichbaren Orten und', 20, 210, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
112
|
+
DrawBMPText('schieflen auf Peter, sobald sie ihn sehen.', 20, 230, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
113
|
+
|
114
|
+
DXImageListPack.Items[Image_Effects].DrawAdd(DXDraw.Surface, Bounds(580, 255, 48, 48), 7, 192);
|
115
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Enemies], Act_Num * 7, Bounds(580, 250, 48, 48), Boolean(Data.OptATI));
|
116
|
+
DrawBMPText('Diese brennende Unholden lassen sich am besten aus der Distanz', 20, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
117
|
+
DrawBMPText('besiegen. Kontakt meiden!', 20, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
118
|
+
|
119
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 4 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
120
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
121
|
+
DXDraw.Flip;
|
122
|
+
end;
|
123
|
+
State_ReadMe5: begin
|
124
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
125
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
126
|
+
|
127
|
+
DrawBMPText('Die wichtigsten Objekte:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
128
|
+
|
129
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Carolin - 16, Bounds(20, 50, 48, 48), Boolean(Data.OptATI));
|
130
|
+
DrawBMPText('Eine arme Gefangene. Muss durch Ber¸hrung gerettet werden.', 80, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
131
|
+
DrawBMPText('Stirbt sie, ist das Spiel sofort verloren!', 80, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
132
|
+
|
133
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Key - 16, Bounds(20, 100, 48, 48), Boolean(Data.OptATI));
|
134
|
+
DrawBMPText('Manche T¸ren kann man nur ˆffnen, wenn man noch einen', 80, 110, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
135
|
+
DrawBMPText('Schl¸ssel ¸brig hat.', 80, 130, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
136
|
+
|
137
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Star - 16, Bounds(15, 140, 48, 48), Boolean(Data.OptATI));
|
138
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Star2 - 16, Bounds(20, 150, 48, 48), Boolean(Data.OptATI));
|
139
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Star3 - 16, Bounds(25, 160, 48, 48), Boolean(Data.OptATI));
|
140
|
+
DrawBMPText('Diese Sterne m¸ssen meistens in einer bestimmten Anzahl', 80, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
141
|
+
DrawBMPText('eingesammelt werden, damit man die Runde schaffen kann.', 80, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
142
|
+
|
143
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Health - 16, Bounds(25, 195, 48, 48), Boolean(Data.OptATI));
|
144
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_EdibleFish2 - 16, Bounds(20, 210, 48, 48), Boolean(Data.OptATI));
|
145
|
+
DrawBMPText('Kleine Beeren f¸llen eine Energie auf, grofle vier. Rote', 80, 210, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
146
|
+
DrawBMPText('Fische f¸llen immer nur eine Energie auf.', 80, 230, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
147
|
+
|
148
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_MorphFighter - 16, Bounds(20, 250, 48, 48), Boolean(Data.OptATI));
|
149
|
+
DrawBMPText('Morphobjekte verwandeln Peter in den abgebildeten', 80, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
150
|
+
DrawBMPText('Spezialpeter (hier: Ritterpeter).', 80, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
151
|
+
|
152
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_MoreTime - 16, Bounds(25, 295, 48, 48), Boolean(Data.OptATI));
|
153
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_MoreTime2 - 16, Bounds(15, 310, 48, 48), Boolean(Data.OptATI));
|
154
|
+
DrawBMPText('Grofle und kleine Uhren geben ein paar Sekunden mehr', 80, 310, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
155
|
+
DrawBMPText('Spezialpeterzeit.', 80, 330, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
156
|
+
|
157
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 5 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
158
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
159
|
+
DXDraw.Flip;
|
160
|
+
end;
|
161
|
+
State_ReadMe6: begin
|
162
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
163
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
164
|
+
|
165
|
+
DrawBMPText('Weitere wichtige Objekte:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
166
|
+
|
167
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Lever - 16, Bounds(25, 40, 48, 48), Boolean(Data.OptATI));
|
168
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_LeverRight - 16, Bounds(25, 90, 48, 48), Boolean(Data.OptATI));
|
169
|
+
DrawBMPText('Hebel und Schalter kann nur der normale Peter umlegen', 80, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
170
|
+
DrawBMPText('(Leertaste). Sie ver‰ndern normalerweise etwas an der', 80, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
171
|
+
DrawBMPText('Spielwelt (Spezialteil erscheint, Mauer verschwindet,', 80, 100, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
172
|
+
DrawBMPText('Hilfsobjekte werden erschaffen...', 80, 120, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
173
|
+
|
174
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_SlowDown - 16, Bounds(25, 145, 48, 48), Boolean(Data.OptATI));
|
175
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Crystal - 16, Bounds(15, 165, 48, 48), Boolean(Data.OptATI));
|
176
|
+
DrawBMPText('Sanduhren machen die Lava dauerhaft langsamer, Kristalle', 80, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
177
|
+
DrawBMPText('frieren sie wenige Sekunden lang ein.', 80, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
178
|
+
|
179
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Fly - 16, Bounds(20, 200, 48, 48), Boolean(Data.OptATI));
|
180
|
+
DrawBMPText('Mit diesen Fl¸geln kann Peter fliegen, bis sie vollst‰ndig', 80, 210, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
181
|
+
DrawBMPText('verblasst sind.', 80, 230, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
182
|
+
|
183
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Jump - 16, Bounds(27, 242, 48, 48), Boolean(Data.OptATI));
|
184
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Speed - 16, Bounds(13, 258, 48, 48), Boolean(Data.OptATI));
|
185
|
+
DrawBMPText('Siebenmeilenstiefel lassen Peter eine Weile schneller', 80, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
186
|
+
DrawBMPText('laufen, Adlerstiefel hˆher springen.', 80, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
187
|
+
|
188
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Points6 - 16, Bounds(28, 318, 48, 48), Boolean(Data.OptATI));
|
189
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Points - 16, Bounds(5, 290, 48, 48), Boolean(Data.OptATI));
|
190
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Points5 - 16, Bounds(5, 315, 48, 48), Boolean(Data.OptATI));
|
191
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Points2 - 16, Bounds(25, 290, 48, 48), Boolean(Data.OptATI));
|
192
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Points4 - 16, Bounds(15, 300, 48, 48), Boolean(Data.OptATI));
|
193
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Stuff], ID_Points3 - 16, Bounds(20, 310, 48, 48), Boolean(Data.OptATI));
|
194
|
+
DrawBMPText('Diese Objekte machen nichts Anderes als Punkte zu geben.', 80, 310, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
195
|
+
DrawBMPText('Nur einsammeln, wenn du zu viel Zeit hast!', 80, 330, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
196
|
+
|
197
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 6 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
198
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
199
|
+
DXDraw.Flip;
|
200
|
+
end;
|
201
|
+
State_ReadMe7: begin
|
202
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
203
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
204
|
+
|
205
|
+
DrawBMPText('Die wichtigsten Spezialkartenteile:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
206
|
+
|
207
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_RocketUpLeft2, Bounds(20, 55, 48, 48), Boolean(Data.OptATI));
|
208
|
+
DrawBMPText('Katapultiert den Spieler bei Aktivierung (Pfeiltaste unten)', 80, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
209
|
+
DrawBMPText('in Richtung des Pfeiles (hier: oben links).', 80, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
210
|
+
|
211
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_MorphBomb, Bounds(20, 105, 48, 48), Boolean(Data.OptATI));
|
212
|
+
DrawBMPText('Verwandelt den Spieler bei Aktivierung in den abgebildeten', 80, 110, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
213
|
+
DrawBMPText('Spezialpeter (hier: Bombenlegerpeter).', 80, 130, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
214
|
+
|
215
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_ClosedDoor3, Bounds(20, 155, 48, 48), Boolean(Data.OptATI));
|
216
|
+
DrawBMPText('Diese T¸ren lassen sich nur ˆffnen, wenn man einen Schl¸ssel', 80, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
217
|
+
DrawBMPText('dabei hat.', 80, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
218
|
+
|
219
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_Blocker, Bounds(20, 205, 48, 48), Boolean(Data.OptATI));
|
220
|
+
DrawBMPText('Lassen sich mit Ritterpeter zerschlagen und mit Bombenleger-', 80, 210, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
221
|
+
DrawBMPText('peter zerbomben.', 80, 230, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
222
|
+
|
223
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_BigBlocker, Bounds(20, 255, 48, 48), Boolean(Data.OptATI));
|
224
|
+
DrawBMPText('Kann mit einer Bombe angez¸ndet werden. Explodiert dann und', 80, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
225
|
+
DrawBMPText('kann dabei auch weitere Kisten anz¸nden... Kettenreaktion!', 80, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
226
|
+
|
227
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_Bridge2, Bounds(20, 305, 48, 48), Boolean(Data.OptATI));
|
228
|
+
DrawBMPText('Diese alten, verwitterten Steinmauern fangen an, zu zer-', 80, 310, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
229
|
+
DrawBMPText('brˆseln, sobald ein Lebewesen draufl‰uft.', 80, 330, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
230
|
+
|
231
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 7 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
232
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
233
|
+
DXDraw.Flip;
|
234
|
+
end;
|
235
|
+
State_ReadMe8: begin
|
236
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
237
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
238
|
+
|
239
|
+
DrawBMPText('Mehr Spezialkartenteile:', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
240
|
+
|
241
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_BigBlocker3, Bounds(20, 55, 48, 48), Boolean(Data.OptATI));
|
242
|
+
DrawBMPText('L‰sst sich auch zersprengen, explodiert aber nicht', 80, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
243
|
+
DrawBMPText('selbst, im Gegensatz zu Sprengstoffkisten.', 80, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
244
|
+
|
245
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_Slime2, Bounds(20, 105, 48, 48), Boolean(Data.OptATI));
|
246
|
+
DrawBMPText('Auf diesem klebrigen Schleim kann Peter nur sehr', 80, 110, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
247
|
+
DrawBMPText('langsam laufen und nicht hoch springen.', 80, 130, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
248
|
+
|
249
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_StairsUp, Bounds(20, 155, 48, 48), Boolean(Data.OptATI));
|
250
|
+
DrawBMPText('Geht man in eine solche T¸r, kommt man aus der n‰chsten', 80, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
251
|
+
DrawBMPText('T¸r in Richtung des Pfeiles raus. Kann verschlossen sein.', 80, 180, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
252
|
+
|
253
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_AirRocketUp2, Bounds(20, 205, 48, 48), Boolean(Data.OptATI));
|
254
|
+
DrawBMPText('L‰uft man an diesen Kartenteilen vorbei, schleudern sie', 80, 210, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
255
|
+
DrawBMPText('den Spieler in die angezeigte Richtung.', 80, 230, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
256
|
+
|
257
|
+
MyStretchDraw(DXDraw.Surface, DXImageListPack.Items[Image_Tiles], Tile_Spikes, Bounds(20, 255, 48, 48), Boolean(Data.OptATI));
|
258
|
+
DrawBMPText('Diese Stacheln sind unangenehm f¸r Gegner und Spieler.', 80, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
259
|
+
DrawBMPText('Manchmal auch an der Decke zu finden.', 80, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
260
|
+
|
261
|
+
DrawBMPText('So, und jetzt noch viel Gl¸ck und Spafl beim Spielen von', 80, 335, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
262
|
+
DrawBMPText('Peter Morphose!', 230, 360, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
263
|
+
|
264
|
+
DrawBMPText('Mit den Pfeiltasten kannst du in der Hilfe bl‰ttern. (Seite 8 von 8)', 14, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
265
|
+
DrawBMPText('Auf Escape kommst du zum Hauptmen¸ zur¸ck.', 131, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
266
|
+
DXDraw.Flip;
|
267
|
+
end;
|
268
|
+
=end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# Encoding: UTF-8
|
2
|
+
|
3
|
+
class LevelSelection < State
|
4
|
+
LEVELS_ON_SCREEN = 4
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@@title ||= Gosu::Image.new 'media/title_dark.png'
|
8
|
+
@@ls_top ||= 0
|
9
|
+
@@ls_sel ||= 0
|
10
|
+
@@levels ||= Dir.glob('levels/*.pml').map(&LevelInfo.method(:new)).sort
|
11
|
+
|
12
|
+
song(:menu).play
|
13
|
+
end
|
14
|
+
|
15
|
+
def draw
|
16
|
+
@@title.draw 0, 0, 0
|
17
|
+
draw_rect 631, 0, 1, 400, 0xff003010
|
18
|
+
draw_rect 632, 0, 16, 400, 0xff004020
|
19
|
+
LEVELS_ON_SCREEN.times do |y|
|
20
|
+
break if y == @@levels.size
|
21
|
+
@@levels[y + @@ls_top].draw y * 100, @@ls_top + y == @@ls_sel
|
22
|
+
end
|
23
|
+
if @@levels.size > LEVELS_ON_SCREEN then
|
24
|
+
draw_string '|', 632, 384.0 * @@ls_top / (@@levels.size - LEVELS_ON_SCREEN)
|
25
|
+
end
|
26
|
+
draw_centered_string t('Wähle mit den Pfeiltasten ein Level aus und starte es mit Enter.'), WIDTH / 2, 434
|
27
|
+
#draw_centered_string t('Willst du zurück zum Hauptmenü, drücke Escape.'), WIDTH / 2, 446
|
28
|
+
end
|
29
|
+
|
30
|
+
def button_down(id)
|
31
|
+
if menu_cancel? id then
|
32
|
+
State.current = nil#Menu.new
|
33
|
+
elsif menu_prev? id then
|
34
|
+
@@ls_sel -= 1 if @@ls_sel > 0
|
35
|
+
@@ls_top -= 1 if @@ls_sel < @@ls_top
|
36
|
+
elsif menu_next? id then
|
37
|
+
@@ls_sel += 1 if @@ls_sel < @@levels.size - 1
|
38
|
+
@@ls_top += 1 if @@ls_sel >= @@ls_top + LEVELS_ON_SCREEN
|
39
|
+
elsif menu_confirm? id then
|
40
|
+
State.current = Game.new(@@levels[@@ls_sel])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/src/states/menu.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Encoding: UTF-8
|
2
|
+
|
3
|
+
class Menu < State
|
4
|
+
ITEMS = 5
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@title = Gosu::Image.new 'media/title_dark.png'
|
8
|
+
@buttons = Gosu::Image.load_tiles 'media/buttons.png', -2, -ITEMS
|
9
|
+
@selection = 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def draw
|
13
|
+
@title.draw 0, 0, 0
|
14
|
+
|
15
|
+
(0...ITEMS).each do |index|
|
16
|
+
image_index = index * 2
|
17
|
+
image_index += 1 if index == @selection
|
18
|
+
@buttons[image_index].draw 120, 20 + 70 * index, 0
|
19
|
+
end
|
20
|
+
|
21
|
+
draw_centered_string 'Wähle mit den Pfeiltasten aus, was du tun willst und drücke Enter.', WIDTH / 2, 435
|
22
|
+
end
|
23
|
+
|
24
|
+
def button_down id
|
25
|
+
if menu_prev? id then
|
26
|
+
@selection -= 1 if @selection > 0
|
27
|
+
elsif menu_next? id then
|
28
|
+
@selection += 1 if @selection < ITEMS - 1
|
29
|
+
elsif menu_confirm? id
|
30
|
+
sound(:whoosh).play
|
31
|
+
case @selection
|
32
|
+
when 0 then
|
33
|
+
State.current = LevelSelection.new
|
34
|
+
when 1 then
|
35
|
+
State.current = Help.new
|
36
|
+
when 2 then
|
37
|
+
State.current = Options.new
|
38
|
+
when 3 then
|
39
|
+
State.current = Credits.new
|
40
|
+
when 4 then
|
41
|
+
State.current = nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# TODO convert to Ruby or not
|
2
|
+
=begin
|
3
|
+
State_Options: begin
|
4
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
5
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
6
|
+
|
7
|
+
DrawBMPText('Optionsmen¸ (Seite 1)', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
8
|
+
|
9
|
+
DrawBMPText('Musik', 20, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
10
|
+
if PseudoMusic = 0 then DrawBMPText('<aus>', 575, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
11
|
+
if PseudoMusic = 1 then DrawBMPText('<ein>', 575, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
12
|
+
DrawBMPText('Schaltet die Musik ein oder aus. (Benˆtigt Peter-Neustart.)', 20, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
13
|
+
if SelectedOptionItem = 0 then DXDraw.Surface.FillRectAdd(Bounds(0, 60, 640, 16), $004896);
|
14
|
+
|
15
|
+
DrawBMPText('Blut und Schreie', 20, 120, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
16
|
+
if Data.OptBlood = 0 then DrawBMPText('<aus>', 575, 120, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0)
|
17
|
+
else DrawBMPText('<ein>', 575, 120, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
18
|
+
DrawBMPText('Schaltet Blut an und aus. Viele finden, dass es nicht zum Spiel', 20, 140, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
19
|
+
DrawBMPText('passt. Aber manche kˆnnen ja gar nicht ohne leben...', 20, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
20
|
+
if SelectedOptionItem = 1 then DXDraw.Surface.FillRectAdd(Bounds(0, 120, 640, 16), $004896);
|
21
|
+
|
22
|
+
DrawBMPText('Positionsanzeige im Spiel', 20, 200, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
23
|
+
if Data.OptShowStatus = 0 then DrawBMPText('<aus>', 575, 200, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0)
|
24
|
+
else DrawBMPText('<ein>', 575, 200, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
25
|
+
DrawBMPText('Blendet im Spiel links eine Leiste zur besseren Orientierung ein.', 20, 220, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
26
|
+
if SelectedOptionItem = 2 then DXDraw.Surface.FillRectAdd(Bounds(0, 200, 640, 16), $004896);
|
27
|
+
|
28
|
+
DrawBMPText('Behebung des Rosa-R‰nder-Problems', 20, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
29
|
+
if Data.OptATI = 0 then DrawBMPText('<aus>', 575, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0)
|
30
|
+
else DrawBMPText('<ein>', 575, 260, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
31
|
+
DrawBMPText('Einschalten, wenn Grafiken in Hilfe oder Editor rosa R‰nder haben.', 20, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
32
|
+
if SelectedOptionItem = 3 then DXDraw.Surface.FillRectAdd(Bounds(0, 260, 640, 16), $004896);
|
33
|
+
|
34
|
+
DrawBMPText('Seite 1 Seite 2', 230, 340, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
35
|
+
if SelectedOptionItem = 4 then DXDraw.Surface.FillRectAdd(Bounds(220, 340, 83, 16), $004896);
|
36
|
+
|
37
|
+
DrawBMPText('W‰hle mit den Pfeiltasten "oben" und "unten" aus, was du ‰ndern willst', 3, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
38
|
+
DrawBMPText('und ‰ndere den Wert mit "links" und "rechts". Zur¸ck mit "Escape".', 12, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
39
|
+
DXDraw.Flip;
|
40
|
+
end;
|
41
|
+
|
42
|
+
State_Options2: begin
|
43
|
+
if not (DXDraw.CanDraw and Application.Active) then Exit;
|
44
|
+
DXImageList.Items[Image_TitleDark].Draw(DXDraw.Surface, 0, 0, 0);
|
45
|
+
|
46
|
+
DrawBMPText('Optionsmen¸ (Seite 2)', 20, 20, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
47
|
+
|
48
|
+
DrawBMPText('Grafikqualit‰t', 20, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
49
|
+
if Data.OptQuality = 0 then DrawBMPText('<schlecht>', 530, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
50
|
+
if Data.OptQuality = 1 then DrawBMPText('<standard>', 530, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
51
|
+
if Data.OptQuality = 2 then DrawBMPText('<sehr gut>', 530, 60, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
52
|
+
DrawBMPText('ƒndert die Grafikqualit‰t. Bei ''schlecht'' fehlen ein paar Effekte,', 20, 80, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
53
|
+
DrawBMPText('bei ''sehr gut'' kommen ein paar neue (¸bertriebene) hinzu.', 20, 100, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
54
|
+
if SelectedOptionItem = 0 then DXDraw.Surface.FillRectAdd(Bounds(0, 60, 640, 16), $004896);
|
55
|
+
|
56
|
+
DrawBMPText('Effekte', 20, 140, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
57
|
+
DrawBMPText('<' + IntToStr(Data.OptEffects) + '%>', 620 - (Length(IntToStr(Data.OptEffects)) + 3) * 9, 140, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
58
|
+
DrawBMPText('Gibt an, wieviel Prozent der Standardeffekte erzeugt werden.', 20, 160, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
59
|
+
if SelectedOptionItem = 1 then DXDraw.Surface.FillRectAdd(Bounds(0, 140, 640, 16), $004896);
|
60
|
+
|
61
|
+
DrawBMPText('Sprungsystem', 20, 200, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
62
|
+
if Data.OptOldJumping = 1 then DrawBMPText('<alt>', 575, 200, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0)
|
63
|
+
else DrawBMPText('<neu>', 575, 200, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
64
|
+
DrawBMPText('Wer Probleme mit der alten Sprungsteuerung hat, kann versuchen, ob', 20, 220, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
65
|
+
DrawBMPText('er mit der neuen besser spielen kann.', 20, 240, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
66
|
+
if SelectedOptionItem = 2 then DXDraw.Surface.FillRectAdd(Bounds(0, 200, 640, 16), $004896);
|
67
|
+
|
68
|
+
DrawBMPText('Texte', 20, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
69
|
+
if Data.OptShowTexts = 1 then DrawBMPText('<ein>', 575, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0)
|
70
|
+
else DrawBMPText('<aus>', 575, 280, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
71
|
+
DrawBMPText('Schaltet Texte bei eingesammelten Objekten ein oder aus.', 20, 300, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
72
|
+
if SelectedOptionItem = 3 then DXDraw.Surface.FillRectAdd(Bounds(0, 280, 640, 16), $004896);
|
73
|
+
|
74
|
+
DrawBMPText('Seite 1 Seite 2', 230, 340, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
75
|
+
if SelectedOptionItem = 4 then DXDraw.Surface.FillRectAdd(Bounds(337, 340, 83, 16), $004896);
|
76
|
+
|
77
|
+
DrawBMPText('W‰hle mit den Pfeiltasten "oben" und "unten" aus, was du ‰ndern willst', 3, 424, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
78
|
+
DrawBMPText('und ‰ndere den Wert mit "links" und "rechts". Zur¸ck mit "Escape".', 12, 446, 0, DXImageList.Items[Image_Font], DXDraw.Surface, 0);
|
79
|
+
DXDraw.Flip;
|
80
|
+
end;
|
81
|
+
=end
|