Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 81429
Collapse All | Expand All

(-)starfighter-orig/code/comms.cpp (-3 / +3 lines)
Lines 131-137 Link Here
131
131
132
void doComms(SDL_Surface *comms)
132
void doComms(SDL_Surface *comms)
133
{
133
{
134
	if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
134
	if (IS_FIRE_PRESSED())
135
	{
135
	{
136
		if (engine.commsSection == 0)
136
		if (engine.commsSection == 0)
137
		{
137
		{
Lines 140-146 Link Here
140
				if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 170, 180 + (i * 60), 430, 50))
140
				if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 170, 180 + (i * 60), 430, 50))
141
				{
141
				{
142
					createMissionDetailSurface(comms, i);
142
					createMissionDetailSurface(comms, i);
143
					engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
143
					RESET_FIRE();
144
				}
144
				}
145
			}
145
			}
146
		}
146
		}
Lines 149-155 Link Here
149
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 170, 440, 160, 20))
149
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 170, 440, 160, 20))
150
			{
150
			{
151
				createCommsSurface(comms);
151
				createCommsSurface(comms);
152
				engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
152
				RESET_FIRE();
153
			}
153
			}
154
		}
154
		}
155
	}
155
	}
(-)starfighter-orig/code/events.cpp (-3 / +3 lines)
Lines 29-35 Link Here
29
{
29
{
30
	getPlayerInput();
30
	getPlayerInput();
31
		
31
		
32
	if (engine.keyState[SDLK_ESCAPE])
32
	if (IS_QUIT_PRESSED())
33
	{
33
	{
34
		engine.paused = 0;
34
		engine.paused = 0;
35
		engine.done = 1;
35
		engine.done = 1;
Lines 37-46 Link Here
37
		return 1;
37
		return 1;
38
	}
38
	}
39
	
39
	
40
	if (engine.keyState[SDLK_p])
40
	if (IS_PAUSE_PRESSED())
41
	{
41
	{
42
		engine.paused = 0;
42
		engine.paused = 0;
43
		engine.keyState[SDLK_p] = 0;
43
		RESET_PAUSE();
44
	}
44
	}
45
45
46
	return 0;
46
	return 0;
(-)starfighter-orig/code/game.cpp (-1 / +1 lines)
Lines 137-143 Link Here
137
	// Default to no aliens dead...
137
	// Default to no aliens dead...
138
	engine.allAliensDead = 0;
138
	engine.allAliensDead = 0;
139
139
140
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
140
	RESET_INVOKE();
141
	flushInput();
141
	flushInput();
142
142
143
	while (engine.done != 1)
143
	while (engine.done != 1)
(-)starfighter-orig/code/globals.cpp (-3 lines)
Lines 48-56 Link Here
48
48
49
	engine.commsSection = 0;
49
	engine.commsSection = 0;
50
50
51
   for (int i = 0 ; i < 350 ; i++)
52
   	engine.keyState[i] = 0;
53
54
   engine.eventTimer = 0;
51
   engine.eventTimer = 0;
55
	engine.counter2 = 0;
52
	engine.counter2 = 0;
56
	engine.timeTaken = 0;
53
	engine.timeTaken = 0;
(-)starfighter-orig/code/init.cpp (-4 / +21 lines)
Lines 88-96 Link Here
88
	graphics.drawString("Project: Starfighter will now exit", -1, 450, FONT_WHITE);
88
	graphics.drawString("Project: Starfighter will now exit", -1, 450, FONT_WHITE);
89
	graphics.drawString("Press Space to continue", -1, 475, FONT_WHITE);
89
	graphics.drawString("Press Space to continue", -1, 475, FONT_WHITE);
90
90
91
	engine.keyState[SDLK_SPACE] = 0;
91
	RESET_INVOKE();
92
92
93
	while (!engine.keyState[SDLK_SPACE])
93
	while (!IS_INVOKE_PRESSED())
94
	{
94
	{
95
		getPlayerInput();
95
		getPlayerInput();
96
		graphics.updateScreen();
96
		graphics.updateScreen();
Lines 154-160 Link Here
154
	#endif
154
	#endif
155
155
156
	/* Initialize the SDL library */
156
	/* Initialize the SDL library */
157
	if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) < 0) {
157
	if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_JOYSTICK) < 0) {
158
		printf("Couldn't initialize SDL: %s\n", SDL_GetError());
158
		printf("Couldn't initialize SDL: %s\n", SDL_GetError());
159
		exit(1);
159
		exit(1);
160
	}
160
	}
Lines 204-210 Link Here
204
	}
204
	}
205
205
206
	SDL_ShowCursor(SDL_DISABLE);
206
	SDL_ShowCursor(SDL_DISABLE);
207
	SDL_EventState(SDL_MOUSEMOTION, SDL_DISABLE);
207
208
	int num = SDL_NumJoysticks();
209
	if(num > 0) {
210
	    for(int i=0 ; i< num ; i++) {
211
		printf("Opening Joystick %i: %s\n", i, SDL_JoystickOpen(i) ? "succeeded" : "failed");
212
	    }
213
	    SDL_JoystickEventState(SDL_ENABLE);
214
	} else {
215
	    printf("No Joysticks available.\n");
216
	}
