[Scummvm-git-logs] scummvm master -> 3f62f198ac9a36e02f59cab5b084677266b4548b

dreammaster dreammaster at scummvm.org
Tue Mar 2 05:12:52 UTC 2021


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
acf3a6e080 AGS: Move overlay.cpp globals to Globals
67d0560a52 AGS: Move fonts.cpp globals to Globals
3f62f198ac AGS: Move Lines global to Globals fontLines


Commit: acf3a6e080c7ffd26e05966f9ef4ae1f628e5a5b
    https://github.com/scummvm/scummvm/commit/acf3a6e080c7ffd26e05966f9ef4ae1f628e5a5b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-03-01T19:52:51-08:00

Commit Message:
AGS: Move overlay.cpp globals to Globals

Changed paths:
    engines/ags/engine/ac/character.cpp
    engines/ags/engine/ac/display.cpp
    engines/ags/engine/ac/draw.cpp
    engines/ags/engine/ac/dynobj/scriptoverlay.cpp
    engines/ags/engine/ac/game.cpp
    engines/ags/engine/ac/global_character.cpp
    engines/ags/engine/ac/global_overlay.cpp
    engines/ags/engine/ac/gui.cpp
    engines/ags/engine/ac/overlay.cpp
    engines/ags/engine/ac/overlay.h
    engines/ags/engine/game/savegame.cpp
    engines/ags/engine/game/savegame_components.cpp
    engines/ags/engine/main/game_run.cpp
    engines/ags/engine/main/update.cpp
    engines/ags/globals.cpp
    engines/ags/globals.h


