/* * Seven Kingdoms: Ancient Adversaries * * Copyright 1997,1998 Enlight Software Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ // Filename : OVGALOCK.CPP // Description : object to vga_front.temp_unlock and temp_restore_lock // Onwer : Gilbert Luis // Mainly used by ODPLAY.CPP to separate OVGA.H // some GUID initialization problems exist if OVGA.H is included in ODPLAY.CPP #include #include #include #include #include #include VgaFrontLock::VgaFrontLock() { vga_front.temp_unlock(); } VgaFrontLock::~VgaFrontLock() { vga_front.temp_restore_lock(); } void VgaFrontLock::re_lock() { vga_front.temp_restore_lock(); } void VgaFrontLock::re_unlock() { vga_front.temp_unlock(); } VgaCustomPalette::VgaCustomPalette(char *fileName) { backup_pal = NULL; if( save_palette() && fileName) set_custom_palette(fileName); } VgaCustomPalette::~VgaCustomPalette() { restore_palette(); if( backup_pal) mem_del(backup_pal); } int VgaCustomPalette::save_palette() { // ------ allocate space --------// if( !backup_pal ) backup_pal = mem_add( sizeof(PALETTEENTRY) * 256); // ------- get current palette --------// if( vga.dd_pal->GetEntries(0, 0, 256, (PALETTEENTRY *)backup_pal) ) { // get palette fail, free backup_pal to indicate save_palette failed mem_del(backup_pal); backup_pal = NULL; return 0; } else return 1; } int VgaCustomPalette::set_custom_palette(char *fileName) { PALETTEENTRY palEntry[256]; char palBuf[256][3]; File palFile; palFile.file_open(fileName); palFile.file_seek(8); // bypass the header info palFile.file_read(palBuf, 256*3); palFile.file_close(); for(int i=0; i<256; i++) { palEntry[i].peRed = palBuf[i][0]; palEntry[i].peGreen = palBuf[i][1]; palEntry[i].peBlue = palBuf[i][2]; palEntry[i].peFlags = 0; } return !vga.dd_pal->SetEntries(0, 0, 256, palEntry); } int VgaCustomPalette::restore_palette() { if( backup_pal) return !vga.dd_pal->SetEntries(0, 0, 256, (PALETTEENTRY *)backup_pal); else return 1; } MouseDispCount::MouseDispCount() { // set cursor position SetCursorPos( mouse.cur_x, mouse.cur_y); // show cursor mouse.hide(); // #### patch begin Gilbert 9/1 #######// vga_front.temp_unlock(); // #### patch end Gilbert 9/1 #######// ShowCursor(TRUE); } MouseDispCount::~MouseDispCount() { // set cursor position POINT winMousePos; GetCursorPos(&winMousePos); mouse.cur_x = winMousePos.x; mouse.cur_y = winMousePos.y; // hide cursor ShowCursor(FALSE); // #### patch begin Gilbert 9/1 #######// vga_front.temp_restore_lock(); // #### patch end Gilbert 9/1 #######// mouse.show(); int ev = mouse.get_event(); ev = mouse.get_event(); }