protected void InitScreens(int b, int h)
{
if (_townsScreen != null)
{
if (_townsClearLayerFlag == 0 && MainVirtScreen != null && ((h - b) != MainVirtScreen.Height))
_townsScreen.ClearLayer(0);
if (Game.GameId != GameId.Monkey1)
{
Gdi.Fill(TextSurface,
new Rect(0, 0, _textSurface.Width * _textSurfaceMultiplier, _textSurface.Height * _textSurfaceMultiplier), 0);
_townsScreen.ClearLayer(1);
}
}
var format = Game.Features.HasFlag(GameFeatures.Is16BitColor) ? PixelFormat.Rgb16 : PixelFormat.Indexed8;
_mainVirtScreen = new VirtScreen(b, ScreenWidth, h - b, format, 2, true);
_textVirtScreen = new VirtScreen(0, ScreenWidth, b, format, 1);
_verbVirtScreen = new VirtScreen(h, ScreenWidth, ScreenHeight - h, format, 1);
// Since the size of screen 3 is fixed, there is no need to reallocate
// it if its size changed.
// Not sure what it is good for, though. I think it may have been used
// in pre-V7 for the games messages (like 'Pause', Yes/No dialogs,
// version display, etc.). I don't know about V7, maybe the same is the
// case there. If so, we could probably just remove it completely.
if (_game.Version >= 7)
{
_unkVirtScreen = new VirtScreen((ScreenHeight / 2) - 10, ScreenWidth, 13, format, 1);
}
else
{
_unkVirtScreen = new VirtScreen(80, ScreenWidth, 13, format, 1);
}
_screenB = b;
_screenH = h;
Gdi.Init();
}