ULTIMA6: Added save/ folder

This commit is contained in:
Paul Gilbert 2019-12-18 07:24:13 -08:00 committed by Paul Gilbert
parent 73b80c29c6
commit 06dbc280a1
19 changed files with 212 additions and 56 deletions

View File

@ -38,7 +38,11 @@ MODULE_OBJS += \
ultima6/portraits/portrait.o \
ultima6/portraits/portrait_md.o \
ultima6/portraits/portrait_se.o \
ultima6/portraits/portrait_u6.o
ultima6/portraits/portrait_u6.o \
ultima6/save/save_dialog.o \
ultima6/save/save_game.o \
ultima6/save/save_manager.o \
ultima6/save/save_slot.o
endif
ifdef ENABLE_ULTIMA8

View File

@ -0,0 +1,67 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef ULTIMA6_CORE_COMMAND_BAR_NEW_UI_H
#define ULTIMA6_CORE_COMMAND_BAR_NEW_UI_H
#include "ultima/shared/std/string.h"
#include "ultima/ultima6/gui/gui_widget.h"
#include "ultima/ultima6/misc/call_back.h"
#include "ultima/ultima6/core/command_bar.h"
namespace Ultima {
namespace Ultima6 {
class NuvieIO;
class Event;
class Game;
class GUI_Button;
class GUI_CallBack;
class Text;
class Font;
class CommandBarNewUI: public CommandBar {
protected:
uint8 cur_pos;
uint8 icon_w;
uint8 icon_h;
uint8 icon_y_offset;
uint16 num_icons;
Font *font;
public:
CommandBarNewUI(Game *g);
~CommandBarNewUI();
virtual void Display(bool full_redraw);
virtual GUI_status KeyDown(Common::KeyState key);
virtual GUI_status MouseDown(int x, int y, int button);
virtual GUI_status MouseUp(int x, int y, int button);
private:
const char *get_command_name(sint8 command_num);
};
} // End of namespace Ultima6
} // End of namespace Ultima
#endif

View File

