File: shadow.cpp

package info (click to toggle)
clanlib 1.0~svn3827-7
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 24,632 kB
  • ctags: 16,580
  • sloc: cpp: 101,591; xml: 6,410; makefile: 1,743; ansic: 463; perl: 424; php: 247; sh: 53
file content (130 lines) | stat: -rw-r--r-- 3,453 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <ClanLib/core.h>
#include <ClanLib/application.h>
#include <ClanLib/display.h>
#include <ClanLib/gl.h>
#include <ClanLib/sound.h>
#include <ClanLib/mikmod.h>

class App : public CL_ClanApplication
{
public:
	virtual int main(int, char **)
	{
		// Create a console window for text-output if not available
		CL_ConsoleWindow console("Console");
		console.redirect_stdio();

		try
		{
			CL_SetupCore setup_core;
			CL_SetupDisplay setup_display;
			CL_SetupGL setup_gl;
			CL_SetupSound setup_sound;
			CL_SetupMikMod setup_mikmod;
			
			CL_DisplayWindow window("Shadow of the Beast", 640, 480, true);

			CL_Surface s1("resources/bgd1_ciel.png");
			CL_Surface s2("resources/bgd2_montagnes.png");
			CL_Surface s3("resources/bgd3_sol1.png");
			CL_Surface s4("resources/bgd4_sol2.png");
			CL_Surface s5("resources/bgd5_sol3.png");
			CL_Surface s6("resources/sprite_nuages1.png");
			CL_Surface s7("resources/sprite_nuages2.png");
			CL_Surface s8("resources/sprite_nuages3.png");
			CL_Surface s9("resources/sprite_nuages4.png");
			CL_Surface s10("resources/sprite_barriere.png");
			CL_Surface s11("resources/fireworks.png");
			CL_Surface s12("resources/sprite_arbre.png");
			CL_Surface s13("resources/scrolltext.png");

			CL_SoundOutput sound_output(44100);
			CL_SoundBuffer sample("resources/b-title.mod");
			CL_SoundBuffer_Session playback(sample.prepare());
			playback.play();

			// Define the initial scrolling values
			signed int xspeed = 2;
			signed int xscroll5 = rand() % 640 + 640;
			signed int xscroll5b = rand() % 640 + 640;
			
			signed int xscroll=0, xscrollb=0;
			signed int xscroll1=0, xscroll2=0, xscroll3=0, xscroll4=0, xscroll6=0;
			
			// Loop until the user hits escape:
			while (!CL_Keyboard::get_keycode(CL_KEY_ESCAPE))
			{
				xscroll+=xspeed;
				
				if (xscroll == 320) xspeed = -2;
				if (xscroll == -960) xspeed = 2;

				xscrollb = xscroll;
				if (xscrollb<-640) xscrollb=-640;
				if (xscrollb>0) xscrollb=0;

				xscroll1--;
				if (xscroll1==-640) xscroll1=0;

				xscroll2-=2;
				if (xscroll2==-640) xscroll2=0;

				xscroll3-=3;
				if (xscroll3<-640) xscroll3+=640;

				xscroll4-=4;
				if (xscroll4<-640) xscroll4+=640;

				xscroll5-=5;
				if (xscroll5<-640) xscroll5+=1280;

				xscroll5b-=2;
				if (xscroll5b<-640) xscroll5b+=1280;

				xscroll6-=5;
				if (xscroll6<-640) xscroll6+=640;

				//  Paste the images
				s1.draw(0, 0);
				s2.draw(xscroll1, 200);
				s2.draw(xscroll1+640, 200);
				s3.draw(xscroll2, 420);
				s3.draw(xscroll2+640, 420);
				s4.draw(xscroll3, 430);
				s4.draw(xscroll3+640, 430);
				s5.draw(xscroll4, 450);
				s5.draw(xscroll4+640, 450);
				s10.draw(xscroll5, 440);
				s6.draw(xscroll6, 0);
				s6.draw(xscroll6+640, 0);
				s7.draw(xscroll4, 82);
				s7.draw(xscroll4+640, 82);
				s8.draw(xscroll3, 120);
				s8.draw(xscroll3+640, 120);
				s9.draw(xscroll2, 138);
				s9.draw(xscroll2+640, 138);
				s12.draw(xscroll5b, 140);
				s11.draw(xscrollb, 0);
				s13.draw(xscrollb+640, 0);

				// Flip front and backbuffer. This makes the changes visible:
				// Using parameter 1 to sync to refresh.
				CL_Display::flip(1);

				// Update keyboard input and handle system events:
				CL_System::keep_alive();
			}
		}
		catch (CL_Error err)
		{
			std::cout << "error: " << err.message.c_str() << std::endl;

			// Display console close message and wait for a key
			console.display_close_message();

			return -1;
		}

		return 0;
	}
} app;