217
218
208
}
219
}
209
220
210
/*
221
/*
Lines 214-220 Link Here
214
*/
225
*/
215
void cleanUp()
226
void cleanUp()
216
{
227
{
228
217
	printf("Cleaning Up...\n");
229
	printf("Cleaning Up...\n");
230
	
231
	/* Joysticks are freed implicitly, as we
232
	 * have not stored them anywhere.
233
	 */
234
218
	printf("Freeing Graphics\n");
235
	printf("Freeing Graphics\n");
219
	graphics.freeGraphics();
236
	graphics.freeGraphics();
220
	printf("Freeing Background\n");
237
	printf("Freeing Background\n");
(-)starfighter-orig/code/intermission.cpp (-11 / +13 lines)
Lines 283-289 Link Here
283
		if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, r.x, r.y, systemPlanet[planet].image->w, systemPlanet[planet].image->h))
283
		if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, r.x, r.y, systemPlanet[planet].image->w, systemPlanet[planet].image->h))
284
		{
284
		{
285
			graphics.drawString(systemPlanet[planet].name, -1, 545, FONT_WHITE);
285
			graphics.drawString(systemPlanet[planet].name, -1, 545, FONT_WHITE);
286
			if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
286
			if (IS_FIRE_PRESSED())
287
			{
287
			{
288
				if (currentGame.system == 0)
288
				if (currentGame.system == 0)
289
				{
289
				{
Lines 299-305 Link Here
299
				}
299
				}
300
300
301
				rtn = 1;
301
				rtn = 1;
302
				engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
302
				RESET_FIRE();
303
			}
303
			}
304
		}
304
		}
305
305
Lines 408-414 Link Here
408
408
409
void showOptions(SDL_Surface *optionsSurface)
409
void showOptions(SDL_Surface *optionsSurface)
410
{
410
{
411
	if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
411
	if (IS_FIRE_PRESSED())
412
	{
412
	{
413
		if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 417, 172, 45, 22))
413
		if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 417, 172, 45, 22))
414
			currentGame.useSound = 1;
414
			currentGame.useSound = 1;
Lines 469-475 Link Here
469
		if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 417, 322, 100, 22))
469
		if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 417, 322, 100, 22))
470
		{
470
		{
471
			Math::wrapChar(&(++currentGame.autoSaveSlot), -1, 4);
471
			Math::wrapChar(&(++currentGame.autoSaveSlot), -1, 4);
472
			engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
472
			RESET_FIRE();
473
		}
473
		}
474
474
475
		createOptions(optionsSurface);
475
		createOptions(optionsSurface);
Lines 536-542 Link Here
536
	graphics.shape[FACE_KLINE] = loadImage("gfx/face_kline.png");
536
	graphics.shape[FACE_KLINE] = loadImage("gfx/face_kline.png");
537
537
538
	engine.done = 0;
538
	engine.done = 0;
539
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
539
	RESET_FIRE();
540
	engine.ssx = engine.ssy = 0;
540
	engine.ssx = engine.ssy = 0;
541
541
542
	SDL_Rect r;
542
	SDL_Rect r;
Lines 614-620 Link Here
614
	unsigned long frameLimit = SDL_GetTicks();
614
	unsigned long frameLimit = SDL_GetTicks();
615
615
616
	flushInput();
616
	flushInput();
617
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
617
	RESET_FIRE();
618
	RESET_SWITCH_PLANET_MOVEMENT();
618
	engine.done = 0;
619
	engine.done = 0;
619
620
620
	while (!engine.done)
621
	while (!engine.done)
Lines 698-707 Link Here
698
				break;
699
				break;
699
700
700
			case 1:
701
			case 1:
701
				if (engine.keyState[SDLK_SPACE])
702
				if (IS_SWITCH_PLANET_MOVEMENT_PRESSED())
702
				{
703
				{
703
					movePlanets = !movePlanets;
704
					movePlanets = !movePlanets;
704
					engine.keyState[SDLK_SPACE] = 0;
705
					RESET_SWITCH_PLANET_MOVEMENT();
705
				}
706
				}
706
707
707
				if (movePlanets)
708
				if (movePlanets)
Lines 834-850 Link Here
834
							graphics.blit(iconInfo[11].image, (int)iconInfo[i].x, 545);
835
							graphics.blit(iconInfo[11].image, (int)iconInfo[i].x, 545);
835
					}
836
					}
836
837
837
					if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
838
					if (IS_FIRE_PRESSED())
838
					{
839
					{
839
						redrawBackGround = 1;
840
						redrawBackGround = 1;
840
						section = i;
841
						section = i;
841
						engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
842
						RESET_FIRE();
842
					}
843
					}
843
				}
844
				}
844
			}
845
			}
845
		}
846
		}
846
847
847
		engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
848
		RESET_FIRE();
849
		RESET_SWITCH_PLANET_MOVEMENT();
848
		doCursor();
850
		doCursor();
849
851
850
		// Limit us to 60 frame a second
852
		// Limit us to 60 frame a second