diff --git a/engines/ags/engine/ac/character.cpp b/engines/ags/engine/ac/character.cpp
index 52f411b6e5..8a4729b83a 100644
--- a/engines/ags/engine/ac/character.cpp
+++ b/engines/ags/engine/ac/character.cpp
@@ -80,24 +80,16 @@ namespace AGS3 {
 using namespace AGS::Shared;
 
 extern int displayed_room, starting_room;
-
-
-
 extern RoomObject *objs;
-
 extern Bitmap *walkable_areas_temp;
 extern IGraphicsDriver *gfxDriver;
 extern Bitmap **actsps;
-extern int is_text_overlay;
 extern int said_speech_line;
 extern int said_text;
 extern int our_eip;
 
-
-
 //--------------------------------
 
-
 CharacterExtras *charextra;
 CharacterInfo *playerchar;
 int32_t _sc_PlayerCharPtr = 0;
@@ -759,7 +751,7 @@ ScriptOverlay *Character_SayBackground(CharacterInfo *chaa, const char *texx) {
 	scOver->borderWidth = 0;
 	scOver->isBackgroundSpeech = 1;
 	int handl = ccRegisterManagedObject(scOver, scOver);
-	screenover[ovri].associatedOverlayHandle = handl;
+	_GP(screenover)[ovri].associatedOverlayHandle = handl;
 
 	return scOver;
 }
@@ -2299,7 +2291,7 @@ void _displayspeech(const char *texx, int aschar, int xx, int yy, int widd, int
 	if ((speakingChar->view < 0) || (speakingChar->view >= _GP(game).numviews))
 		quit("!DisplaySpeech: character has invalid view");
 
-	if (is_text_overlay > 0) {
+	if (_G(is_text_overlay) > 0) {
 		debug_script_warn("DisplaySpeech: speech was already displayed (nested DisplaySpeech, perhaps room script and global script conflict?)");
 		return;
 	}
@@ -2310,9 +2302,9 @@ void _displayspeech(const char *texx, int aschar, int xx, int yy, int widd, int
 
 	if (_GP(play).bgspeech_stay_on_display == 0) {
 		// remove any background speech
-		for (size_t i = 0; i < screenover.size();) {
-			if (screenover[i].timeout > 0)
-				remove_screen_overlay(screenover[i].type);
+		for (size_t i = 0; i < _GP(screenover).size();) {
+			if (_GP(screenover)[i].timeout > 0)
+				remove_screen_overlay(_GP(screenover)[i].type);
 			else
 				i++;
 		}
diff --git a/engines/ags/engine/ac/display.cpp b/engines/ags/engine/ac/display.cpp
index 473c93e55e..0fa620164f 100644
--- a/engines/ags/engine/ac/display.cpp
+++ b/engines/ags/engine/ac/display.cpp
@@ -250,7 +250,7 @@ int _display_main(int xx, int yy, int wii, const char *text, int disp_type, int
 	// we should not delete text_window_ds here, because it is now owned by Overlay
 
 	if (disp_type >= DISPLAYTEXT_NORMALOVERLAY) {
-		return screenover[nse].type;
+		return _GP(screenover)[nse].type;
 	}
 
 	//
@@ -329,10 +329,10 @@ int _display_main(int xx, int yy, int wii, const char *text, int disp_type, int
 			_GP(play).messagetime = 2;
 
 		if (!overlayPositionFixed) {
-			screenover[nse].positionRelativeToScreen = false;
-			VpPoint vpt = _GP(play).GetRoomViewport(0)->ScreenToRoom(screenover[nse].x, screenover[nse].y, false);
-			screenover[nse].x = vpt.first.X;
-			screenover[nse].y = vpt.first.Y;
+			_GP(screenover)[nse].positionRelativeToScreen = false;
+			VpPoint vpt = _GP(play).GetRoomViewport(0)->ScreenToRoom(_GP(screenover)[nse].x, _GP(screenover)[nse].y, false);
+			_GP(screenover)[nse].x = vpt.first.X;
+			_GP(screenover)[nse].y = vpt.first.Y;
 		}
 
 		GameLoopUntilNoOverlay();
diff --git a/engines/ags/engine/ac/draw.cpp b/engines/ags/engine/ac/draw.cpp
index 2b14a1f5d8..2eff167d83 100644
--- a/engines/ags/engine/ac/draw.cpp
+++ b/engines/ags/engine/ac/draw.cpp
@@ -115,7 +115,6 @@ extern int displayed_room;
 extern CharacterExtras *charextra;
 extern CharacterInfo *playerchar;
 extern int eip_guinum;
-extern int is_complete_overlay;
 extern int cur_mode, cur_cursor;
 extern int mouse_frame, mouse_delay;
 extern int lastmx, lastmy;
@@ -1942,7 +1941,7 @@ void draw_gui_and_overlays() {
 		add_thing_to_draw(nullptr, AGSE_PREGUIDRAW, 0, TRANS_RUN_PLUGIN, false);
 
 	// draw overlays, except text boxes and portraits
-	for (const auto &over : screenover) {
+	for (const auto &over : _GP(screenover)) {
 		// complete overlay draw in non-transparent mode
 		if (over.type == OVER_COMPLETE)
 			add_thing_to_draw(over.bmp, over.x, over.y, TRANS_OPAQUE, false);
@@ -2021,7 +2020,7 @@ void draw_gui_and_overlays() {
 	}
 
 	// draw speech and portraits (so that they appear over GUIs)
-	for (const auto &over : screenover) {
+	for (const auto &over : _GP(screenover)) {
 		if (over.type == OVER_TEXTMSG || over.type == OVER_PICTURE) {
 			int tdxp, tdyp;
 			get_overlay_position(over, &tdxp, &tdyp);
@@ -2158,7 +2157,7 @@ void construct_game_scene(bool full_redraw) {
 		_GP(play).UpdateRoomCameras();
 
 	// Stage: room viewports
-	if (_GP(play).screen_is_faded_out == 0 && is_complete_overlay == 0) {
+	if (_GP(play).screen_is_faded_out == 0 && _G(is_complete_overlay) == 0) {
 		if (displayed_room >= 0) {
 			construct_room_view();
 		} else if (!gfxDriver->RequiresFullRedrawEachFrame()) {
diff --git a/engines/ags/engine/ac/dynobj/scriptoverlay.cpp b/engines/ags/engine/ac/dynobj/scriptoverlay.cpp
index 918538a426..673224f4de 100644
--- a/engines/ags/engine/ac/dynobj/scriptoverlay.cpp
+++ b/engines/ags/engine/ac/dynobj/scriptoverlay.cpp
@@ -25,6 +25,7 @@
 #include "ags/engine/ac/overlay.h"
 #include "ags/engine/ac/runtime_defines.h"
 #include "ags/engine/ac/screenoverlay.h"
+#include "ags/globals.h"
 
 namespace AGS3 {
 
@@ -34,7 +35,7 @@ int ScriptOverlay::Dispose(const char *address, bool force) {
 	// with that handle later
 	int overlayIndex = find_overlay_of_type(overlayId);
 	if (overlayIndex >= 0) {
-		screenover[overlayIndex].associatedOverlayHandle = 0;
+		_GP(screenover)[overlayIndex].associatedOverlayHandle = 0;
 	}
 
 	// if this is being removed voluntarily (ie. pointer out of
diff --git a/engines/ags/engine/ac/game.cpp b/engines/ags/engine/ac/game.cpp
index 3771db6864..eb8a0733c4 100644
--- a/engines/ags/engine/ac/game.cpp
+++ b/engines/ags/engine/ac/game.cpp
@@ -124,8 +124,6 @@ extern int mouse_ifacebut_xoffs, mouse_ifacebut_yoffs;
 extern AnimatingGUIButton animbuts[MAX_ANIMATING_BUTTONS];
 extern int numAnimButs;
 
-extern int is_complete_overlay, is_text_overlay;
-
 #if AGS_PLATFORM_OS_IOS || AGS_PLATFORM_OS_ANDROID
 extern int _G(psp_gfx_renderer);
 #endif
@@ -1257,16 +1255,16 @@ void restore_game_ambientsounds(Stream *in, RestoredData &r_data) {
 
 void ReadOverlays_Aligned(Stream *in) {
 	AlignedStream align_s(in, Shared::kAligned_Read);
-	for (auto &over : screenover) {
+	for (auto &over : _GP(screenover)) {
 		over.ReadFromFile(&align_s, 0);
 		align_s.Reset();
 	}
 }
 
 void restore_game_overlays(Stream *in) {
-	screenover.resize(in->ReadInt32());
+	_GP(screenover).resize(in->ReadInt32());
 	ReadOverlays_Aligned(in);
-	for (auto &over : screenover) {
+	for (auto &over : _GP(screenover)) {
 		if (over.hasSerializedBitmap)
 			over.pic = read_serialized_bitmap(in);
 	}
@@ -1603,7 +1601,7 @@ void start_skipping_cutscene() {
 		remove_popup_interface(ifacepopped);
 
 	// if a text message is currently displayed, remove it
-	if (is_text_overlay > 0)
+	if (_G(is_text_overlay) > 0)
 		remove_screen_overlay(OVER_TEXTMSG);
 
 }
diff --git a/engines/ags/engine/ac/global_character.cpp b/engines/ags/engine/ac/global_character.cpp
index 1be04f2ff7..643e5b7ad6 100644
--- a/engines/ags/engine/ac/global_character.cpp
+++ b/engines/ags/engine/ac/global_character.cpp
@@ -544,8 +544,8 @@ void DisplaySpeechAt(int xx, int yy, int wii, int aschar, const char *spch) {
 
 int DisplaySpeechBackground(int charid, const char *speel) {
 	// remove any previous background speech for this character
-	for (size_t i = 0; i < screenover.size();) {
-		if (screenover[i].bgSpeechForChar == charid)
+	for (size_t i = 0; i < _GP(screenover).size();) {
+		if (_GP(screenover)[i].bgSpeechForChar == charid)
 			remove_screen_overlay_index(i);
 		else
 			i++;
@@ -555,8 +555,8 @@ int DisplaySpeechBackground(int charid, const char *speel) {
 		-_GP(game).chars[charid].talkcolor, get_translation(speel), DISPLAYTEXT_NORMALOVERLAY);
 
 	int scid = find_overlay_of_type(ovrl);
-	screenover[scid].bgSpeechForChar = charid;
-	screenover[scid].timeout = GetTextDisplayTime(speel, 1);
+	_GP(screenover)[scid].bgSpeechForChar = charid;
+	_GP(screenover)[scid].timeout = GetTextDisplayTime(speel, 1);
 	return ovrl;
 }
 
diff --git a/engines/ags/engine/ac/global_overlay.cpp b/engines/ags/engine/ac/global_overlay.cpp
index 8914dea296..30fb81ba79 100644
--- a/engines/ags/engine/ac/global_overlay.cpp
+++ b/engines/ags/engine/ac/global_overlay.cpp
@@ -55,7 +55,7 @@ int CreateGraphicOverlay(int xx, int yy, int slott, int trans) {
 	wputblock(screeno, 0, 0, _GP(spriteset)[slott], trans);
 	bool hasAlpha = (_GP(game).SpriteInfos[slott].Flags & SPF_ALPHACHANNEL) != 0;
 	int nse = add_screen_overlay(xx, yy, OVER_CUSTOM, screeno, hasAlpha);
-	return screenover[nse].type;
+	return _GP(screenover)[nse].type;
 }
 
 int CreateTextOverlayCore(int xx, int yy, int wii, int fontid, int text_color, const char *text, int disp_type, int allowShrink) {
@@ -89,8 +89,8 @@ void MoveOverlay(int ovrid, int newx, int newy) {
 
 	int ovri = find_overlay_of_type(ovrid);
 	if (ovri < 0) quit("!MoveOverlay: invalid overlay ID specified");
-	screenover[ovri].x = newx;
-	screenover[ovri].y = newy;
+	_GP(screenover)[ovri].x = newx;
+	_GP(screenover)[ovri].y = newy;
 }
 
 int IsOverlayValid(int ovrid) {
diff --git a/engines/ags/engine/ac/gui.cpp b/engines/ags/engine/ac/gui.cpp
index 65d566bc58..fca9d3750e 100644
--- a/engines/ags/engine/ac/gui.cpp
+++ b/engines/ags/engine/ac/gui.cpp
@@ -570,8 +570,6 @@ void recreate_guibg_image(GUIMain *tehgui) {
 	}
 }
 
-extern int is_complete_overlay;
-
 int gui_get_interactable(int x, int y) {
 	if ((_GP(game).options[OPT_DISABLEOFF] == 3) && (all_buttons_disabled > 0))
 		return -1;
@@ -591,7 +589,7 @@ int gui_on_mouse_move() {
 			if (_GP(guis)[guin].IsInteractableAt(_G(mousex), _G(mousey))) mouse_over_gui = guin;
 
 			if (_GP(guis)[guin].PopupStyle != kGUIPopupMouseY) continue;
-			if (is_complete_overlay > 0) break; // interfaces disabled
+			if (_G(is_complete_overlay) > 0) break; // interfaces disabled
 			//    if (_GP(play).disabled_user_interface>0) break;
 			if (ifacepopped == guin) continue;
 			if (!_GP(guis)[guin].IsVisible()) continue;
diff --git a/engines/ags/engine/ac/overlay.cpp b/engines/ags/engine/ac/overlay.cpp
index a2810573cf..3b238377e4 100644
--- a/engines/ags/engine/ac/overlay.cpp
+++ b/engines/ags/engine/ac/overlay.cpp
@@ -53,9 +53,6 @@ extern int face_talking;
 extern CharacterExtras *charextra;
 extern IGraphicsDriver *gfxDriver;
 
-std::vector<ScreenOverlay> screenover;
-int is_complete_overlay = 0, is_text_overlay = 0;
-
 void Overlay_Remove(ScriptOverlay *sco) {
 	sco->Remove();
 }
@@ -64,8 +61,8 @@ void Overlay_SetText(ScriptOverlay *scover, int wii, int fontid, int text_color,
 	int ovri = find_overlay_of_type(scover->overlayId);
 	if (ovri < 0)
 		quit("!Overlay.SetText: invalid overlay ID specified");
-	int xx = game_to_data_coord(screenover[ovri].x) - scover->borderWidth;
-	int yy = game_to_data_coord(screenover[ovri].y) - scover->borderHeight;
+	int xx = game_to_data_coord(_GP(screenover)[ovri].x) - scover->borderWidth;
+	int yy = game_to_data_coord(_GP(screenover)[ovri].y) - scover->borderHeight;
 
 	RemoveOverlay(scover->overlayId);
 	const int disp_type = scover->overlayId;
@@ -80,7 +77,7 @@ int Overlay_GetX(ScriptOverlay *scover) {
 		quit("!invalid overlay ID specified");
 
 	int tdxp, tdyp;
-	get_overlay_position(screenover[ovri], &tdxp, &tdyp);
+	get_overlay_position(_GP(screenover)[ovri], &tdxp, &tdyp);
 
 	return game_to_data_coord(tdxp);
 }
@@ -90,7 +87,7 @@ void Overlay_SetX(ScriptOverlay *scover, int newx) {
 	if (ovri < 0)
 		quit("!invalid overlay ID specified");
 
-	screenover[ovri].x = data_to_game_coord(newx);
+	_GP(screenover)[ovri].x = data_to_game_coord(newx);
 }
 
 int Overlay_GetY(ScriptOverlay *scover) {
@@ -99,7 +96,7 @@ int Overlay_GetY(ScriptOverlay *scover) {
 		quit("!invalid overlay ID specified");
 
 	int tdxp, tdyp;
-	get_overlay_position(screenover[ovri], &tdxp, &tdyp);
+	get_overlay_position(_GP(screenover)[ovri], &tdxp, &tdyp);
 
 	return game_to_data_coord(tdyp);
 }
@@ -109,7 +106,7 @@ void Overlay_SetY(ScriptOverlay *scover, int newy) {
 	if (ovri < 0)
 		quit("!invalid overlay ID specified");
 
-	screenover[ovri].y = data_to_game_coord(newy);
+	_GP(screenover)[ovri].y = data_to_game_coord(newy);
 }
 
 int Overlay_GetValid(ScriptOverlay *scover) {
@@ -144,8 +141,8 @@ ScriptOverlay *Overlay_CreateTextual(int x, int y, int width, int font, int colo
 	sco->overlayId = CreateTextOverlayCore(x, y, width, font, colour, text, DISPLAYTEXT_NORMALOVERLAY, 0);
 
 	int ovri = find_overlay_of_type(sco->overlayId);
-	sco->borderWidth = game_to_data_coord(screenover[ovri].x - x);
-	sco->borderHeight = game_to_data_coord(screenover[ovri].y - y);
+	sco->borderWidth = game_to_data_coord(_GP(screenover)[ovri].x - x);
+	sco->borderHeight = game_to_data_coord(_GP(screenover)[ovri].y - y);
 	sco->isBackgroundSpeech = 0;
 
 	ccRegisterManagedObject(sco, sco);
@@ -167,11 +164,11 @@ void dispose_overlay(ScreenOverlay &over) {
 }
 
 void remove_screen_overlay_index(size_t over_idx) {
-	ScreenOverlay &over = screenover[over_idx];
+	ScreenOverlay &over = _GP(screenover)[over_idx];
 	dispose_overlay(over);
-	if (over.type == OVER_COMPLETE) is_complete_overlay--;
-	if (over.type == OVER_TEXTMSG) is_text_overlay--;
-	screenover.erase(screenover.begin() + over_idx);
+	if (over.type == OVER_COMPLETE) _G(is_complete_overlay)--;
+	if (over.type == OVER_TEXTMSG) _G(is_text_overlay)--;
+	_GP(screenover).erase(_GP(screenover).begin() + over_idx);
 	// if an overlay before the sierra-style speech one is removed,
 	// update the index
 	if (face_talking >= 0 && (size_t)face_talking > over_idx)
@@ -179,8 +176,8 @@ void remove_screen_overlay_index(size_t over_idx) {
 }
 
 void remove_screen_overlay(int type) {
-	for (size_t i = 0; i < screenover.size();) {
-		if (type < 0 || screenover[i].type == type)
+	for (size_t i = 0; i < _GP(screenover).size();) {
+		if (type < 0 || _GP(screenover)[i].type == type)
 			remove_screen_overlay_index(i);
 		else
 			i++;
@@ -188,8 +185,8 @@ void remove_screen_overlay(int type) {
 }
 
 int find_overlay_of_type(int type) {
-	for (size_t i = 0; i < screenover.size(); ++i) {
-		if (screenover[i].type == type) return i;
+	for (size_t i = 0; i < _GP(screenover).size(); ++i) {
+		if (_GP(screenover)[i].type == type) return i;
 	}
 	return -1;
 }
@@ -199,11 +196,11 @@ size_t add_screen_overlay(int x, int y, int type, Bitmap *piccy, bool alphaChann
 }
 
 size_t add_screen_overlay(int x, int y, int type, Shared::Bitmap *piccy, int pic_offx, int pic_offy, bool alphaChannel) {
-	if (type == OVER_COMPLETE) is_complete_overlay++;
-	if (type == OVER_TEXTMSG) is_text_overlay++;
+	if (type == OVER_COMPLETE) _G(is_complete_overlay)++;
+	if (type == OVER_TEXTMSG) _G(is_text_overlay)++;
 	if (type == OVER_CUSTOM) {
 		// find an unused custom ID; TODO: find a better approach!
-		for (int id = OVER_CUSTOM + 1; id < (int)screenover.size() + OVER_CUSTOM + 1; ++id) {
+		for (int id = OVER_CUSTOM + 1; id < (int)_GP(screenover).size() + OVER_CUSTOM + 1; ++id) {
 			if (find_overlay_of_type(id) == -1) {
 				type = id;
 				break;
@@ -223,8 +220,8 @@ size_t add_screen_overlay(int x, int y, int type, Shared::Bitmap *piccy, int pic
 	over.associatedOverlayHandle = 0;
 	over.hasAlphaChannel = alphaChannel;
 	over.positionRelativeToScreen = true;
-	screenover.push_back(over);
-	return screenover.size() - 1;
+	_GP(screenover).push_back(over);
+	return _GP(screenover).size() - 1;
 }
 
 
@@ -272,7 +269,7 @@ void get_overlay_position(const ScreenOverlay &over, int *x, int *y) {
 }
 
 void recreate_overlay_ddbs() {
-	for (auto &over : screenover) {
+	for (auto &over : _GP(screenover)) {
 		if (over.bmp)
 			gfxDriver->DestroyDDB(over.bmp);
 		if (over.pic)
diff --git a/engines/ags/engine/ac/overlay.h b/engines/ags/engine/ac/overlay.h
index 429da7ace8..e2000a1cf2 100644
--- a/engines/ags/engine/ac/overlay.h
+++ b/engines/ags/engine/ac/overlay.h
@@ -56,11 +56,6 @@ size_t add_screen_overlay(int x, int y, int type, Shared::Bitmap *piccy, int pic
 void remove_screen_overlay_index(size_t over_idx);
 void recreate_overlay_ddbs();
 
-extern int is_complete_overlay;
-extern int is_text_overlay; // blocking text overlay on screen
-
-extern std::vector<ScreenOverlay> screenover;
-
 } // namespace AGS3
 
 #endif
diff --git a/engines/ags/engine/game/savegame.cpp b/engines/ags/engine/game/savegame.cpp
index 97686959dd..9155f2f469 100644
--- a/engines/ags/engine/game/savegame.cpp
+++ b/engines/ags/engine/game/savegame.cpp
@@ -332,8 +332,8 @@ void DoBeforeRestore(PreservedParams &pp) {
 	delete raw_saved_screen;
 	raw_saved_screen = nullptr;
 	remove_screen_overlay(-1);
-	is_complete_overlay = 0;
-	is_text_overlay = 0;
+	_G(is_complete_overlay) = 0;
+	_G(is_text_overlay) = 0;
 
 	// cleanup dynamic sprites
 	// NOTE: sprite 0 is a special constant sprite that cannot be dynamic
diff --git a/engines/ags/engine/game/savegame_components.cpp b/engines/ags/engine/game/savegame_components.cpp
index ffa0b75f45..e78300b3d2 100644
--- a/engines/ags/engine/game/savegame_components.cpp
+++ b/engines/ags/engine/game/savegame_components.cpp
@@ -757,8 +757,8 @@ HSaveError ReadDynamicSprites(PStream in, int32_t cmp_ver, const PreservedParams
 }
 
 HSaveError WriteOverlays(PStream out) {
-	out->WriteInt32(screenover.size());
-	for (const auto &over : screenover) {
+	out->WriteInt32(_GP(screenover).size());
+	for (const auto &over : _GP(screenover)) {
 		over.WriteToFile(out.get());
 		serialize_bitmap(over.pic, out.get());
 	}
@@ -773,7 +773,7 @@ HSaveError ReadOverlays(PStream in, int32_t cmp_ver, const PreservedParams &pp,
 		over.ReadFromFile(in.get(), cmp_ver);
 		if (over.hasSerializedBitmap)
 			over.pic = read_serialized_bitmap(in.get());
-		screenover.push_back(over);
+		_GP(screenover).push_back(over);
 	}
 	return err;
 }
diff --git a/engines/ags/engine/main/game_run.cpp b/engines/ags/engine/main/game_run.cpp
index 72bd3cbc66..7cf0d0cc33 100644
--- a/engines/ags/engine/main/game_run.cpp
+++ b/engines/ags/engine/main/game_run.cpp
@@ -77,7 +77,6 @@ extern AnimatingGUIButton animbuts[MAX_ANIMATING_BUTTONS];
 extern int numAnimButs;
 extern int mouse_on_iface;   // mouse cursor is over this interface
 extern int ifacepopped;
-extern int is_text_overlay;
 extern int proper_exit, our_eip;
 extern int displayed_room, starting_room, in_new_room, new_room_was;
 
@@ -249,7 +248,7 @@ static void check_mouse_controls() {
 			_GP(play).wait_counter = 0;
 			_GP(play).wait_skipped_by = SKIP_MOUSECLICK;
 			_GP(play).wait_skipped_by_data = mbut;
-		} else if (is_text_overlay > 0) {
+		} else if (_G(is_text_overlay) > 0) {
 			if (_GP(play).cant_skip_speech & SKIP_MOUSECLICK)
 				remove_screen_overlay(OVER_TEXTMSG);
 		} else if (!IsInterfaceEnabled()); // blocking cutscene, ignore mouse
@@ -389,7 +388,7 @@ static void check_keyboard_controls() {
 	}
 
 	// skip speech if desired by Speech.SkipStyle
-	if ((is_text_overlay > 0) && (_GP(play).cant_skip_speech & SKIP_KEYPRESS)) {
+	if ((_G(is_text_overlay) > 0) && (_GP(play).cant_skip_speech & SKIP_KEYPRESS)) {
 		// only allow a key to remove the overlay if the icon bar isn't up
 		if (IsGamePaused() == 0) {
 			// check if it requires a specific keypress
@@ -471,7 +470,7 @@ static void check_keyboard_controls() {
 	// }
 
 	if (kgn == eAGSKeyCodeAltV && (::AGS::g_events->getModifierFlags() & KB_CTRL_FLAG)
-			&& (_GP(play).wait_counter < 1) && (is_text_overlay == 0) && (restrict_until == 0)) {
+			&& (_GP(play).wait_counter < 1) && (_G(is_text_overlay) == 0) && (restrict_until == 0)) {
 		// make sure we can't interrupt a Wait()
 		// and desync the music to cutscene
 		_GP(play).debug_mode++;
@@ -846,7 +845,7 @@ static int ShouldStayInWaitMode() {
 		const int *wkptr = (const int *)user_disabled_data;
 		if (wkptr[0] < 0) retval = 0;
 	} else if (restrict_until == UNTIL_NOOVERLAY) {
-		if (is_text_overlay < 1) retval = 0;
+		if (_G(is_text_overlay) < 1) retval = 0;
 	} else if (restrict_until == UNTIL_INTIS0) {
 		const int *wkptr = (const int *)user_disabled_data;
 		if (wkptr[0] == 0) retval = 0;
diff --git a/engines/ags/engine/main/update.cpp b/engines/ags/engine/main/update.cpp
index dba14f843c..d36f65c7cf 100644
--- a/engines/ags/engine/main/update.cpp
+++ b/engines/ags/engine/main/update.cpp
@@ -70,7 +70,6 @@ extern int facetalkBlinkLoop;
 extern bool facetalk_qfg4_override_placement_x, facetalk_qfg4_override_placement_y;
 extern SpeechLipSyncLine *splipsync;
 extern int numLipLines, curLipLine, curLipLinePhoneme;
-extern int is_text_overlay;
 extern IGraphicsDriver *gfxDriver;
 
 int do_movelist_move(int16_t *mlnum, int32_t *xx, int32_t *yy) {
@@ -243,10 +242,10 @@ void update_following_exactly_characters(int &numSheep, int *followingAsSheep) {
 
 void update_overlay_timers() {
 	// update overlay timers
-	for (size_t i = 0; i < screenover.size();) {
-		if (screenover[i].timeout > 0) {
-			screenover[i].timeout--;
-			if (screenover[i].timeout == 0) {
+	for (size_t i = 0; i < _GP(screenover).size();) {
+		if (_GP(screenover)[i].timeout > 0) {
+			_GP(screenover)[i].timeout--;
+			if (_GP(screenover)[i].timeout == 0) {
 				remove_screen_overlay_index(i);
 				continue;
 			}
@@ -394,8 +393,8 @@ void update_sierra_speech() {
 			updatedFrame |= 1;
 		}
 
-		// is_text_overlay might be 0 if it was only just destroyed this loop
-		if ((updatedFrame) && (is_text_overlay > 0)) {
+		// _G(is_text_overlay) might be 0 if it was only just destroyed this loop
+		if ((updatedFrame) && (_G(is_text_overlay) > 0)) {
 
 			if (updatedFrame & 1)
 				CheckViewFrame(facetalkview, facetalkloop, facetalkframe);
@@ -414,14 +413,14 @@ void update_sierra_speech() {
 				if (facetalk_qfg4_override_placement_y) {
 					view_frame_y = _GP(play).speech_portrait_y;
 				} else {
-					view_frame_y = (screenover[face_talking].pic->GetHeight() / 2) - (_GP(game).SpriteInfos[thisPic].Height / 2);
+					view_frame_y = (_GP(screenover)[face_talking].pic->GetHeight() / 2) - (_GP(game).SpriteInfos[thisPic].Height / 2);
 				}
-				screenover[face_talking].pic->Clear(0);
+				_GP(screenover)[face_talking].pic->Clear(0);
 			} else {
-				screenover[face_talking].pic->ClearTransparent();
+				_GP(screenover)[face_talking].pic->ClearTransparent();
 			}
 
-			Bitmap *frame_pic = screenover[face_talking].pic;
+			Bitmap *frame_pic = _GP(screenover)[face_talking].pic;
 			const ViewFrame *face_vf = &_G(views)[facetalkview].loops[facetalkloop].frames[facetalkframe];
 			bool face_has_alpha = (_GP(game).SpriteInfos[face_vf->pic].Flags & SPF_ALPHACHANNEL) != 0;
 			DrawViewFrame(frame_pic, face_vf, view_frame_x, view_frame_y);
@@ -433,7 +432,7 @@ void update_sierra_speech() {
 				DrawViewFrame(frame_pic, blink_vf, view_frame_x, view_frame_y, face_has_alpha);
 			}
 
-			gfxDriver->UpdateDDBFromBitmap(screenover[face_talking].bmp, screenover[face_talking].pic, face_has_alpha);
+			gfxDriver->UpdateDDBFromBitmap(_GP(screenover)[face_talking].bmp, _GP(screenover)[face_talking].pic, face_has_alpha);
 		}  // end if updatedFrame
 	}
 }
diff --git a/engines/ags/globals.cpp b/engines/ags/globals.cpp
index a9c0d268e2..b12b18b347 100644
--- a/engines/ags/globals.cpp
+++ b/engines/ags/globals.cpp
@@ -28,6 +28,7 @@
 #include "ags/engine/ac/draw.h"
 #include "ags/engine/ac/gamestate.h"
 #include "ags/engine/ac/roomstatus.h"
+#include "ags/engine/ac/screenoverlay.h"
 #include "ags/engine/ac/spritelistentry.h"
 #include "ags/engine/ac/dynobj/cc_dialog.h"
 #include "ags/engine/ac/dynobj/cc_guiobject.h"
@@ -91,6 +92,9 @@ Globals::Globals() {
 	_scrInv = new ScriptInvItem[MAX_INV];
 	_objcache = new ObjectCache[MAX_ROOM_OBJECTS];
 
+	// overlay.cpp globals
+	_screenover = new std::vector<ScreenOverlay>();
+
 	// script.cpp
 	_scripts = new ExecutingScript[MAX_SCRIPT_AT_ONCE];
 	_gamescript = new PScript();
@@ -143,6 +147,9 @@ Globals::~Globals() {
 	delete[] _scrInv;
 	delete[] _objcache;
 
+	// overlay.cpp
+	delete _screenover;
+
 	// script.cpp
 	delete[] _scripts;
 	delete _gamescript;
diff --git a/engines/ags/globals.h b/engines/ags/globals.h
index 788aa0e6cb..8b6aa1ed1e 100644
--- a/engines/ags/globals.h
+++ b/engines/ags/globals.h
@@ -63,6 +63,7 @@ struct NonBlockingScriptFunction;
 struct RoomCameraDrawData;
 struct RoomStatus;
 struct RuntimeScriptValue;
+struct ScreenOverlay;
 struct ScriptDialog;
 struct ScriptGUI;
 struct ScriptHotspot;
@@ -243,6 +244,16 @@ public:
 
 	/**@}*/
 
+	/**
+	 * \defgroup overlay globals
+	 * @{
+	 */
+
+	std::vector<ScreenOverlay> *_screenover;
+	int _is_complete_overlay = 0, _is_text_overlay = 0;
+
+	/**@}*/
+
 	/**
 	 * \defgroup quit globals
 	 * @{


Commit: 67d0560a523b5bb7e7569b4116e8de95dcd628fe
    https://github.com/scummvm/scummvm/commit/67d0560a523b5bb7e7569b4116e8de95dcd628fe
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-03-01T20:52:53-08:00

Commit Message:
AGS: Move fonts.cpp globals to Globals

Changed paths:
    engines/ags/globals.cpp
    engines/ags/globals.h
    engines/ags/shared/ac/gamestructdefines.h
    engines/ags/shared/font/agsfontrenderer.h
    engines/ags/shared/font/fonts.cpp
    engines/ags/shared/font/fonts.h


diff --git a/engines/ags/globals.cpp b/engines/ags/globals.cpp
index b12b18b347..b56b9fb6b9 100644
--- a/engines/ags/globals.cpp
+++ b/engines/ags/globals.cpp
@@ -24,6 +24,9 @@
 #include "ags/shared/ac/gamesetupstruct.h"
 #include "ags/shared/ac/spritecache.h"
 #include "ags/shared/debugging/debugmanager.h"
+#include "ags/shared/font/fonts.h"
+#include "ags/shared/font/ttffontrenderer.h"
+#include "ags/shared/font/wfnfontrenderer.h"
 #include "ags/shared/game/roomstruct.h"
 #include "ags/engine/ac/draw.h"
 #include "ags/engine/ac/gamestate.h"
@@ -68,6 +71,11 @@ Globals::Globals() {
 	_sprlist = new std::vector<SpriteListEntry>();
 	_thingsToDrawList = new std::vector<SpriteListEntry>();
 
+	// _GP(fonts).cpp globals
+	_fonts = new std::vector<AGS::Shared::Font>();
+	_ttfRenderer = new TTFFontRenderer();
+	_wfnRenderer = new WFNFontRenderer();
+
 	// game.cpp globals
 	_ccDynamicGUIObject = new CCGUIObject();
 	_ccDynamicCharacter = new CCCharacter();
@@ -123,6 +131,11 @@ Globals::~Globals() {
 	// debug.cpp
 	delete _DbgMgr;
 
+	// _GP(fonts).cpp
+	delete _fonts;
+	delete _ttfRenderer;
+	delete _wfnRenderer;
+
 	// game.cpp
 	delete _ccDynamicGUIObject;
 	delete _ccDynamicCharacter;
diff --git a/engines/ags/globals.h b/engines/ags/globals.h
index 8b6aa1ed1e..38aba72b0b 100644
--- a/engines/ags/globals.h
+++ b/engines/ags/globals.h
@@ -38,12 +38,18 @@ using Version = AGS::Shared::Version;
 
 namespace AGS {
 namespace Shared {
+
 class Bitmap;
 class DebugManager;
+struct Font;
 class RoomStruct;
+
 } // namespace Shared
 } // namespace AGS
 
+class TTFFontRenderer;
+class WFNFontRenderer;
+
 struct CCAudioChannel;
 struct CCAudioClip;
 struct CCCharacter;
@@ -55,11 +61,14 @@ struct ccInstance;
 struct CCInventory;
 struct CCObject;
 struct CCRegion;
+struct CharacterCache;
 struct ExecutingScript;
 struct GameSetupStruct;
 struct GameState;
 struct IAGSEditorDebugger;
+struct MoveList;
 struct NonBlockingScriptFunction;
+struct ObjectCache;
 struct RoomCameraDrawData;
 struct RoomStatus;
 struct RuntimeScriptValue;
@@ -74,9 +83,6 @@ struct ScriptString;
 struct ScriptSystem;
 struct SpriteListEntry;
 struct ViewStruct;
-struct CharacterCache;
-struct ObjectCache;
-struct MoveList;
 
 class SpriteCache;
 
@@ -134,6 +140,16 @@ public:
 
 	/**@}*/
 
+	/**
+	 * \defgroup fonts globals
+	 * @{
+	 */
+
+	std::vector<AGS::Shared::Font> *_fonts;
+	TTFFontRenderer *_ttfRenderer;
+	WFNFontRenderer *_wfnRenderer;
+
+	/**@}*/
 
 	/**
 	 * \defgroup game globals
diff --git a/engines/ags/shared/ac/gamestructdefines.h b/engines/ags/shared/ac/gamestructdefines.h
index 367796aa43..483552bb9f 100644
--- a/engines/ags/shared/ac/gamestructdefines.h
+++ b/engines/ags/shared/ac/gamestructdefines.h
@@ -235,21 +235,21 @@ struct FontInfo {
 	};
 
 	// General font's loading and rendering flags
-	uint32_t      Flags;
+	uint32_t      Flags = 0;
 	// Font size, in points (basically means pixels in AGS)
-	int           SizePt;
+	int           SizePt = 0;
 	// Factor to multiply base font size by
-	int           SizeMultiplier;
+	int           SizeMultiplier = 0;
 	// Outlining font index, or auto-outline flag
-	char          Outline;
+	char          Outline = 0;
 	// Custom vertical render offset, used mainly for fixing broken fonts
-	int           YOffset;
+	int           YOffset = 0;
 	// custom line spacing between two lines of text (0 = use font height)
-	int           LineSpacing;
+	int           LineSpacing = 0;
 	// When automatic outlining, thickness of the outline (0 = use legacy thickness)
-	int           AutoOutlineThickness;
+	int           AutoOutlineThickness = 0;
 	// When automatic outlining, style of the outline
-	AutoOutlineStyle AutoOutlineStyle;
+	AutoOutlineStyle AutoOutlineStyle = kRounded;
 
 	FontInfo();
 };
diff --git a/engines/ags/shared/font/agsfontrenderer.h b/engines/ags/shared/font/agsfontrenderer.h
index 49d1cf55db..3e329ba0af 100644
--- a/engines/ags/shared/font/agsfontrenderer.h
+++ b/engines/ags/shared/font/agsfontrenderer.h
@@ -45,7 +45,7 @@ protected:
 };
 
 // Font render params, mainly for dealing with various compatibility issues and
-// broken fonts. NOTE: currently left empty as a result of rewrite, but may be
+// broken _GP(fonts). NOTE: currently left empty as a result of rewrite, but may be
 // used again in the future.
 struct FontRenderParams {
 	// Font's render multiplier
diff --git a/engines/ags/shared/font/fonts.cpp b/engines/ags/shared/font/fonts.cpp
index b45081e824..b9ebb2bdca 100644
--- a/engines/ags/shared/font/fonts.cpp
+++ b/engines/ags/shared/font/fonts.cpp
@@ -30,6 +30,7 @@
 #include "ags/shared/gfx/bitmap.h"
 #include "ags/shared/gui/guidefines.h" // MAXLINE
 #include "ags/shared/util/string_utils.h"
+#include "ags/globals.h"
 
 namespace AGS3 {
 
@@ -40,26 +41,13 @@ using namespace AGS::Shared;
 namespace AGS {
 namespace Shared {
 
-struct Font {
-	IAGSFontRenderer *Renderer;
-	IAGSFontRenderer2 *Renderer2;
-	FontInfo            Info;
-
-	Font();
-};
-
 Font::Font()
 	: Renderer(nullptr)
 	, Renderer2(nullptr) {
 }
 
-} // Common
-} // AGS
-
-static std::vector<Font> fonts;
-static TTFFontRenderer ttfRenderer;
-static WFNFontRenderer wfnRenderer;
-
+} // namespace Shared
+} // namespace AGS
 
 FontInfo::FontInfo()
 	: Flags(0)
@@ -84,106 +72,106 @@ void shutdown_font_renderer() {
 }
 
 void adjust_y_coordinate_for_text(int *ypos, size_t fontnum) {
-	if (fontnum >= fonts.size() || !fonts[fontnum].Renderer)
+	if (fontnum >= _GP(fonts).size() || !_GP(fonts)[fontnum].Renderer)
 		return;
-	fonts[fontnum].Renderer->AdjustYCoordinateForFont(ypos, fontnum);
+	_GP(fonts)[fontnum].Renderer->AdjustYCoordinateForFont(ypos, fontnum);
 }
 
 bool font_first_renderer_loaded() {
-	return fonts.size() > 0 && fonts[0].Renderer != nullptr;
+	return _GP(fonts).size() > 0 && _GP(fonts)[0].Renderer != nullptr;
 }
 
 bool is_font_loaded(size_t fontNumber) {
-	return fontNumber < fonts.size() && fonts[fontNumber].Renderer != nullptr;;
+	return fontNumber < _GP(fonts).size() && _GP(fonts)[fontNumber].Renderer != nullptr;;
 }
 
 IAGSFontRenderer *font_replace_renderer(size_t fontNumber, IAGSFontRenderer *renderer) {
-	if (fontNumber >= fonts.size())
+	if (fontNumber >= _GP(fonts).size())
 		return nullptr;
-	IAGSFontRenderer *oldRender = fonts[fontNumber].Renderer;
-	fonts[fontNumber].Renderer = renderer;
-	fonts[fontNumber].Renderer2 = nullptr;
+	IAGSFontRenderer *oldRender = _GP(fonts)[fontNumber].Renderer;
+	_GP(fonts)[fontNumber].Renderer = renderer;
+	_GP(fonts)[fontNumber].Renderer2 = nullptr;
 	return oldRender;
 }
 
 bool is_bitmap_font(size_t fontNumber) {
-	if (fontNumber >= fonts.size() || !fonts[fontNumber].Renderer2)
+	if (fontNumber >= _GP(fonts).size() || !_GP(fonts)[fontNumber].Renderer2)
 		return false;
-	return fonts[fontNumber].Renderer2->IsBitmapFont();
+	return _GP(fonts)[fontNumber].Renderer2->IsBitmapFont();
 }
 
 bool font_supports_extended_characters(size_t fontNumber) {
-	if (fontNumber >= fonts.size() || !fonts[fontNumber].Renderer)
+	if (fontNumber >= _GP(fonts).size() || !_GP(fonts)[fontNumber].Renderer)
 		return false;
-	return fonts[fontNumber].Renderer->SupportsExtendedCharacters(fontNumber);
+	return _GP(fonts)[fontNumber].Renderer->SupportsExtendedCharacters(fontNumber);
 }
 
 void ensure_text_valid_for_font(char *text, size_t fontnum) {
-	if (fontnum >= fonts.size() || !fonts[fontnum].Renderer)
+	if (fontnum >= _GP(fonts).size() || !_GP(fonts)[fontnum].Renderer)
 		return;
-	fonts[fontnum].Renderer->EnsureTextValidForFont(text, fontnum);
+	_GP(fonts)[fontnum].Renderer->EnsureTextValidForFont(text, fontnum);
 }
 
 int get_font_scaling_mul(size_t fontNumber) {
-	if (fontNumber >= fonts.size() || !fonts[fontNumber].Renderer)
+	if (fontNumber >= _GP(fonts).size() || !_GP(fonts)[fontNumber].Renderer)
 		return 0;
-	return fonts[fontNumber].Info.SizeMultiplier;
+	return _GP(fonts)[fontNumber].Info.SizeMultiplier;
 }
 
 int wgettextwidth(const char *texx, size_t fontNumber) {
-	if (fontNumber >= fonts.size() || !fonts[fontNumber].Renderer)
+	if (fontNumber >= _GP(fonts).size() || !_GP(fonts)[fontNumber].Renderer)
 		return 0;
-	return fonts[fontNumber].Renderer->GetTextWidth(texx, fontNumber);
+	return _GP(fonts)[fontNumber].Renderer->GetTextWidth(texx, fontNumber);
 }
 
 int wgettextheight(const char *text, size_t fontNumber) {
-	if (fontNumber >= fonts.size() || !fonts[fontNumber].Renderer)
+	if (fontNumber >= _GP(fonts).size() || !_GP(fonts)[fontNumber].Renderer)
 		return 0;
-	return fonts[fontNumber].Renderer->GetTextHeight(text, fontNumber);
+	return _GP(fonts)[fontNumber].Renderer->GetTextHeight(text, fontNumber);
 }
 
 int get_font_outline(size_t font_number) {
-	if (font_number >= fonts.size())
+	if (font_number >= _GP(fonts).size())
 		return FONT_OUTLINE_NONE;
-	return fonts[font_number].Info.Outline;
+	return _GP(fonts)[font_number].Info.Outline;
 }
 
 int get_font_outline_thickness(size_t font_number) {
-	if (font_number >= fonts.size())
+	if (font_number >= _GP(fonts).size())
 		return 0;
-	return fonts[font_number].Info.AutoOutlineThickness;
+	return _GP(fonts)[font_number].Info.AutoOutlineThickness;
 }
 
 void set_font_outline(size_t font_number, int outline_type) {
-	if (font_number >= fonts.size())
+	if (font_number >= _GP(fonts).size())
 		return;
-	fonts[font_number].Info.Outline = FONT_OUTLINE_AUTO;
+	_GP(fonts)[font_number].Info.Outline = FONT_OUTLINE_AUTO;
 }
 
 int getfontheight(size_t fontNumber) {
-	if (fontNumber >= fonts.size() || !fonts[fontNumber].Renderer)
+	if (fontNumber >= _GP(fonts).size() || !_GP(fonts)[fontNumber].Renderer)
 		return 0;
 	// There is no explicit method for getting maximal possible height of any
 	// random font renderer at the moment; the implementations of GetTextHeight
 	// are allowed to return varied results depending on the text parameter.
 	// We use special line of text to get more or less reliable font height.
 	const char *height_test_string = "ZHwypgfjqhkilIK";
-	return fonts[fontNumber].Renderer->GetTextHeight(height_test_string, fontNumber);
+	return _GP(fonts)[fontNumber].Renderer->GetTextHeight(height_test_string, fontNumber);
 }
 
 int getfontlinespacing(size_t fontNumber) {
-	if (fontNumber >= fonts.size())
+	if (fontNumber >= _GP(fonts).size())
 		return 0;
-	int spacing = fonts[fontNumber].Info.LineSpacing;
+	int spacing = _GP(fonts)[fontNumber].Info.LineSpacing;
 	// If the spacing parameter is not provided, then return default
 	// spacing, that is font's height.
 	return spacing > 0 ? spacing : getfontheight(fontNumber);
 }
 
 bool use_default_linespacing(size_t fontNumber) {
-	if (fontNumber >= fonts.size())
+	if (fontNumber >= _GP(fonts).size())
 		return false;
-	return fonts[fontNumber].Info.LineSpacing == 0;
+	return _GP(fonts)[fontNumber].Info.LineSpacing == 0;
 }
 
 // Project-dependent implementation
@@ -302,48 +290,48 @@ size_t split_lines(const char *todis, SplitLines &lines, int wii, int fonnt, siz
 }
 
 void wouttextxy(Shared::Bitmap *ds, int xxx, int yyy, size_t fontNumber, color_t text_color, const char *texx) {
-	if (fontNumber >= fonts.size())
+	if (fontNumber >= _GP(fonts).size())
 		return;
-	yyy += fonts[fontNumber].Info.YOffset;
+	yyy += _GP(fonts)[fontNumber].Info.YOffset;
 	if (yyy > ds->GetClip().Bottom)
 		return;                   // each char is clipped but this speeds it up
 
-	if (fonts[fontNumber].Renderer != nullptr) {
-		fonts[fontNumber].Renderer->RenderText(texx, fontNumber, (BITMAP *)ds->GetAllegroBitmap(), xxx, yyy, text_color);
+	if (_GP(fonts)[fontNumber].Renderer != nullptr) {
+		_GP(fonts)[fontNumber].Renderer->RenderText(texx, fontNumber, (BITMAP *)ds->GetAllegroBitmap(), xxx, yyy, text_color);
 	}
 }
 
 void set_fontinfo(size_t fontNumber, const FontInfo &finfo) {
-	if (fontNumber < fonts.size() && fonts[fontNumber].Renderer)
-		fonts[fontNumber].Info = finfo;
+	if (fontNumber < _GP(fonts).size() && _GP(fonts)[fontNumber].Renderer)
+		_GP(fonts)[fontNumber].Info = finfo;
 }
 
 // Loads a font from disk
 bool wloadfont_size(size_t fontNumber, const FontInfo &font_info) {
-	if (fonts.size() <= fontNumber)
-		fonts.resize(fontNumber + 1);
+	if (_GP(fonts).size() <= fontNumber)
+		_GP(fonts).resize(fontNumber + 1);
 	else
 		wfreefont(fontNumber);
 	FontRenderParams params;
 	params.SizeMultiplier = font_info.SizeMultiplier;
 
-	if (ttfRenderer.LoadFromDiskEx(fontNumber, font_info.SizePt, &params)) {
-		fonts[fontNumber].Renderer = &ttfRenderer;
-		fonts[fontNumber].Renderer2 = &ttfRenderer;
-	} else if (wfnRenderer.LoadFromDiskEx(fontNumber, font_info.SizePt, &params)) {
-		fonts[fontNumber].Renderer = &wfnRenderer;
-		fonts[fontNumber].Renderer2 = &wfnRenderer;
+	if (_GP(ttfRenderer).LoadFromDiskEx(fontNumber, font_info.SizePt, &params)) {
+		_GP(fonts)[fontNumber].Renderer = &_GP(ttfRenderer);
+		_GP(fonts)[fontNumber].Renderer2 = &_GP(ttfRenderer);
+	} else if (_GP(wfnRenderer).LoadFromDiskEx(fontNumber, font_info.SizePt, &params)) {
+		_GP(fonts)[fontNumber].Renderer = &_GP(wfnRenderer);
+		_GP(fonts)[fontNumber].Renderer2 = &_GP(wfnRenderer);
 	}
 
-	if (fonts[fontNumber].Renderer) {
-		fonts[fontNumber].Info = font_info;
+	if (_GP(fonts)[fontNumber].Renderer) {
+		_GP(fonts)[fontNumber].Info = font_info;
 		return true;
 	}
 	return false;
 }
 
 void wgtprintf(Shared::Bitmap *ds, int xxx, int yyy, size_t fontNumber, color_t text_color, char *fmt, ...) {
-	if (fontNumber >= fonts.size())
+	if (fontNumber >= _GP(fonts).size())
 		return;
 
 	char tbuffer[2000];
@@ -356,21 +344,21 @@ void wgtprintf(Shared::Bitmap *ds, int xxx, int yyy, size_t fontNumber, color_t
 }
 
 void wfreefont(size_t fontNumber) {
-	if (fontNumber >= fonts.size())
+	if (fontNumber >= _GP(fonts).size())
 		return;
 
-	if (fonts[fontNumber].Renderer != nullptr)
-		fonts[fontNumber].Renderer->FreeMemory(fontNumber);
+	if (_GP(fonts)[fontNumber].Renderer != nullptr)
+		_GP(fonts)[fontNumber].Renderer->FreeMemory(fontNumber);
 
-	fonts[fontNumber].Renderer = nullptr;
+	_GP(fonts)[fontNumber].Renderer = nullptr;
 }
 
 void free_all_fonts() {
-	for (size_t i = 0; i < fonts.size(); ++i) {
-		if (fonts[i].Renderer != nullptr)
-			fonts[i].Renderer->FreeMemory(i);
+	for (size_t i = 0; i < _GP(fonts).size(); ++i) {
+		if (_GP(fonts)[i].Renderer != nullptr)
+			_GP(fonts)[i].Renderer->FreeMemory(i);
 	}
-	fonts.clear();
+	_GP(fonts).clear();
 }
 
 } // namespace AGS3
diff --git a/engines/ags/shared/font/fonts.h b/engines/ags/shared/font/fonts.h
index b9374f49d6..9ec98f54de 100644
--- a/engines/ags/shared/font/fonts.h
+++ b/engines/ags/shared/font/fonts.h
@@ -26,23 +26,34 @@
 #include "ags/lib/std/vector.h"
 #include "ags/shared/core/types.h"
 #include "ags/shared/util/string.h"
+#include "ags/shared/ac/gamestructdefines.h"
 
 // TODO: we need to make some kind of TextManager class of this module
 
 namespace AGS3 {
+
+class IAGSFontRenderer;
+class IAGSFontRenderer2;
+struct FontInfo;
+struct FontRenderParams;
+
 namespace AGS {
 namespace Shared {
 class Bitmap;
+
+struct Font {
+	IAGSFontRenderer *Renderer = nullptr;
+	IAGSFontRenderer2 *Renderer2 = nullptr;
+	FontInfo            Info;
+
+	Font();
+};
+
 } // namespace Shared
 } // namespace AGS
 
 using namespace AGS;
 
-class IAGSFontRenderer;
-class IAGSFontRenderer2;
-struct FontInfo;
-struct FontRenderParams;
-
 void init_font_renderer();
 void shutdown_font_renderer();
 void adjust_y_coordinate_for_text(int *ypos, size_t fontnum);


Commit: 3f62f198ac9a36e02f59cab5b084677266b4548b
    https://github.com/scummvm/scummvm/commit/3f62f198ac9a36e02f59cab5b084677266b4548b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-03-01T21:12:32-08:00

Commit Message:
AGS: Move Lines global to Globals fontLines

Changed paths:
    engines/ags/engine/ac/dialog.cpp
    engines/ags/engine/ac/display.cpp
    engines/ags/engine/ac/drawingsurface.cpp
    engines/ags/engine/ac/global_drawingsurface.cpp
    engines/ags/engine/ac/global_gui.cpp
    engines/ags/engine/gui/mylabel.cpp
    engines/ags/globals.cpp
    engines/ags/globals.h
    engines/ags/plugins/agsplugin.cpp
    engines/ags/shared/font/fonts.cpp
    engines/ags/shared/font/fonts.h
    engines/ags/shared/gui/guilabel.cpp


diff --git a/engines/ags/engine/ac/dialog.cpp b/engines/ags/engine/ac/dialog.cpp
index 1188711190..03ce5f9d45 100644
--- a/engines/ags/engine/ac/dialog.cpp
+++ b/engines/ags/engine/ac/dialog.cpp
@@ -349,7 +349,7 @@ int write_dialog_options(Bitmap *ds, bool ds_has_alpha, int dlgxp, int curyp, in
 			else text_color = ds->GetCompatibleColor(utextcol);
 		}
 
-		break_up_text_into_lines(get_translation(dtop->optionnames[(int)disporder[ww]]), Lines, areawid - (2 * padding + 2 + bullet_wid), usingfont);
+		break_up_text_into_lines(get_translation(dtop->optionnames[(int)disporder[ww]]), _GP(fontLines), areawid - (2 * padding + 2 + bullet_wid), usingfont);
 		dispyp[ww] = curyp;
 		if (_GP(game).dialog_bullet > 0) {
 			draw_gui_sprite_v330(ds, _GP(game).dialog_bullet, dlgxp, curyp, ds_has_alpha);
@@ -363,8 +363,8 @@ int write_dialog_options(Bitmap *ds, bool ds_has_alpha, int dlgxp, int curyp, in
 			sprintf(tempbfr, "%d.", ww + 1);
 			wouttext_outline(ds, dlgxp + actualpicwid, curyp, usingfont, text_color, tempbfr);
 		}
-		for (size_t cc = 0; cc < Lines.Count(); cc++) {
-			wouttext_outline(ds, dlgxp + ((cc == 0) ? 0 : 9) + bullet_wid, curyp, usingfont, text_color, Lines[cc]);
+		for (size_t cc = 0; cc < _GP(fontLines).Count(); cc++) {
+			wouttext_outline(ds, dlgxp + ((cc == 0) ? 0 : 9) + bullet_wid, curyp, usingfont, text_color, _GP(fontLines)[cc]);
 			curyp += linespacing;
 		}
 		if (ww < numdisp - 1)
@@ -378,8 +378,8 @@ int write_dialog_options(Bitmap *ds, bool ds_has_alpha, int dlgxp, int curyp, in
 #define GET_OPTIONS_HEIGHT {\
 		needheight = 0;\
 		for (int i = 0; i < numdisp; ++i) {\
-			break_up_text_into_lines(get_translation(dtop->optionnames[(int)disporder[i]]), Lines, areawid-(2*padding+2+bullet_wid), usingfont);\
-			needheight += getheightoflines(usingfont, Lines.Count()) + data_to_game_coord(_GP(game).options[OPT_DIALOGGAP]);\
+			break_up_text_into_lines(get_translation(dtop->optionnames[(int)disporder[i]]), _GP(fontLines), areawid-(2*padding+2+bullet_wid), usingfont);\
+			needheight += getheightoflines(usingfont, _GP(fontLines).Count()) + data_to_game_coord(_GP(game).options[OPT_DIALOGGAP]);\
 		}\
 		if (parserInput) needheight += parserInput->Height + data_to_game_coord(_GP(game).options[OPT_DIALOGGAP]);\
 	}
@@ -662,7 +662,7 @@ void DialogOptions::Redraw() {
 		int biggest = 0;
 		padding = _GP(guis)[_GP(game).options[OPT_DIALOGIFACE]].Padding;
 		for (int i = 0; i < numdisp; ++i) {
-			break_up_text_into_lines(get_translation(dtop->optionnames[(int)disporder[i]]), Lines, areawid - ((2 * padding + 2) + bullet_wid), usingfont);
+			break_up_text_into_lines(get_translation(dtop->optionnames[(int)disporder[i]]), _GP(fontLines), areawid - ((2 * padding + 2) + bullet_wid), usingfont);
 			if (longestline > biggest)
 				biggest = longestline;
 		}
diff --git a/engines/ags/engine/ac/display.cpp b/engines/ags/engine/ac/display.cpp
index 0fa620164f..c6a3bfa68a 100644
--- a/engines/ags/engine/ac/display.cpp
+++ b/engines/ags/engine/ac/display.cpp
@@ -98,10 +98,10 @@ int _display_main(int xx, int yy, int wii, const char *text, int disp_type, int
 	int paddingDoubledScaled = get_fixed_pixel_size(padding * 2); // Just in case screen size does is not neatly divisible by 320x200
 
 	ensure_text_valid_for_font(todis, usingfont);
-	break_up_text_into_lines(todis, Lines, wii - 2 * padding, usingfont);
+	break_up_text_into_lines(todis, _GP(fontLines), wii - 2 * padding, usingfont);
 	disp.lineheight = getfontheight_outlined(usingfont);
 	disp.linespacing = getfontspacing_outlined(usingfont);
-	disp.fulltxtheight = getheightoflines(usingfont, Lines.Count());
+	disp.fulltxtheight = getheightoflines(usingfont, _GP(fontLines).Count());
 
 	// AGS 2.x: If the screen is faded out, fade in again when displaying a message box.
 	if (!asspch && (loaded_game_file_version <= kGameVersion_272))
@@ -210,7 +210,7 @@ int _display_main(int xx, int yy, int wii, const char *text, int disp_type, int
 		} else if ((ShouldAntiAliasText()) && (_GP(game).GetColorDepth() >= 24))
 			alphaChannel = true;
 
-		for (size_t ee = 0; ee < Lines.Count(); ee++) {
+		for (size_t ee = 0; ee < _GP(fontLines).Count(); ee++) {
 			//int ttxp=wii/2 - wgettextwidth_compensate(lines[ee], usingfont)/2;
 			int ttyp = ttxtop + ee * disp.linespacing;
 			// asspch < 0 means that it's inside a text box so don't
@@ -222,10 +222,10 @@ int _display_main(int xx, int yy, int wii, const char *text, int disp_type, int
 				else
 					text_color = text_window_ds->GetCompatibleColor(-asspch);
 
-				wouttext_aligned(text_window_ds, ttxleft, ttyp, oriwid, usingfont, text_color, Lines[ee], _GP(play).text_align);
+				wouttext_aligned(text_window_ds, ttxleft, ttyp, oriwid, usingfont, text_color, _GP(fontLines)[ee], _GP(play).text_align);
 			} else {
 				text_color = text_window_ds->GetCompatibleColor(asspch);
-				wouttext_aligned(text_window_ds, ttxleft, ttyp, wii, usingfont, text_color, Lines[ee], _GP(play).speech_text_align);
+				wouttext_aligned(text_window_ds, ttxleft, ttyp, wii, usingfont, text_color, _GP(fontLines)[ee], _GP(play).speech_text_align);
 			}
 		}
 	} else {
@@ -238,8 +238,8 @@ int _display_main(int xx, int yy, int wii, const char *text, int disp_type, int
 
 		adjust_y_coordinate_for_text(&yoffs, usingfont);
 
-		for (size_t ee = 0; ee < Lines.Count(); ee++)
-			wouttext_aligned(text_window_ds, xoffs, yoffs + ee * disp.linespacing, oriwid, usingfont, text_color, Lines[ee], _GP(play).text_align);
+		for (size_t ee = 0; ee < _GP(fontLines).Count(); ee++)
+			wouttext_aligned(text_window_ds, xoffs, yoffs + ee * disp.linespacing, oriwid, usingfont, text_color, _GP(fontLines)[ee], _GP(play).text_align);
 	}
 
 	int ovrtype = OVER_TEXTMSG;
diff --git a/engines/ags/engine/ac/drawingsurface.cpp b/engines/ags/engine/ac/drawingsurface.cpp
index 92bed17d70..d0e99dfa32 100644
--- a/engines/ags/engine/ac/drawingsurface.cpp
+++ b/engines/ags/engine/ac/drawingsurface.cpp
@@ -359,22 +359,22 @@ void DrawingSurface_DrawStringWrapped(ScriptDrawingSurface *sds, int xx, int yy,
 	sds->PointToGameResolution(&xx, &yy);
 	sds->SizeToGameResolution(&wid);
 
-	if (break_up_text_into_lines(msg, Lines, wid, font) == 0)
+	if (break_up_text_into_lines(msg, _GP(fontLines), wid, font) == 0)
 		return;
 
 	Bitmap *ds = sds->StartDrawing();
 	color_t text_color = sds->currentColour;
 
-	for (size_t i = 0; i < Lines.Count(); i++) {
+	for (size_t i = 0; i < _GP(fontLines).Count(); i++) {
 		int drawAtX = xx;
 
 		if (alignment & kMAlignHCenter) {
-			drawAtX = xx + ((wid / 2) - wgettextwidth(Lines[i], font) / 2);
+			drawAtX = xx + ((wid / 2) - wgettextwidth(_GP(fontLines)[i], font) / 2);
 		} else if (alignment & kMAlignRight) {
-			drawAtX = (xx + wid) - wgettextwidth(Lines[i], font);
+			drawAtX = (xx + wid) - wgettextwidth(_GP(fontLines)[i], font);
 		}
 
-		wouttext_outline(ds, drawAtX, yy + linespacing * i, font, text_color, Lines[i]);
+		wouttext_outline(ds, drawAtX, yy + linespacing * i, font, text_color, _GP(fontLines)[i]);
 	}
 
 	sds->FinishedDrawing();
diff --git a/engines/ags/engine/ac/global_drawingsurface.cpp b/engines/ags/engine/ac/global_drawingsurface.cpp
index 87374d0cbc..63c0743f08 100644
--- a/engines/ags/engine/ac/global_drawingsurface.cpp
+++ b/engines/ags/engine/ac/global_drawingsurface.cpp
@@ -163,13 +163,13 @@ void RawPrintMessageWrapped(int xx, int yy, int wid, int font, int msgm) {
 	// it's probably too late but check anyway
 	if (strlen(displbuf) > 2899)
 		quit("!RawPrintMessageWrapped: message too long");
-	if (break_up_text_into_lines(displbuf, Lines, wid, font) == 0)
+	if (break_up_text_into_lines(displbuf, _GP(fontLines), wid, font) == 0)
 		return;
 
 	RAW_START();
 	color_t text_color = _GP(play).raw_color;
-	for (size_t i = 0; i < Lines.Count(); i++)
-		wouttext_outline(RAW_SURFACE(), xx, yy + linespacing * i, font, text_color, Lines[i]);
+	for (size_t i = 0; i < _GP(fontLines).Count(); i++)
+		wouttext_outline(RAW_SURFACE(), xx, yy + linespacing * i, font, text_color, _GP(fontLines)[i]);
 	invalidate_screen();
 	mark_current_background_dirty();
 	RAW_END();
diff --git a/engines/ags/engine/ac/global_gui.cpp b/engines/ags/engine/ac/global_gui.cpp
index d20b7ea4e5..6488c92941 100644
--- a/engines/ags/engine/ac/global_gui.cpp
+++ b/engines/ags/engine/ac/global_gui.cpp
@@ -188,9 +188,9 @@ int GetTextHeight(const char *text, int fontnum, int width) {
 	if ((fontnum < 0) || (fontnum >= _GP(game).numfonts))
 		quit("!GetTextHeight: invalid font number.");
 
-	if (break_up_text_into_lines(text, Lines, data_to_game_coord(width), fontnum) == 0)
+	if (break_up_text_into_lines(text, _GP(fontLines), data_to_game_coord(width), fontnum) == 0)
 		return 0;
-	return game_to_data_coord(getheightoflines(fontnum, Lines.Count()));
+	return game_to_data_coord(getheightoflines(fontnum, _GP(fontLines).Count()));
 }
 
 int GetFontHeight(int fontnum) {
diff --git a/engines/ags/engine/gui/mylabel.cpp b/engines/ags/engine/gui/mylabel.cpp
index 817d643d76..f8f4db6f65 100644
--- a/engines/ags/engine/gui/mylabel.cpp
+++ b/engines/ags/engine/gui/mylabel.cpp
@@ -20,7 +20,6 @@
  *
  */
 
-//include <string.h>
 #include "ags/engine/ac/display.h"
 #include "ags/engine/ac/gamesetup.h"
 #include "ags/engine/ac/string.h"
@@ -28,6 +27,7 @@
 #include "ags/shared/gui/guidefines.h"
 #include "ags/engine/gui/mylabel.h"
 #include "ags/engine/gui/guidialoginternaldefs.h"
+#include "ags/globals.h"
 
 namespace AGS3 {
 
@@ -51,10 +51,10 @@ void MyLabel::draw(Bitmap *ds) {
 	char *teptr = &text[0];
 	color_t text_color = ds->GetCompatibleColor(0);
 
-	if (break_up_text_into_lines(teptr, Lines, wid, acdialog_font) == 0)
+	if (break_up_text_into_lines(teptr, _GP(fontLines), wid, acdialog_font) == 0)
 		return;
-	for (size_t ee = 0; ee < Lines.Count(); ee++) {
-		wouttext_outline(ds, x, cyp, acdialog_font, text_color, Lines[ee]);
+	for (size_t ee = 0; ee < _GP(fontLines).Count(); ee++) {
+		wouttext_outline(ds, x, cyp, acdialog_font, text_color, _GP(fontLines)[ee]);
 		cyp += TEXT_HT;
 	}
 }
diff --git a/engines/ags/globals.cpp b/engines/ags/globals.cpp
index b56b9fb6b9..baa516a870 100644
--- a/engines/ags/globals.cpp
+++ b/engines/ags/globals.cpp
@@ -71,10 +71,11 @@ Globals::Globals() {
 	_sprlist = new std::vector<SpriteListEntry>();
 	_thingsToDrawList = new std::vector<SpriteListEntry>();
 
-	// _GP(fonts).cpp globals
+	// fonts.cpp globals
 	_fonts = new std::vector<AGS::Shared::Font>();
 	_ttfRenderer = new TTFFontRenderer();
 	_wfnRenderer = new WFNFontRenderer();
+	_fontLines = new SplitLines();
 
 	// game.cpp globals
 	_ccDynamicGUIObject = new CCGUIObject();
@@ -131,7 +132,7 @@ Globals::~Globals() {
 	// debug.cpp
 	delete _DbgMgr;
 
-	// _GP(fonts).cpp
+	// fonts.cpp
 	delete _fonts;
 	delete _ttfRenderer;
 	delete _wfnRenderer;
diff --git a/engines/ags/globals.h b/engines/ags/globals.h
index 38aba72b0b..d7f237bbaa 100644
--- a/engines/ags/globals.h
+++ b/engines/ags/globals.h
@@ -47,6 +47,7 @@ class RoomStruct;
 } // namespace Shared
 } // namespace AGS
 
+class SplitLines;
 class TTFFontRenderer;
 class WFNFontRenderer;
 
@@ -148,6 +149,7 @@ public:
 	std::vector<AGS::Shared::Font> *_fonts;
 	TTFFontRenderer *_ttfRenderer;
 	WFNFontRenderer *_wfnRenderer;
+	SplitLines *_fontLines;
 
 	/**@}*/
 
diff --git a/engines/ags/plugins/agsplugin.cpp b/engines/ags/plugins/agsplugin.cpp
index af9d95c6b3..80915a6e26 100644
--- a/engines/ags/plugins/agsplugin.cpp
+++ b/engines/ags/plugins/agsplugin.cpp
@@ -342,7 +342,7 @@ void IAGSEngine::DrawTextWrapped(int32 xx, int32 yy, int32 wid, int32 font, int3
 	// TODO: use generic function from the engine instead of having copy&pasted code here
 	int linespacing = getfontspacing_outlined(font);
 
-	if (break_up_text_into_lines(text, Lines, wid, font) == 0)
+	if (break_up_text_into_lines(text, _GP(fontLines), wid, font) == 0)
 		return;
 
 	Bitmap *ds = gfxDriver->GetStageBackBuffer();
@@ -350,8 +350,8 @@ void IAGSEngine::DrawTextWrapped(int32 xx, int32 yy, int32 wid, int32 font, int3
 		return;
 	color_t text_color = ds->GetCompatibleColor(color);
 	data_to_game_coords((int *)&xx, (int *)&yy); // stupid! quick tweak
-	for (size_t i = 0; i < Lines.Count(); i++)
-		draw_and_invalidate_text(ds, xx, yy + linespacing * i, font, text_color, Lines[i]);
+	for (size_t i = 0; i < _GP(fontLines).Count(); i++)
+		draw_and_invalidate_text(ds, xx, yy + linespacing * i, font, text_color, _GP(fontLines)[i]);
 }
 
 Bitmap glVirtualScreenWrap;
diff --git a/engines/ags/shared/font/fonts.cpp b/engines/ags/shared/font/fonts.cpp
index b9ebb2bdca..bb2e18b5cc 100644
--- a/engines/ags/shared/font/fonts.cpp
+++ b/engines/ags/shared/font/fonts.cpp
@@ -177,12 +177,6 @@ bool use_default_linespacing(size_t fontNumber) {
 // Project-dependent implementation
 extern int wgettextwidth_compensate(const char *tex, int font);
 
-namespace AGS {
-namespace Shared {
-SplitLines Lines;
-}
-}
-
 // Replaces AGS-specific linebreak tags with common '\n'
 void unescape_script_string(const char *cstr, std::vector<char> &out) {
 	out.clear();
diff --git a/engines/ags/shared/font/fonts.h b/engines/ags/shared/font/fonts.h
index 9ec98f54de..251142e37b 100644
--- a/engines/ags/shared/font/fonts.h
+++ b/engines/ags/shared/font/fonts.h
@@ -141,11 +141,6 @@ private:
 // returns number of lines, or 0 if text cannot be split well to fit in this width
 size_t split_lines(const char *texx, SplitLines &lines, int width, int fontNumber, size_t max_lines = -1);
 
-namespace AGS {
-namespace Shared {
-extern SplitLines Lines;
-} // namespace Shared
-} // namespace AGS
 } // namespace AGS3
 
 #endif
diff --git a/engines/ags/shared/gui/guilabel.cpp b/engines/ags/shared/gui/guilabel.cpp
index 96b26c1bfe..f17f80e7ae 100644
--- a/engines/ags/shared/gui/guilabel.cpp
+++ b/engines/ags/shared/gui/guilabel.cpp
@@ -26,6 +26,7 @@
 #include "ags/shared/gui/guimain.h"
 #include "ags/shared/util/stream.h"
 #include "ags/shared/util/string_utils.h"
+#include "ags/globals.h"
 
 namespace AGS3 {
 
@@ -55,7 +56,7 @@ void GUILabel::Draw(Shared::Bitmap *ds) {
 	// TODO: need to find a way to cache text prior to drawing;
 	// but that will require to update all gui controls when translation is changed in game
 	PrepareTextToDraw();
-	if (SplitLinesForDrawing(Lines) == 0)
+	if (SplitLinesForDrawing(_GP(fontLines)) == 0)
 		return;
 
 	color_t text_color = ds->GetCompatibleColor(TextColor);
@@ -64,9 +65,9 @@ void GUILabel::Draw(Shared::Bitmap *ds) {
 	const bool limit_by_label_frame = loaded_game_file_version >= kGameVersion_272;
 	int at_y = Y;
 	for (size_t i = 0;
-		i < Lines.Count() && (!limit_by_label_frame || at_y <= Y + Height);
+		i < _GP(fontLines).Count() && (!limit_by_label_frame || at_y <= Y + Height);
 		++i, at_y += linespacing) {
-		GUI::DrawTextAlignedHor(ds, Lines[i], Font, text_color, X, X + Width - 1, at_y,
+		GUI::DrawTextAlignedHor(ds, _GP(fontLines)[i], Font, text_color, X, X + Width - 1, at_y,
 			(FrameAlignment)TextAlignment);
 	}
 }




More information about the Scummvm-git-logs mailing list