petermorphose 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|