(-)starfighter-orig/code/loadSave.cpp (-3 / +3 lines)
Lines 147-153 Link Here
147
147
148
	// Recall to update the save slots... (lazy, yes)
148
	// Recall to update the save slots... (lazy, yes)
149
	initSaveSlots();
149
	initSaveSlots();
150
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
150
	RESET_FIRE();
151
}
151
}
152
152
153
void createSavesSurface(SDL_Surface *savesSurface, signed char clickedSlot)
153
void createSavesSurface(SDL_Surface *savesSurface, signed char clickedSlot)
Lines 197-203 Link Here
197
			break;
197
			break;
198
	}
198
	}
199
199
200
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
200
	RESET_FIRE();
201
}
201
}
202
202
203
/*
203
/*
Lines 215-221 Link Here
215
215
216
	int clickedSlot = -1;
216
	int clickedSlot = -1;
217
217
218
	if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
218
	if (IS_FIRE_PRESSED())
219
	{
219
	{
220
		for (int i = 0 ; i < 5 ; i++)
220
		for (int i = 0 ; i < 5 ; i++)
221
		{
221
		{
(-)starfighter-orig/code/misc.cpp (-1 / +1 lines)
Lines 372-378 Link Here
372
	if (player.shield < 1)
372
	if (player.shield < 1)
373
		return;
373
		return;
374
374
375
	if ((!engine.keyState[SDLK_SPACE]) && (player.weaponType[1] == W_LASER) && (engine.eventTimer % 8 == 1))
375
	if ((!IS_CHARGE_PRESSED()) && (player.weaponType[1] == W_LASER) && (engine.eventTimer % 8 == 1))
376
		Math::limitChar(&(--player.ammo[1]), 1, 255);
376
		Math::limitChar(&(--player.ammo[1]), 1, 255);
377
377
378
	if ((engine.eventTimer < 30) && (player.shield <= engine.lowShield))
378
	if ((engine.eventTimer < 30) && (player.shield <= engine.lowShield))
(-)starfighter-orig/code/missions.cpp (-4 / +4 lines)
Lines 787-799 Link Here
787
787
788
		flushInput();
788
		flushInput();
789
		engine.done = 0;
789
		engine.done = 0;
790
		engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
790
		RESET_FIRE();
791
791
792
		while (true)
792
		while (true)
793
		{
793
		{
794
			graphics.updateScreen();
794
			graphics.updateScreen();
795
			getPlayerInput();
795
			getPlayerInput();
796
			if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
796
			if (IS_FIRE_PRESSED())
797
				break;
797
				break;
798
		}
798
		}
799
799
Lines 905-917 Link Here
905
905
906
		flushInput();
906
		flushInput();
907
		engine.done = 0;
907
		engine.done = 0;
908
		engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
908
		RESET_FIRE();
909
909
910
		while (true)
910
		while (true)
911
		{
911
		{
912
			graphics.updateScreen();
912
			graphics.updateScreen();
913
			getPlayerInput();
913
			getPlayerInput();
914
			if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
914
			if (IS_FIRE_PRESSED())
915
				break;
915
				break;
916
		}
916
		}
917
	}
917
	}
(-)starfighter-orig/code/player.cpp (-42 / +177 lines)
Lines 78-87 Link Here
78
	{
78
	{
79
		if (player.shield > 0)
79
		if (player.shield > 0)
80
		{
80
		{
81
			if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
81
			if (IS_FIRE_PRESSED())
82
				fireBullet(&player, 0);
82
				fireBullet(&player, 0);
83
83
84
			if ((engine.keyState[SDLK_SPACE]) && (player.weaponType[1] != W_NONE))
84
			if (IS_CHARGE_PRESSED() && (player.weaponType[1] != W_NONE))
85
			{
85
			{
86
				if ((player.weaponType[1] != W_CHARGER) && (player.weaponType[1] != W_LASER) && (player.ammo[1] > 0))
86
				if ((player.weaponType[1] != W_CHARGER) && (player.weaponType[1] != W_LASER) && (player.ammo[1] > 0))
87
				{
87
				{
Lines 105-111 Link Here
105
105
106
			if (player.weaponType[1] == W_CHARGER)
106
			if (player.weaponType[1] == W_CHARGER)
107
			{
107
			{
108
				if (engine.keyState[SDLK_SPACE])
108
				if (IS_CHARGE_PRESSED())
109
				{
109
				{
110
					Math::limitChar(&(++player.ammo[1]), 0, 200);
110
					Math::limitChar(&(++player.ammo[1]), 0, 200);
111
				}
111
				}
Lines 117-123 Link Here
117
				}
117
				}
118
			}
118
			}
119
119
120
			if ((engine.keyState[SDLK_LSHIFT]) || (engine.keyState[SDLK_RSHIFT]))
120
			if (IS_CHANGE_PRESSED())
121
			{
121
			{
122
				if (player.ammo[0] < 1)
122
				if (player.ammo[0] < 1)
123
				{
123
				{
Lines 190-228 Link Here
190
					}
190
					}
191
				}
191
				}
192
				
192
				
193
				engine.keyState[SDLK_LSHIFT] = engine.keyState[SDLK_RSHIFT] = 0;
193
				RESET_CHANGE();
194
			}
194
			}
195
195
196
			Math::limitChar(&--player.reload[0], 0, 999);
196
			Math::limitChar(&--player.reload[0], 0, 999);
197
			Math::limitChar(&--player.reload[1], 0, 999);
197
			Math::limitChar(&--player.reload[1], 0, 999);
198
198
199
			if (engine.keyState[SDLK_UP])
199
			if (IS_UP_PRESSED())
200
			{
200
			{
201
				player.y -= player.speed;
201
				player.y -= player.speed;
202
				engine.ssy += 0.1;
202
				engine.ssy += 0.1;
203
			}
203
			}
204
204
205
			if (engine.keyState[SDLK_DOWN])
205
			if (IS_DOWN_PRESSED())
206
			{
206
			{
207
				player.y += player.speed;
207
				player.y += player.speed;
208
				engine.ssy -= 0.1;
208
				engine.ssy -= 0.1;
209
			}
209
			}
210
210
211
			if (engine.keyState[SDLK_LEFT])
211
			if (IS_LEFT_PRESSED())
212
			{
212
			{
213
				player.x -= player.speed;
213
				player.x -= player.speed;
214
				engine.ssx += 0.1;
214
				engine.ssx += 0.1;
215
				player.face = 1;
215
				player.face = 1;
216
			}
216
			}
217
217
218
			if (engine.keyState[SDLK_RIGHT])
218
			if (IS_RIGHT_PRESSED())
219
			{
219
			{
220
				player.x += player.speed;
220
				player.x += player.speed;
221
				engine.ssx -= 0.1;
221
				engine.ssx -= 0.1;
222
				player.face = 0;
222
				player.face = 0;
223
			}
223
			}
224
224
225
			if (engine.keyState[SDLK_ESCAPE])
225
			if (IS_QUIT_PRESSED())
226
			{
226
			{
227
				if ((engine.done == 0) && (engine.gameSection == SECTION_GAME) && (currentMission.remainingObjectives1 == 0))
227
				if ((engine.done == 0) && (engine.gameSection == SECTION_GAME) && (currentMission.remainingObjectives1 == 0))
228
				{
228
				{
Lines 232-251 Link Here
232
				}
232
				}
233
			}
233
			}
234
234
235
			if (engine.keyState[SDLK_p])
235
			if (IS_PAUSE_PRESSED())
236
			{
236
			{
237
				engine.paused = 1;
237
				engine.paused = 1;
238
				engine.keyState[SDLK_p] = 0;
238
				RESET_PAUSE();
239
			}
239
			}
240
240
241
			if ((engine.keyState[SDLK_t]) && (currentGame.area != 10))
241
			if (IS_TIMER_PRESSED() && (currentGame.area != 10))
242
			{
242
			{
243
				if (engine.targetArrowTimer == -1)
243
				if (engine.targetArrowTimer == -1)
244
					engine.targetArrowTimer = 0;
244
					engine.targetArrowTimer = 0;
245
				else
245
				else
246
					engine.targetArrowTimer = -1;
246
					engine.targetArrowTimer = -1;
247
247
248
				engine.keyState[SDLK_t] = 0;
248
				RESET_TIMER();
249
			}
249
			}
250
250
251
			if ((engine.missionCompleteTimer == 0) && (engine.targetArrowTimer == -1))
251
			if ((engine.missionCompleteTimer == 0) && (engine.targetArrowTimer == -1))
Lines 304-310 Link Here
304
				playSound(SFX_EXPLOSION);
304
				playSound(SFX_EXPLOSION);
305
			}
305
			}
306
306
307
			engine.keyState[SDLK_UP] = engine.keyState[SDLK_DOWN] = engine.keyState[SDLK_LEFT] = engine.keyState[SDLK_RIGHT] = 0;
307
			RESET_STEER();
308
			if ((rand() % 3) == 0)
308
			if ((rand() % 3) == 0)
309
				addExplosion(player.x + Math::rrand(-10, 10), player.y + Math::rrand(-10, 10), E_BIG_EXPLOSION);
309
				addExplosion(player.x + Math::rrand(-10, 10), player.y + Math::rrand(-10, 10), E_BIG_EXPLOSION);
310
			if (player.shield == -99)
310
			if (player.shield == -99)
Lines 334-377 Link Here
334
334
335
void flushInput()
335
void flushInput()
336
{
336
{
337
	for (int i = 0 ; i < 350 ; i++)
338
		engine.keyState[i] = 0;
339
340
	while (SDL_PollEvent(&engine.event)){}
337
	while (SDL_PollEvent(&engine.event)){}
341
}
338
}
342
339
343
void getPlayerInput()
340
void getPlayerInput()
344
{
341
{
345
	if (engine.gameSection == SECTION_INTERMISSION)
342
	while (SDL_PollEvent(&engine.event))
346
	{
347
		// Get the current mouse position
348
		int x, y;
349
		SDL_GetMouseState(&x, &y);
350
		engine.cursor_x = x;
351
		engine.cursor_y = y;
352
	}
353
354
	if (SDL_PollEvent(&engine.event))
355
	{
343
	{
356
		switch (engine.event.type)
344
		switch (engine.event.type)
357
		{
345
		{
358
			case SDL_QUIT:
346
			case SDL_QUIT:
359
				exit(0);
347
				exit(0);
360
				break;
348
				break;
361
349
			case SDL_MOUSEMOTION:
350
				/* Mouse motion reacts only between missions. */
