Exemplo n.º 1
0
static void GameLoop_PrepareAnimation(const HouseAnimation_Animation *animation, const HouseAnimation_Subtitle *subtitle, uint16 arg_8062, const HouseAnimation_SoundEffect *soundEffect)
{
	uint8 i;
	uint8 colors[16];

	s_houseAnimation_animation   = animation;
	s_houseAnimation_subtitle    = subtitle;
	s_houseAnimation_soundEffect = soundEffect;

	s_houseAnimation_currentSubtitle    = 0;
	s_houseAnimation_currentSoundEffect = 0;

	g_fontCharOffset = 0;

	s_var_8062 = arg_8062;
	s_var_8068 = 0;
	s_subtitleWait = 0xFFFF;
	s_subtitleActive = false;

	s_palettePartDirection    = PPD_STOPPED;
	s_palettePartCount        = 0;
	s_paletteAnimationTimeout = 0;

	GFX_ClearScreen();

	File_ReadBlockFile("INTRO.PAL", g_palette1, 256 * 3);

	memcpy(g_palette_998A, g_palette1, 256 * 3);

	Font_Select(g_fontIntro);

	GFX_Screen_SetActive(SCREEN_0);

	memcpy(s_palettePartTarget, &g_palette1[(144 + s_houseAnimation_subtitle->colour * 16) * 3], 6 * 3);

	memset(&g_palette1[215 * 3], 0, 6 * 3);

	memcpy(s_palettePartCurrent, s_palettePartTarget, 6 * 3);

	memset(s_palettePartChange, 0, 6 * 3);


	colors[0] = 0;
	for (i = 0; i < 6; i++) colors[i + 1] = 215 + i;

	GUI_InitColors(colors, 0, 15);
}
Exemplo n.º 2
0
bool GUI_Init(SDL_Surface* s)
{
  GUI_InitColors(s);
  MainFont = TTF_OpenFont(PG_Application::GetRelativePath("fonts/futuraxk.ttf"), 24);
  if (!MainFont)
  {
    fprintf(stderr, "GUI: Couldn't load font %s", PG_Application::GetRelativePath("fonts/futuraxk.ttf"));
    return false;
  }
  MainFont2 = TTF_OpenFont(PG_Application::GetRelativePath("fonts/futuraxk.ttf"), 28);
  if (!MainFont2)
  {
    fprintf(stderr, "GUI: Couldn't load font %s", PG_Application::GetRelativePath("fonts/futuraxk.ttf"));
    return false;
  }
  BtnFont = TTF_OpenFont(PG_Application::GetRelativePath("fonts/futurab.ttf"), 12);
  if (!BtnFont)
  {
    fprintf(stderr, "GUI: Couldn't load font %s", PG_Application::GetRelativePath("fonts/futurab.ttf"));
    return false;
  }
  BtnFont2 = TTF_OpenFont(PG_Application::GetRelativePath("fonts/futurab.ttf"), 14);
  if (!BtnFont2)
  {
    fprintf(stderr, "GUI: Couldn't load font %s", PG_Application::GetRelativePath("fonts/futurab.ttf"));
    return false;
  }
  
  GUI_OKDialog1* OKDialog1 = new GUI_OKDialog1("");
  GUI_OKDialog2* OKDialog2 = new GUI_OKDialog2("");
  OKDialog1->next = OKDialog2;
  GUI_YNDialog* YNDialog = new GUI_YNDialog;
  OKDialog2->next = YNDialog;
  GUI_MainMenu* MainMenu = new GUI_MainMenu;
  YNDialog->next = MainMenu;
  GUI_NewGameMenu* NewGameMenu = new GUI_NewGameMenu;
  MainMenu->next = NewGameMenu;
  GUI_JoinGameMenu* JoinGameMenu = new GUI_JoinGameMenu;
  NewGameMenu->next = JoinGameMenu;
  GUI_OptionsMenu* OptionsMenu = new GUI_OptionsMenu;
  JoinGameMenu->next = OptionsMenu;
  GUI_PathsMenu* PathsMenu = new GUI_PathsMenu;
  OptionsMenu->next = PathsMenu;
  GUI_CreatePlayerSelMenu* CreatePlayerMenu = new GUI_CreatePlayerSelMenu;
  PathsMenu->next = CreatePlayerMenu;
  GUI_CreatePlayerMenu* CreatePlayerMenu1 = new GUI_CreatePlayerMenu(GUI_CREATEPLAYER1, 1);
  CreatePlayerMenu->next = CreatePlayerMenu1;
  GUI_CreatePlayerMenu* CreatePlayerMenu2 = new GUI_CreatePlayerMenu(GUI_CREATEPLAYER2, 2);
  CreatePlayerMenu1->next = CreatePlayerMenu2;
  GUI_CreatePlayerMenu* CreatePlayerMenu3 = new GUI_CreatePlayerMenu(GUI_CREATEPLAYER3, 3);
  CreatePlayerMenu2->next = CreatePlayerMenu3;
  GUI_CreatePlayerMenu* CreatePlayerMenu4 = new GUI_CreatePlayerMenu(GUI_CREATEPLAYER4, 4);
  CreatePlayerMenu3->next = CreatePlayerMenu4;
  GUI_CreditsMenu* CreditsMenu = new GUI_CreditsMenu;
  CreatePlayerMenu4->next = CreditsMenu;
  GUI_SoundMenu* SoundMenu = new GUI_SoundMenu;
  CreditsMenu->next = SoundMenu;
  GUI_ResultsMenu* ResultsMenu = new GUI_ResultsMenu;
  SoundMenu->next = ResultsMenu;
  GUI_Help1Menu* Help1Menu = new GUI_Help1Menu;
  ResultsMenu->next = Help1Menu;
  GUI_Help2Menu* Help2Menu = new GUI_Help2Menu;
  Help1Menu->next = Help2Menu;
  GUI_DeletePlayerMenu* DeletePlayerMenu = new GUI_DeletePlayerMenu;
  Help2Menu->next = DeletePlayerMenu;
  GUI_ServerMenu* ServerMenu = new GUI_ServerMenu;
  DeletePlayerMenu->next = ServerMenu;
  GUI_VideoMenu* VideoMenu = new GUI_VideoMenu;
  ServerMenu->next = VideoMenu;
  GUI_ClientMenu* ClientMenu = new GUI_ClientMenu;
  VideoMenu->next = ClientMenu;
  GUI_RedefineKeysMenu* RedefineKeysMenu = new GUI_RedefineKeysMenu;
  ClientMenu->next = RedefineKeysMenu;

  OKD1 = OKDialog1;
  OKD2 = OKDialog2;
  YND = YNDialog;
  
  // register chain of components in
  GUI_System = OKDialog1;

  return true;
}
Exemplo n.º 3
0
/**
 * Shows the game credits.
 */