@ -23,7 +23,7 @@
#ifndef ULTIMA6_GUI_GUI_DRAG_AREA_H
#define ULTIMA6_GUI_GUI_DRAG_AREA_H
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
namespace Ultima {
namespace Ultima6 {

View File

@ -22,7 +22,7 @@
#include "ultima/ultima6/core/nuvie_defs.h"
#include "ultima/ultima6/gui/gui_TextInput.h"
#include "ultima/ultima6/gui/gui_text_input.h"
#include "ultima/ultima6/gui/gui_font.h"
#include "ultima/ultima6/keybinding/keys.h"
//#include <stdlib.h>

View File

@ -31,7 +31,7 @@ namespace Ultima6 {
bool openFile
(
std::ifstream &in, // Input stream to open.
Common::ReadStream *in, // Input stream to open.
const char *fname // May be converted to upper-case.
);
@ -42,7 +42,7 @@ bool fileExists(
/*
* File errors
*/
#if 0
class file_exception : public std::exception {
std::string what_;
public:
@ -58,6 +58,7 @@ class file_open_exception : public file_exception {
public:
file_open_exception(const std::string &file): file_exception("Error opening file " + file) { }
};
#endif
} // End of namespace Ultima6
} // End of namespace Ultima

View File

@ -28,7 +28,7 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextToggleButton.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"

View File

@ -28,7 +28,7 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextToggleButton.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"

View File

@ -25,7 +25,7 @@
#include "ultima/ultima6/gui/gui.h"
#include "ultima/ultima6/gui/gui_types.h"
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"

View File

@ -28,7 +28,7 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextToggleButton.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"

View File

@ -28,7 +28,7 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextToggleButton.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"

View File

@ -29,7 +29,7 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextToggleButton.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"

View File

@ -28,7 +28,7 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextToggleButton.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/misc/u6_misc.h"
#include "ultima/ultima6/screen/dither.h"

View File

@ -0,0 +1,86 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef ULTIMA6_MISC_SDL_COMPAT_H
#define ULTIMA6_MISC_SDL_COMPAT_H
#include "common/system.h"
#include "graphics/managed_surface.h"
uint32 SDL_GetTicks() {
return g_system->getMillis();
}
void SDL_FreeSurface(Graphics::ManagedSurface *&s) {
delete s;
s = nullptr;
}
void SDL_ShowCursor(bool show) {
g_system->showMouse(show);
}
uint32 SDL_MapRGB(Graphics::PixelFormat &format, byte r, byte g, byte b) {
return format.RGBToColor(r, g, b);
}
int SDL_BlitSurface(Graphics::ManagedSurface *src, const Common::Rect *srcrect,
Graphics::ManagedSurface *dst, Common::Rect *dstrect) {
dst->transBlitFrom(*src, *srcrect, *dstrect, (uint)-1);
return 0;
}
int SDL_FillRect(Graphics::ManagedSurface *surf, Common::Rect *rect, uint color) {
surf->fillRect(rect ? *rect : Common::Rect(0, 0, surf->w, surf->h), color);
return 0;
}
#if 0
#define SDLK_UNKNOWN SDLK_LAST
#define Common::KeyCode SDLKey
#define SDL_Keymod SDLMod
#define Common::KeyState SDL_keysym
#define KMOD_GUI KMOD_META
#define SDL_JoystickNameForIndex SDL_JoystickName
#define SDL_Window void
#define SDL_Renderer void
#define SDL_Texture void
#define SDLK_KP_0 SDLK_KP0
#define SDLK_KP_1 SDLK_KP1
#define SDLK_KP_2 SDLK_KP2
#define SDLK_KP_3 SDLK_KP3
#define SDLK_KP_4 SDLK_KP4
#define SDLK_KP_5 SDLK_KP5
#define SDLK_KP_6 SDLK_KP6
#define SDLK_KP_7 SDLK_KP7
#define SDLK_KP_8 SDLK_KP8
#define SDLK_KP_9 SDLK_KP9
#define SDL_CreateThread(x, y, z) SDL_CreateThread(x, z)
#define SDL_TRUE SDL_SRCCOLORKEY
#else
#endif
#endif

View File

@ -28,12 +28,12 @@
#include "ultima/ultima6/gui/gui_button.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_Scroller.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/gui/gui_area.h"
#include "ultima/ultima6/gui/gui_Dialog.h"
#include "SaveSlot.h"
#include "SaveDialog.h"
#include "ultima/ultima6/save/save_slot.h"
#include "ultima/ultima6/save/save_dialog.h"
#include "ultima/ultima6/files/nuvie_file_list.h"
#include "ultima/ultima6/keybinding/keys.h"
#include "ultima/ultima6/core/event.h"
@ -75,8 +75,8 @@ bool SaveDialog::init(const char *save_directory, const char *search_prefix) {
std::string *filename;
GUI_Widget *widget;
GUI *gui = GUI::get_gui();
GUI_Color bg_color = GUI_Color(162, 144, 87);
GUI_Color bg_color1 = GUI_Color(147, 131, 74);
GUI_Color bgColor = GUI_Color(162, 144, 87);
GUI_Color bgColor1 = GUI_Color(147, 131, 74);
GUI_Color *color_ptr;
if (filelist.open(save_directory, search_prefix, NUVIE_SORT_TIME_DESC) == false) {
@ -93,12 +93,12 @@ bool SaveDialog::init(const char *save_directory, const char *search_prefix) {
// Add an empty slot at the top.
widget = new SaveSlot(this, bg_color1);
widget = new SaveSlot(this, bgColor1);
((SaveSlot *)widget)->init(NULL, NULL);
scroller->AddWidget(widget);
color_ptr = &bg_color;
color_ptr = &bgColor;
for (i = 0; i < num_saves + 1; i++) {
if (i < num_saves)
@ -109,10 +109,10 @@ bool SaveDialog::init(const char *save_directory, const char *search_prefix) {
if (((SaveSlot *)widget)->init(save_directory, filename) == true) {
scroller->AddWidget(widget);
if (color_ptr == &bg_color)
color_ptr = &bg_color1;
if (color_ptr == &bgColor)
color_ptr = &bgColor1;
else
color_ptr = &bg_color;
color_ptr = &bgColor;
} else
delete(SaveSlot *)widget;
}
@ -128,10 +128,10 @@ bool SaveDialog::init(const char *save_directory, const char *search_prefix) {
scroller->AddWidget(widget);
if(color_ptr == &bg_color)
color_ptr = &bg_color1;
if(color_ptr == &bgColor)
color_ptr = &bgColor1;
else
color_ptr = &bg_color;
color_ptr = &bgColor;
}
}
*/
@ -196,8 +196,8 @@ void SaveDialog::set_cursor_pos(uint8 index_num) {
cursor_y = 130;
break;
}
cursor_x += area.x;
cursor_y += area.y;
cursor_x += area.left;
cursor_y += area.top;
}
GUI_status SaveDialog::close_dialog() {
@ -291,16 +291,14 @@ GUI_status SaveDialog::KeyDown(Common::KeyState key) {
uint16 y = (cursor_y + 8) * screen->get_scale_factor();
Common::Event fake_event;
fake_event.button.x = x;
fake_event.button.y = y;
fake_event.type = fake_event.button.type = SDL_MOUSEBUTTONDOWN;
fake_event.button.state = SDL_RELEASED;
fake_event.button.button = SDL_BUTTON_LEFT;
fake_event.mouse.x = x;
fake_event.mouse.y = y;
fake_event.type = Common::EVENT_LBUTTONDOWN;
GUI::get_gui()->HandleEvent(&fake_event);
fake_event.button.x = x; //GUI::HandleEvent divides by scale so we need to restore it
fake_event.button.y = y;
fake_event.type = fake_event.button.type = SDL_MOUSEBUTTONUP;
fake_event.mouse.x = x; //GUI::HandleEvent divides by scale so we need to restore it
fake_event.mouse.y = y;
fake_event.type = Common::EVENT_LBUTTONUP;
GUI::get_gui()->HandleEvent(&fake_event);
break;
}

View File

@ -32,7 +32,7 @@
#include "ultima/ultima6/files/u6_lzw.h"
#include "ultima/ultima6/gui/gui.h"
#include "ultima/ultima6/core/console.h"
#include "Saveultima/ultima6/core/game.h"
#include "ultima/ultima6/save/save_game.h"
#include "ultima/ultima6/conf/configuration.h"
#include "ultima/ultima6/core/game.h"
#include "ultima/ultima6/core/obj_manager.h"
@ -282,6 +282,7 @@ bool SaveGame::load_objlist() {
}
SaveHeader *SaveGame::load_info(NuvieIOFileRead *loadfile) {
#ifdef TODO
uint32 rmask, gmask, bmask;
unsigned char save_desc[MAX_SAVE_DESC_LENGTH + 1];
unsigned char player_name[14];
@ -326,6 +327,9 @@ SaveHeader *SaveGame::load_info(NuvieIOFileRead *loadfile) {
header.thumbnail = SDL_CreateRGBSurfaceFrom(header.thumbnail_data, MAPWINDOW_THUMBNAIL_SIZE, MAPWINDOW_THUMBNAIL_SIZE, 24, MAPWINDOW_THUMBNAIL_SIZE * 3, rmask, gmask, bmask, 0);
return &header;
#else
return nullptr;
#endif
}
bool SaveGame::check_version(NuvieIOFileRead *loadfile) {

View File

@ -20,10 +20,6 @@
*
*/
#ifdef HAVE_CONFIG_H
//#include <config.h>
#endif
#include "ultima/ultima6/core/nuvie_defs.h"
#include "ultima/ultima6/conf/configuration.h"
@ -39,9 +35,9 @@
//#include "ultima/ultima6/core/game.h"
#include "ultima/ultima6/core/event.h"
#include "ultima/ultima6/core/console.h"
#include "SaveDialog.h"
#include "SaveSlot.h"
#include "Saveultima/ultima6/core/game.h"
#include "ultima/ultima6/save/save_dialog.h"
#include "ultima/ultima6/save/save_slot.h"
#include "ultima/ultima6/save/save_game.h"
#include "ultima/ultima6/core/msg_scroll.h"
#include "ultima/ultima6/keybinding/utils.h"
////#include <direct.h>
@ -277,19 +273,19 @@ std::string SaveManager::get_new_savefilename() {
uint32 count;
std::string *filename;
std::string new_filename;
std::string search_prefix;
std::string searchPrefix;
std::string num_str;
char end_buf[8]; // 000.sav\0
NuvieFileList filelist;
max_count = 0;
search_prefix = "nuvie";
search_prefix.append(get_game_tag(game_type));
searchPrefix = "nuvie";
searchPrefix.append(get_game_tag(game_type));
new_filename = search_prefix;
new_filename = searchPrefix;
filelist.open(savedir.c_str(), search_prefix.c_str(), NUVIE_SORT_TIME_DESC);
filelist.open(savedir.c_str(), searchPrefix.c_str(), NUVIE_SORT_TIME_DESC);
for (; (filename = filelist.next());) {
// search for highest save number here.

View File

@ -24,9 +24,7 @@
#define ULTIMA6_SAVE_SAVE_MANAGER_H
#include "ultima/shared/std/string.h"
//#include <list>
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
namespace Ultima {
namespace Ultima6 {

View File

@ -27,18 +27,18 @@
#include "ultima/ultima6/gui/gui.h"
#include "ultima/ultima6/gui/gui_types.h"
#include "ultima/ultima6/gui/gui_text.h"
#include "ultima/ultima6/gui/gui_TextInput.h"
#include "ultima/ultima6/gui/gui_text_input.h"
#include "ultima/ultima6/gui/gui_CallBack.h"
#include "ultima/ultima6/gui/gui_callback.h"
#include "ultima/ultima6/core/game.h"
#include "ultima/ultima6/files/nuvie_io_file.h"
#include "ultima/ultima6/core/map_window.h"
#include "Saveultima/ultima6/core/game.h"
#include "SaveSlot.h"
#include "ultima/ultima6/save/save_game.h"
#include "ultima/ultima6/save/save_slot.h"
#include "ultima/ultima6/save/save_manager.h"
#include "SaveDialog.h"
#include "ultima/ultima6/save/save_dialog.h"
#include "ultima/ultima6/gui/gui_Scroller.h"
namespace Ultima {
@ -83,6 +83,7 @@ bool SaveSlot::init(const char *directory, std::string *file) {
}
bool SaveSlot::load_info(const char *directory) {
#ifdef TODO
NuvieIOFileRead loadfile;
SaveGame *savegame;
SaveHeader *header;
@ -143,6 +144,7 @@ bool SaveSlot::load_info(const char *directory) {
AddWidget(widget);
delete savegame;
#endif
return true;
}