351
				if(engine.gameSection == SECTION_INTERMISSION) {
352
				    engine.cursor_x += engine.event.motion.xrel;
353
				    engine.cursor_y += engine.event.motion.yrel;
354
				}
355
				break;
356
			case SDL_MOUSEBUTTONUP:
362
			case SDL_MOUSEBUTTONDOWN:
357
			case SDL_MOUSEBUTTONDOWN:
363
				if (engine.gameSection == SECTION_INTERMISSION)
358
				// Treats mouse as input events.
364
				{
359
				switch(engine.event.button.button) {
365
					if (engine.event.button.button == SDL_BUTTON_LEFT) engine.keyState[SDLK_LCTRL] = 1;
360
				    case SDL_BUTTON_LEFT:
366
					if (engine.event.button.button == SDL_BUTTON_RIGHT) engine.keyState[SDLK_SPACE] = 1;
361
					    engine.playerControl.fire = engine.event.button.state;;
362
					    break;
363
				    case SDL_BUTTON_RIGHT:
364
					    engine.playerControl.charge = engine.event.button.state;
365
					    break;
366
				    case SDL_BUTTON_WHEELUP:
367
					    // Allows menu control.
368
					    engine.playerControl.up = engine.event.button.state;
369
					    break;
370
				    case SDL_BUTTON_WHEELDOWN:
371
					    // Allows menu control.
372
					    engine.playerControl.down = engine.event.button.state;
373
					    break;
367
				}
374
				}