static void GameLoop_GameCredits(void)
{
	static const uint8 colours[] = {0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0};

	uint16 i;
	uint8 *memory;

	GUI_Mouse_Hide_Safe();

	Widget_SetCurrentWidget(20);

	Sprites_LoadImage("BIGPLAN.CPS", SCREEN_1, g_palette_998A);

	GUI_ClearScreen(SCREEN_0);

	GUI_Screen_Copy(g_curWidgetXBase, g_curWidgetYBase, g_curWidgetXBase, g_curWidgetYBase, g_curWidgetWidth, g_curWidgetHeight, SCREEN_1, SCREEN_0);

	GUI_SetPaletteAnimated(g_palette_998A, 60);

	Music_Play(0);

	GameLoop_Uninit();

	Music_Play(33);

	memory = GFX_Screen_Get_ByIndex(SCREEN_2);

	for (i = 0; i < 256; i++) {
		uint8 loc06;
		uint8 loc04;

		memory[i] = i & 0xFF;

		loc06 = i / 16;
		loc04 = i % 16;

		if (loc06 == 9 && loc04 <= 6) {
			memory[i] = (g_playerHouseID * 16) + loc04 + 144;
		}
	}

	Sprites_LoadImage("MAPPLAN.CPS", SCREEN_1, g_palette_998A);

	GUI_Palette_RemapScreen(g_curWidgetXBase << 3, g_curWidgetYBase, g_curWidgetWidth << 3, g_curWidgetHeight, SCREEN_1, memory);

	GUI_Screen_FadeIn2(g_curWidgetXBase << 3, g_curWidgetYBase, g_curWidgetWidth << 3, g_curWidgetHeight, SCREEN_1, SCREEN_0, 1, false);

	GameCredits_LoadPalette();

	GUI_Mouse_Hide_Safe();

	GUI_InitColors(colours, 0, lengthof(colours) - 1);

	g_fontCharOffset = -1;

	GFX_SetPalette(g_palette1);

	for (;; sleepIdle()) {
		File_ReadBlockFile(String_GenerateFilename("CREDITS"), s_buffer_1832, GFX_Screen_GetSize_ByIndex(SCREEN_3));

		GameCredits_Play(s_buffer_1832, 20, SCREEN_1, SCREEN_2, 6);

		if (Input_Keyboard_NextKey() != 0) break;

		Music_Play(33);
	}

	GUI_SetPaletteAnimated(g_palette2, 60);

	Driver_Music_FadeOut();

	GFX_ClearScreen();
}
Exemplo n.º 4
0
static void GameLoop_PlaySubtitle(uint8 animation)
{
	const HouseAnimation_Subtitle *subtitle;
	uint8 i;
	uint8 colors[16];

	s_var_8068++;

	GameLoop_PlaySoundEffect(animation);

	subtitle = &s_houseAnimation_subtitle[s_houseAnimation_currentSubtitle];

	if (subtitle->stringID == 0xFFFF || subtitle->animationID > animation) return;

	if (s_subtitleActive) {
		if (s_subtitleWait == 0xFFFF) s_subtitleWait = subtitle->waitFadeout;
		if (s_subtitleWait-- != 0) return;

		s_subtitleActive = false;
		s_houseAnimation_currentSubtitle++;
		s_palettePartDirection = PPD_TO_BLACK;

		if (subtitle->paletteFadeout != 0) {
			s_palettePartCount = subtitle->paletteFadeout;

			for (i = 0; i < 18; i++) {
				s_palettePartChange[i] = s_palettePartTarget[i] / s_palettePartCount;
				if (s_palettePartChange[i] == 0) s_palettePartChange[i] = 1;
			}

			return;
		}

		memcpy(s_palettePartChange, s_palettePartTarget, 18);
		s_palettePartCount = 1;
		return;
	}

	if (s_subtitleWait == 0xFFFF) s_subtitleWait = subtitle->waitFadein;
	if (s_subtitleWait-- != 0) return;

	memcpy(s_palettePartTarget, &g_palette1[(144 + (subtitle->colour * 16)) * 3], 18);

	s_subtitleActive = true;

	GUI_DrawFilledRectangle(0, subtitle->top == 85 ? 0 : subtitle->top, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 0);

	if (g_enableVoices != 0 && s_feedback_base_index != 0xFFFF && s_houseAnimation_currentSubtitle != 0 && g_config.language == LANGUAGE_ENGLISH) {
		/* specific code for Intro
		 * @see GameLoop_GameIntroAnimation() */
		uint16 feedback_index = s_feedback_base_index + s_houseAnimation_currentSubtitle;

		Sound_Output_Feedback(feedback_index);

		if (g_feedback[feedback_index].messageId != 0) {
			/* force drawing of subtitle */
			GameLoop_DrawText(String_Get_ByIndex(subtitle->stringID), subtitle->top);
		}
	} else {
		if (subtitle->stringID != STR_NULL) {
			GameLoop_DrawText(String_Get_ByIndex(subtitle->stringID), subtitle->top);
		}
	}

	s_palettePartDirection = PPD_TO_NEW_PALETTE;

	if (subtitle->paletteFadein != 0) {
		s_palettePartCount = subtitle->paletteFadein;

		for (i = 0; i < 18; i++) {
			s_palettePartChange[i] = s_palettePartTarget[i] / s_palettePartCount;
			if (s_palettePartChange[i] == 0) s_palettePartChange[i] = 1;
		}
	} else {
		memcpy(s_palettePartChange, s_palettePartTarget, 18);
		s_palettePartCount = 1;
	}

	if (g_playerHouseID != HOUSE_INVALID || s_houseAnimation_currentSubtitle != 2) return;

	GUI_DrawText_Wrapper(NULL, 0, 0, 0, 0, 0x21);

	GUI_DrawText_Wrapper("Copyright (c) 1992 Westwood Studios, Inc.", 160, 189, 215, 0, 0x112);

	g_fontCharOffset = 0;

	colors[0] = 0;
	for (i = 0; i < 6; i++) colors[i + 1] = 215 + i;

	GUI_InitColors(colors, 0, 15);

	Font_Select(g_fontIntro);
}