368
				break;
375
				break;
369
370
			case SDL_KEYDOWN:
376
			case SDL_KEYDOWN:
371
				if (engine.gameSection == SECTION_TITLE)
377
				if (engine.gameSection == SECTION_TITLE)
372
					addKeyEvent(SDL_GetKeyName(engine.event.key.keysym.sym));
378
					addKeyEvent(SDL_GetKeyName(engine.event.key.keysym.sym));
373
379
					
374
				engine.keyState[engine.event.key.keysym.sym] = 1;
380
				switch(engine.event.key.keysym.sym) {
381
				    case SDLK_LEFT:
382
					engine.playerControl.left = 1;
383
					break;
384
				    case SDLK_RIGHT:
385
					engine.playerControl.right = 1;
386
					break;
387
				    case SDLK_UP:
388
					engine.playerControl.up = 1;
389
					break;
390
				    case SDLK_DOWN:
391
					engine.playerControl.down = 1;
392
					break;
393
				    case SDLK_LSHIFT:
394
				    case SDLK_RSHIFT:
395
					engine.playerControl.change = 1;
396
					break;
397
				    case SDLK_LCTRL:
398
				    case SDLK_RCTRL:
399
					engine.playerControl.fire = 1;
400
					break;
401
				    case SDLK_SPACE:
402
					engine.playerControl.charge = 1;
403
					break;
404
				    case SDLK_ESCAPE:
405
					engine.playerControl.quit = 1;
406
					break;
407
				    case SDLK_t:
408
					engine.playerControl.timer = 1;
409
					break;
410
				    case SDLK_p:
411
					engine.playerControl.pause = 1;
412
					break;
413
				    case SDLK_RETURN:
414
					engine.playerControl.invoke = 1;
415
					break;
416
				    default:
417
					break;
418
				}
375
419
376
				if (engine.gameSection != SECTION_GAME)
420
				if (engine.gameSection != SECTION_GAME)
377
					engine.paused = 0;
421
					engine.paused = 0;
Lines 379-398 Link Here
379
				break;
423
				break;
380
424
381
			case SDL_KEYUP:
425
			case SDL_KEYUP:
382
				if (engine.event.key.keysym.sym != SDLK_p)
426
				switch(engine.event.key.keysym.sym) {
383
					engine.keyState[engine.event.key.keysym.sym] = 0;
427
				    case SDLK_LEFT:
428
					engine.playerControl.left = 0;
429
					break;
430
				    case SDLK_RIGHT:
431
					engine.playerControl.right = 0;
432
					break;
433
				    case SDLK_UP:
434
					engine.playerControl.up = 0;
435
					break;
436
				    case SDLK_DOWN:
437
					engine.playerControl.down = 0;
438
					break;
439
				    case SDLK_LSHIFT:
440
				    case SDLK_RSHIFT:
441
					engine.playerControl.change = 0;
442
					break;
443
				    case SDLK_LCTRL:
444
				    case SDLK_RCTRL:
445
					engine.playerControl.fire = 0;
446
					break;
447
				    case SDLK_SPACE:
448
					engine.playerControl.charge = 0;
449
					break;
450
				    case SDLK_ESCAPE:
451
					engine.playerControl.quit = 0;
452
					break;
453
				    case SDLK_t:
454
					engine.playerControl.timer = 0;
455
					break;
456
				    case SDLK_p:
457
					engine.playerControl.pause = 0;
458
					break;
459
				    case SDLK_RETURN:
460
					engine.playerControl.invoke = 0;
461
					break;
462
				    default:
463
					break;
464
				}
384
				break;
465
				break;
385
466
			case SDL_JOYAXISMOTION:
386
			default:
467
				switch(engine.event.jaxis.axis) {
468
				    case 0:
469
					if(engine.event.jaxis.value < -AXIS_THRESHOLD) {
470
					    engine.playerControl.left = 1;
471
					} else if(engine.event.jaxis.value > AXIS_THRESHOLD) {
472
					    engine.playerControl.right = 1;
473
					} else {
474
					    engine.playerControl.left =
475
					    engine.playerControl.right = 0;
476
					}
477
					break;
478
				    case 1:
479
					if(engine.event.jaxis.value < -AXIS_THRESHOLD) {
480
					    engine.playerControl.up = 1;
481
					} else if(engine.event.jaxis.value > AXIS_THRESHOLD) {
482
					    engine.playerControl.down = 1;
483
					} else {
484
					    engine.playerControl.up =
485
					    engine.playerControl.down = 0;
486
					}
487
					break;
488
				    default:
489
					break;
490
				}
387
				break;
491
				break;
492
			case SDL_JOYBUTTONUP:
493
			case SDL_JOYBUTTONDOWN:
494
				switch(engine.event.jbutton.button) {
495
				    case 0:
496
					engine.playerControl.fire = engine.event.jbutton.state;
497
					break;
498
				    case 1:
499
					engine.playerControl.charge = engine.event.jbutton.state;
500
					break;
501
				    case 2:
502
					engine.playerControl.change = engine.event.jbutton.state;
503
					break;
504
				    case 3:
505
					engine.playerControl.pause = engine.event.jbutton.state;
506
					break;
507
				    case 4:
508
					engine.playerControl.quit = engine.event.jbutton.state;
509
					break;
510
				    default:
511
					engine.playerControl.invoke = engine.event.jbutton.state;
512
					break;
513
				}
388
		}
514
		}
515
		
389
	}
516
	}
517
518
	/* Moves cursor around. */
519
	if(engine.gameSection == SECTION_INTERMISSION) {
520
		engine.cursor_x += (engine.playerControl.right-engine.playerControl.left)*MOVE_MULT;
521
		engine.cursor_y += (engine.playerControl.down-engine.playerControl.up)*MOVE_MULT;
522
	}
523
390
}
524
}
391
525
392
void leaveSector()
526
void leaveSector()
393
{
527
{
394
	engine.keyState[SDLK_UP] = engine.keyState[SDLK_DOWN] = engine.keyState[SDLK_LEFT] = engine.keyState[SDLK_RIGHT] = 0;
528
	RESET_STEER();
395
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
529
	RESET_FIRE();
530
	RESET_CHARGE();
396
531
397
	if (engine.done == 0)
532
	if (engine.done == 0)
398
		engine.done = 3;
533
		engine.done = 3;
(-)starfighter-orig/code/script.cpp (-2 / +3 lines)
Lines 202-208 Link Here
202
	graphics.clearScreen(graphics.black);
202
	graphics.clearScreen(graphics.black);
203
	SDL_Delay(1000);
203
	SDL_Delay(1000);
204
204
205
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
205
	RESET_INVOKE();
206
	RESET_QUIT();
206
207
207
	engine.ssx = -0.5;
208
	engine.ssx = -0.5;
208
	engine.ssy = 0;
209
	engine.ssy = 0;
Lines 301-307 Link Here
301
		while (SDL_GetTicks() < (frameLimit + 16)){}
302
		while (SDL_GetTicks() < (frameLimit + 16)){}
302
		frameLimit = SDL_GetTicks();
303
		frameLimit = SDL_GetTicks();
303
		
304
		
304
		if (engine.keyState[SDLK_ESCAPE])
305
		if (IS_QUIT_PRESSED() || IS_INVOKE_PRESSED())
305
			break;
306
			break;
306
	}
307
	}
307
308
(-)starfighter-orig/code/shop.cpp (-4 / +4 lines)
Lines 739-752 Link Here
739
	else if (currentGame.system == 2)
739
	else if (currentGame.system == 2)
740
		icons = 15;
740
		icons = 15;
741
741
742
	if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]))
742
	if (IS_FIRE_PRESSED())
743
	{
743
	{
744
		for (int i = 0 ; i < icons ; i++)
744
		for (int i = 0 ; i < icons ; i++)
745
		{
745
		{
746
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, shopItems[i].x, shopItems[i].y, 32, 25))
746
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, shopItems[i].x, shopItems[i].y, 32, 25))
747
			{
747
			{
748
				shopSelectedItem = i;
748
				shopSelectedItem = i;
749
				engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
749
				RESET_FIRE();
750
				drawShop();
750
				drawShop();
751
			}
751
			}
752
		}
752
		}
Lines 756-769 Link Here
756
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 60, 350, 24, 16))
756
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 60, 350, 24, 16))
757
			{
757
			{
758
				buy(shopSelectedItem);
758
				buy(shopSelectedItem);
759
				engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
759
				RESET_FIRE();
760
				drawShop();
760
				drawShop();
761
			}
761
			}
762
762
763
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 700, 350, 24, 16))
763
			if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 700, 350, 24, 16))
764
			{
764
			{
765
				sell(shopSelectedItem);
765
				sell(shopSelectedItem);
766
				engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
766
				RESET_FIRE();
767
				drawShop();
767
				drawShop();
768
			}
768
			}
769
		}
769
		}
(-)starfighter-orig/code/structs.h (-1 / +60 lines)
Lines 204-209 Link Here
204
	char subject[100];
204
	char subject[100];
205
};
205
};
206
206
207
typedef struct control {
208
    char up, down, left, right, fire, charge, timer, pause, quit, invoke, change;
209
};
207
210
208
typedef struct globalEngineVariables {
211
typedef struct globalEngineVariables {
209
212
Lines 269-275 Link Here
269
	// This really only applies to Linux users.
272
	// This really only applies to Linux users.
270
	char userHomeDirectory[1024];
273
	char userHomeDirectory[1024];
271
	
274
	
272
	char keyState[350];
275
	// game specific controls
276
	control playerControl;
273
277
274
	signed char cheat; // overall cheat
278
	signed char cheat; // overall cheat
275
	signed char cheatShield;
279
	signed char cheatShield;
Lines 279-284 Link Here
279
	signed char cheatCredits;
283
	signed char cheatCredits;
280
};
284
};
281
285
286
// For invoking menu entries.
287
#define IS_INVOKE_PRESSED() (engine.playerControl.fire ||\
288
			     engine.playerControl.invoke ||\
289
			     engine.playerControl.charge)
290
			     
291
#define RESET_INVOKE() (engine.playerControl.fire =\
292
			engine.playerControl.invoke =\
293
			engine.playerControl.charge = 0)
294
295
// The fire buttons.
296
#define IS_FIRE_PRESSED() (engine.playerControl.fire)
297
#define RESET_FIRE() (engine.playerControl.fire = 0)
298
299
#define IS_SWITCH_PLANET_MOVEMENT_PRESSED() (engine.playerControl.invoke ||\
300
					    engine.playerControl.charge)
301
					    
302
#define RESET_SWITCH_PLANET_MOVEMENT()	(engine.playerControl.invoke =\
303
					engine.playerControl.charge =0)
304
305
#define RESET_QUIT() (engine.playerControl.quit =0)
306
#define IS_QUIT_PRESSED() (engine.playerControl.quit)
307
308
#define RESET_UP() (engine.playerControl.up =0)
309
#define IS_UP_PRESSED() (engine.playerControl.up)
310
311
#define RESET_DOWN() (engine.playerControl.down =0)
312
#define IS_DOWN_PRESSED() (engine.playerControl.down)
313
314
#define RESET_LEFT() (engine.playerControl.left =0)
315
#define IS_LEFT_PRESSED() (engine.playerControl.left)
316
317
#define RESET_RIGHT() (engine.playerControl.right =0)
318
#define IS_RIGHT_PRESSED() (engine.playerControl.right)
319
320
// Conveniently resets all direction controls at once.
321
#define RESET_STEER() (engine.playerControl.up =\
322
			engine.playerControl.down =\
323
			engine.playerControl.left =\
324
			engine.playerControl.right = 0)
325
326
#define RESET_PAUSE() (engine.playerControl.pause =0)
327
#define IS_PAUSE_PRESSED() (engine.playerControl.pause)
328
329
#define RESET_CHANGE() (engine.playerControl.change = 0)
330
#define IS_CHANGE_PRESSED() (engine.playerControl.change)
331
332
#define RESET_CHARGE() (engine.playerControl.charge = 0)
333
#define IS_CHARGE_PRESSED() (engine.playerControl.charge)
334
335
#define RESET_TIMER() (engine.playerControl.timer =0)
336
#define IS_TIMER_PRESSED() (engine.playerControl.timer)
337
338
#define AXIS_THRESHOLD 5000
339
#define MOVE_MULT 10
340
282
typedef struct event {
341
typedef struct event {
283
342
284
	int time;
343
	int time;
(-)starfighter-orig/code/title.cpp (-15 / +15 lines)
Lines 238-244 Link Here
238
238
239
	engine.done = 0;
239
	engine.done = 0;
240
	flushInput();
240
	flushInput();
241
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0;
241
	RESET_FIRE();
242
242
243
	if ((currentGame.useMusic) && (engine.useAudio))
243
	if ((currentGame.useMusic) && (engine.useAudio))
244
		Mix_PlayMusic(engine.music, 1);
244
		Mix_PlayMusic(engine.music, 1);
Lines 308-325 Link Here
308
				if (redGlow <= 0) {redDir = 2; redGlow = 0;}
308
				if (redGlow <= 0) {redDir = 2; redGlow = 0;}
309
				if (redGlow >= 255) {redDir = -2; redGlow = 255;}
309
				if (redGlow >= 255) {redDir = -2; redGlow = 255;}
310
310
311
				if (engine.keyState[SDLK_UP])
311
				if (IS_UP_PRESSED())
312
				{
312
				{
313
					engine.keyState[SDLK_UP] = 0;
313
					RESET_UP();
314
					Math::wrapChar(&(--selectedOption), 1, listLength);
314
					Math::wrapChar(&(--selectedOption), 1, listLength);
315
					if (menuType == 0)
315
					if (menuType == 0)
316
						if ((selectedOption == 2) || (selectedOption == 3))
316
						if ((selectedOption == 2) || (selectedOption == 3))
317
							if (continueSaveSlot == 0)
317
							if (continueSaveSlot == 0)
318
								selectedOption = 1;
318
								selectedOption = 1;
319
				}
319
				}
320
				if (engine.keyState[SDLK_DOWN])
320
				if (IS_DOWN_PRESSED())
321
				{
321
				{
322
					engine.keyState[SDLK_DOWN] = 0;
322
					RESET_DOWN();
323
					Math::wrapChar(&(++selectedOption), 1, listLength);
323
					Math::wrapChar(&(++selectedOption), 1, listLength);
324
					if (menuType == 0)
324
					if (menuType == 0)
325
						if ((selectedOption == 2) || (selectedOption == 3))
325
						if ((selectedOption == 2) || (selectedOption == 3))
Lines 351-357 Link Here
351
			engine.cheatCredits = 0;
351
			engine.cheatCredits = 0;
352
		}
352
		}
353
353
354
		if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]) || (engine.keyState[SDLK_SPACE]))
354
		if (IS_INVOKE_PRESSED())
355
		{
355
		{
356
			if ((now - then <= 27500) && (!skip))
356
			if ((now - then <= 27500) && (!skip))
357
			{
357
			{
Lines 450-456 Link Here
450
						break;
450
						break;
451
				}
451
				}
452
			}
452
			}
453
			engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
453
			RESET_INVOKE();
454
		}
454
		}
455
455
456
		while (SDL_GetTicks() < (frameLimit + 16)){}
456
		while (SDL_GetTicks() < (frameLimit + 16)){}
Lines 462-468 Link Here
462
	SDL_FreeSurface(prlogo);
462
	SDL_FreeSurface(prlogo);
463
	SDL_FreeSurface(sflogo);
463
	SDL_FreeSurface(sflogo);
464
464
465
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
465
	RESET_INVOKE();
466
466
467
	resetLists();
467
	resetLists();
468
468
Lines 532-538 Link Here
532
	unsigned long frameLimit = SDL_GetTicks();
532
	unsigned long frameLimit = SDL_GetTicks();
533
533
534
	flushInput();
534
	flushInput();
535
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
535
	RESET_INVOKE();
536
536
537
	while (true)
537
	while (true)
538
	{
538
	{
Lines 541-547 Link Here
541
541
542
		getPlayerInput();
542
		getPlayerInput();
543
543
544
		if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]) || (engine.keyState[SDLK_SPACE]))
544
		if (IS_INVOKE_PRESSED())
545
			break;
545
			break;
546
546
547
		if (graphics.textShape[8].y > 450)
547
		if (graphics.textShape[8].y > 450)
Lines 572-578 Link Here
572
	graphics.freeGraphics();
572
	graphics.freeGraphics();
573
	SDL_FillRect(graphics.background, NULL, graphics.black);
573
	SDL_FillRect(graphics.background, NULL, graphics.black);
574
574
575
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
575
	RESET_INVOKE();
576
	engine.gameSection = SECTION_INTERMISSION;
576
	engine.gameSection = SECTION_INTERMISSION;
577
577
578
	loadMusic("music/Wybierak.mod");
578
	loadMusic("music/Wybierak.mod");
Lines 597-609 Link Here
597
	graphics.updateScreen();
597
	graphics.updateScreen();
598
598
599
	flushInput();
599
	flushInput();
600
	engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0;
600
	RESET_INVOKE();
601
601
602
	while (true)
602
	while (true)
603
	{
603
	{
604
		getPlayerInput();
604
		getPlayerInput();
605
605
606
		if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]) || (engine.keyState[SDLK_SPACE]))
606
		if (IS_INVOKE_PRESSED())
607
			break;
607
			break;
608
608
609
		graphics.updateScreen();
609
		graphics.updateScreen();
Lines 701-707 Link Here
701
	SDL_Rect r1 = {0, 80, 800, 20};
701
	SDL_Rect r1 = {0, 80, 800, 20};
702
	SDL_Rect r2 = {0, 500, 800, 20};
702
	SDL_Rect r2 = {0, 500, 800, 20};
703
703
704
	engine.keyState[SDLK_ESCAPE] = 0;
704
	RESET_QUIT();
705
	flushInput();
705
	flushInput();
706
706
707
	while (true)
707
	while (true)
Lines 710-716 Link Here
710
		graphics.unBuffer();
710
		graphics.unBuffer();
711
711
712
		getPlayerInput();
712
		getPlayerInput();
713
		if (engine.keyState[SDLK_ESCAPE])
713
		if (IS_QUIT_PRESSED())
714
			break;
714
			break;
715
715
716
		for (int i = 0 ; i < numberOfCredits ; i++)
716
		for (int i = 0 ; i < numberOfCredits ; i++)

Return to bug 81429