mirror of https://github.com/stella-emu/stella.git
Some fairly major changes to the Properties handling. Added a 'Default'
button to GameInfoDialog, which basically resets ROM properties to built-in (compiled) defaults, and removes the entry from an external stella.pro file (if it exists). A ROM reload is still necessary for these settings to take effect. Removed 'Alt-s' properties merging shortcut, since it does the same as clicking OK in GameInfoDialog, and there should be only one way of doing that. Fixed bug in UI where pressing state-change keys (Ctrl, Shift, etc) would be interpreted as characters. Added ROM properties for "Strat-O-Gems Deluxe". git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1165 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
e3c0ee39ff
commit
4c8743b04e
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Console.cxx,v 1.102 2006-11-27 02:18:47 stephena Exp $
|
||||
// $Id: Console.cxx,v 1.103 2006-12-01 18:30:16 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <assert.h>
|
||||
|
@ -382,31 +382,9 @@ void Console::togglePhosphor()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Console::saveProperties(string filename, bool merge)
|
||||
void Console::setProperties(const Properties& props)
|
||||
{
|
||||
// Merge the current properties into the PropertiesSet file
|
||||
if(merge)
|
||||
{
|
||||
if(myOSystem->propSet().merge(myProperties, filename))
|
||||
myOSystem->frameBuffer().showMessage("Properties merged");
|
||||
else
|
||||
myOSystem->frameBuffer().showMessage("Error merging properties");
|
||||
}
|
||||
else // Save to the specified file directly
|
||||
{
|
||||
ofstream out(filename.c_str(), ios::out);
|
||||
|
||||
if(out && out.is_open())
|
||||
{
|
||||
myProperties.save(out);
|
||||
out.close();
|
||||
myOSystem->frameBuffer().showMessage("Properties saved");
|
||||
}
|
||||
else
|
||||
{
|
||||
myOSystem->frameBuffer().showMessage("Error saving properties");
|
||||
}
|
||||
}
|
||||
myProperties = props;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -448,7 +426,6 @@ void Console::initialize()
|
|||
|
||||
// Initialize the options menu system with updated values from the framebuffer
|
||||
myOSystem->menu().initialize();
|
||||
myOSystem->menu().setGameProfile(myProperties);
|
||||
|
||||
// Initialize the command menu system with updated values from the framebuffer
|
||||
myOSystem->commandMenu().initialize();
|
||||
|
@ -794,7 +771,7 @@ void Console::loadUserPalette()
|
|||
return;
|
||||
}
|
||||
|
||||
// Now that we have valid data, create the user-defined buffers
|
||||
// Now that we have valid data, create the user-defined palettes
|
||||
ourUserNTSCPalette = new uInt32[256];
|
||||
ourUserPALPalette = new uInt32[256];
|
||||
uInt8 pixbuf[3]; // Temporary buffer for one 24-bit pixel
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Console.hxx,v 1.48 2006-11-25 01:34:35 stephena Exp $
|
||||
// $Id: Console.hxx,v 1.49 2006-12-01 18:30:16 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef CONSOLE_HXX
|
||||
|
@ -38,7 +38,7 @@ class System;
|
|||
This class represents the entire game console.
|
||||
|
||||
@author Bradford W. Mott
|
||||
@version $Id: Console.hxx,v 1.48 2006-11-25 01:34:35 stephena Exp $
|
||||
@version $Id: Console.hxx,v 1.49 2006-12-01 18:30:16 stephena Exp $
|
||||
*/
|
||||
class Console
|
||||
{
|
||||
|
@ -120,6 +120,13 @@ class Console
|
|||
*/
|
||||
M6532& riot() const { return *myRiot; }
|
||||
|
||||
/**
|
||||
Set the properties to those given
|
||||
|
||||
@param The properties to use for the current game
|
||||
*/
|
||||
void setProperties(const Properties& props);
|
||||
|
||||
public:
|
||||
/**
|
||||
Overloaded assignment operator
|
||||
|
@ -152,15 +159,6 @@ class Console
|
|||
*/
|
||||
void togglePhosphor();
|
||||
|
||||
/**
|
||||
Save a copy of the current properties after any changes.
|
||||
|
||||
@param filename Filename to save the properties into.
|
||||
@param merge Whether or not to merge the changes into the
|
||||
main properties file.
|
||||
*/
|
||||
void saveProperties(string filename, bool merge = false);
|
||||
|
||||
/**
|
||||
Initialize the basic properties of the console.
|
||||
TODO - This is a workaround for a bug in the TIA rendering, whereby
|
||||
|
|
|
@ -3094,7 +3094,7 @@ static const char* DefProps[][23] = {
|
|||
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
{ "807a8ff6216b00d52aba2dfea5d8d860", "John Payson", "", "Strat-O-Gems Deluxe", "", "Homebrew", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "250", "", "", "" },
|
||||
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
{ "80e1410ec98089e0733cc09e584dba4b", "Dynamics", "", "Jumping Jack (Dynamics) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "42", "256", "", "", "" },
|
||||
{ "8101efafcf0af32fedda4579c941e6f4", "", "", "Okie Dokie (4K) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "PAL", "16", "128", "64", "220", "", "", "" },
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: EventHandler.cxx,v 1.175 2006-11-29 18:22:55 stephena Exp $
|
||||
// $Id: EventHandler.cxx,v 1.176 2006-12-01 18:30:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <sstream>
|
||||
|
@ -35,6 +35,7 @@
|
|||
#include "GuiUtils.hxx"
|
||||
#include "Deserializer.hxx"
|
||||
#include "Serializer.hxx"
|
||||
#include "PropsSet.hxx"
|
||||
#include "bspf.hxx"
|
||||
|
||||
#ifdef DEVELOPER_SUPPORT
|
||||
|
@ -474,10 +475,6 @@ void EventHandler::poll(uInt32 time)
|
|||
myOSystem->console().enableBits(true);
|
||||
break;
|
||||
|
||||
case SDLK_s: // Alt-s merges properties into user properties (user.pro)
|
||||
saveProperties();
|
||||
break;
|
||||
|
||||
case SDLK_p: // Alt-p toggles phosphor effect
|
||||
myOSystem->console().togglePhosphor();
|
||||
break;
|
||||
|
@ -603,10 +600,20 @@ void EventHandler::poll(uInt32 time)
|
|||
break;
|
||||
|
||||
case SDLK_s: // Ctrl-s saves properties to a file
|
||||
string newPropertiesFile = myOSystem->baseDir() + BSPF_PATH_SEPARATOR +
|
||||
{
|
||||
string filename = myOSystem->baseDir() + BSPF_PATH_SEPARATOR +
|
||||
myOSystem->console().properties().get(Cartridge_Name) + ".pro";
|
||||
myOSystem->console().saveProperties(newPropertiesFile);
|
||||
ofstream out(filename.c_str(), ios::out);
|
||||
if(out)
|
||||
{
|
||||
myOSystem->console().properties().save(out);
|
||||
out.close();
|
||||
myOSystem->frameBuffer().showMessage("Properties saved");
|
||||
}
|
||||
else
|
||||
myOSystem->frameBuffer().showMessage("Error saving properties");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -622,9 +629,11 @@ void EventHandler::poll(uInt32 time)
|
|||
handleEvent(myKeyTable[key][kEmulationMode], state);
|
||||
else if(myOverlay != NULL)
|
||||
{
|
||||
// Make sure the unicode field is valid
|
||||
// Assign unicode field if it doesn't exist
|
||||
// Make sure 'state change' keys (Shift, Ctrl, etc) are excluded
|
||||
if(!unicode) unicode = key;
|
||||
|
||||
if(key > SDLK_F15 && key < SDLK_HELP)
|
||||
unicode = 0;
|
||||
myOverlay->handleKeyEvent(unicode, key, mod, state);
|
||||
}
|
||||
|
||||
|
@ -2318,12 +2327,6 @@ void EventHandler::setEventState(State state)
|
|||
myOSystem->stateChanged(myState);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void EventHandler::saveProperties()
|
||||
{
|
||||
myOSystem->console().saveProperties(myOSystem->propertiesFile(), true);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void EventHandler::setSDLMappings()
|
||||
{
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: EventHandler.hxx,v 1.91 2006-11-28 21:48:56 stephena Exp $
|
||||
// $Id: EventHandler.hxx,v 1.92 2006-12-01 18:30:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef EVENTHANDLER_HXX
|
||||
|
@ -114,7 +114,7 @@ struct JoyMouse {
|
|||
mapping can take place.
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: EventHandler.hxx,v 1.91 2006-11-28 21:48:56 stephena Exp $
|
||||
@version $Id: EventHandler.hxx,v 1.92 2006-12-01 18:30:18 stephena Exp $
|
||||
*/
|
||||
class EventHandler
|
||||
{
|
||||
|
@ -312,7 +312,6 @@ class EventHandler
|
|||
void leaveMenuMode();
|
||||
bool enterDebugMode();
|
||||
void leaveDebugMode();
|
||||
void saveProperties();
|
||||
|
||||
/**
|
||||
Send an event directly to the event handler.
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Props.cxx,v 1.14 2006-11-19 00:48:55 stephena Exp $
|
||||
// $Id: Props.cxx,v 1.15 2006-12-01 18:30:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <cctype>
|
||||
|
@ -135,9 +135,10 @@ void Properties::load(istream& in)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Properties::save(ostream& out)
|
||||
void Properties::save(ostream& out) const
|
||||
{
|
||||
// Write out each of the key and value pairs
|
||||
bool changed = false;
|
||||
for(int i = 0; i < LastPropType; ++i)
|
||||
{
|
||||
// Try to save some space by only saving the items that differ from default
|
||||
|
@ -147,13 +148,17 @@ void Properties::save(ostream& out)
|
|||
out.put(' ');
|
||||
writeQuotedString(out, myProperties[i]);
|
||||
out.put('\n');
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Put a trailing null string so we know when to stop reading
|
||||
writeQuotedString(out, "");
|
||||
out.put('\n');
|
||||
out.put('\n');
|
||||
if(changed)
|
||||
{
|
||||
// Put a trailing null string so we know when to stop reading
|
||||
writeQuotedString(out, "");
|
||||
out.put('\n');
|
||||
out.put('\n');
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -243,7 +248,7 @@ void Properties::copy(const Properties& properties)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Properties::print()
|
||||
void Properties::print() const
|
||||
{
|
||||
cout << get(Cartridge_MD5) << "|"
|
||||
<< get(Cartridge_Name) << "|"
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Props.hxx,v 1.10 2006-11-19 00:48:55 stephena Exp $
|
||||
// $Id: Props.hxx,v 1.11 2006-12-01 18:30:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef PROPERTIES_HXX
|
||||
|
@ -57,7 +57,7 @@ enum PropertyType {
|
|||
if the property key is not found in the original property list.
|
||||
|
||||
@author Bradford W. Mott
|
||||
@version $Id: Props.hxx,v 1.10 2006-11-19 00:48:55 stephena Exp $
|
||||
@version $Id: Props.hxx,v 1.11 2006-12-01 18:30:18 stephena Exp $
|
||||
*/
|
||||
class Properties
|
||||
{
|
||||
|
@ -112,12 +112,12 @@ class Properties
|
|||
|
||||
@param out The output stream to use
|
||||
*/
|
||||
void save(ostream& out);
|
||||
void save(ostream& out) const;
|
||||
|
||||
/**
|
||||
Print the attributes of this properties object
|
||||
*/
|
||||
void print();
|
||||
void print() const;
|
||||
|
||||
/**
|
||||
Resets all properties to their defaults
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: PropsSet.cxx,v 1.23 2006-10-22 18:58:46 stephena Exp $
|
||||
// $Id: PropsSet.cxx,v 1.24 2006-12-01 18:30:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <sstream>
|
||||
|
@ -62,32 +62,33 @@ PropertiesSet::~PropertiesSet()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::getMD5(const string& md5, Properties &properties)
|
||||
void PropertiesSet::getMD5(const string& md5, Properties& properties,
|
||||
bool useDefaults) const
|
||||
{
|
||||
properties.setDefaults();
|
||||
bool found = false;
|
||||
|
||||
// First check our dynamic BST for the object
|
||||
if(myRoot != 0)
|
||||
if(!useDefaults && myRoot != 0)
|
||||
{
|
||||
TreeNode* current = myRoot;
|
||||
|
||||
while(current)
|
||||
{
|
||||
string currentMd5 = current->props->get(Cartridge_MD5);
|
||||
|
||||
const string& currentMd5 = current->props->get(Cartridge_MD5);
|
||||
if(currentMd5 == md5)
|
||||
{
|
||||
found = true;
|
||||
// We only report a node as found if it's to be saved.
|
||||
// Nodes in the BST that are marked as 'do not save' are
|
||||
// essentially treated as if they're not present.
|
||||
// What really should happen is the node should be removed,
|
||||
// and the tree rebalanced ...
|
||||
found = current->save;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(md5 < currentMd5)
|
||||
current = current->left;
|
||||
else
|
||||
current = current->right;
|
||||
}
|
||||
else if(md5 < currentMd5)
|
||||
current = current->left;
|
||||
else
|
||||
current = current->right;
|
||||
}
|
||||
|
||||
if(found)
|
||||
|
@ -133,6 +134,29 @@ void PropertiesSet::insert(const Properties& properties, bool save)
|
|||
insertNode(myRoot, properties, save);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::removeMD5(const string& md5)
|
||||
{
|
||||
// We only remove from the dynamic BST
|
||||
if(myRoot != 0)
|
||||
{
|
||||
TreeNode* current = myRoot;
|
||||
while(current)
|
||||
{
|
||||
const string& currentMd5 = current->props->get(Cartridge_MD5);
|
||||
if(currentMd5 == md5)
|
||||
{
|
||||
current->save = false; // make sure this node isn't saved
|
||||
break;
|
||||
}
|
||||
else if(md5 < currentMd5)
|
||||
current = current->left;
|
||||
else
|
||||
current = current->right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::insertNode(TreeNode* &t, const Properties& properties,
|
||||
bool save)
|
||||
|
@ -202,20 +226,26 @@ void PropertiesSet::load(const string& filename, bool save)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::save(ostream& out)
|
||||
bool PropertiesSet::save(const string& filename) const
|
||||
{
|
||||
ofstream out(filename.c_str(), ios::out);
|
||||
if(!out)
|
||||
return false;
|
||||
|
||||
saveNode(out, myRoot);
|
||||
out.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::print()
|
||||
void PropertiesSet::print() const
|
||||
{
|
||||
cout << size() << endl;
|
||||
printNode(myRoot); // FIXME - print out internal properties as well
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::saveNode(ostream& out, TreeNode *node)
|
||||
void PropertiesSet::saveNode(ostream& out, TreeNode *node) const
|
||||
{
|
||||
if(node)
|
||||
{
|
||||
|
@ -227,11 +257,12 @@ void PropertiesSet::saveNode(ostream& out, TreeNode *node)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::printNode(TreeNode *node)
|
||||
void PropertiesSet::printNode(TreeNode *node) const
|
||||
{
|
||||
if(node)
|
||||
{
|
||||
node->props->print();
|
||||
if(node->save)
|
||||
node->props->print();
|
||||
printNode(node->left);
|
||||
printNode(node->right);
|
||||
}
|
||||
|
@ -242,18 +273,3 @@ uInt32 PropertiesSet::size() const
|
|||
{
|
||||
return mySize;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool PropertiesSet::merge(const Properties& properties, const string& filename)
|
||||
{
|
||||
ofstream out(filename.c_str());
|
||||
if(out.is_open())
|
||||
{
|
||||
insert(properties, true); // always save merged properties
|
||||
save(out);
|
||||
out.close();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: PropsSet.hxx,v 1.14 2006-03-19 00:46:04 stephena Exp $
|
||||
// $Id: PropsSet.hxx,v 1.15 2006-12-01 18:30:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef PROPERTIES_SET_HXX
|
||||
|
@ -57,8 +57,10 @@ class PropertiesSet
|
|||
@param md5 The md5 of the property to get
|
||||
@param properties The property with the given MD5, or the default
|
||||
properties if not found
|
||||
@param defaults Use the built-in defaults, ignoring any external properties
|
||||
*/
|
||||
void getMD5(const string& md5, Properties& properties);
|
||||
void getMD5(const string& md5, Properties& properties,
|
||||
bool useDefaults = false) const;
|
||||
|
||||
/**
|
||||
Load properties from the specified file. Use the given
|
||||
|
@ -71,11 +73,31 @@ class PropertiesSet
|
|||
void load(const string& filename, bool save);
|
||||
|
||||
/**
|
||||
Save properties to the specified output stream
|
||||
Save properties to the specified file.
|
||||
|
||||
@param out The output stream to use
|
||||
@param filename Full pathname of output file to use
|
||||
|
||||
@return True on success, false on failure
|
||||
Failure occurs if file couldn't be opened for writing
|
||||
*/
|
||||
void save(ostream& out);
|
||||
bool save(const string& filename) const;
|
||||
|
||||
/**
|
||||
Insert the properties into the set. If a duplicate is inserted
|
||||
the old properties are overwritten with the new ones.
|
||||
|
||||
@param properties The collection of properties
|
||||
@param save Indicates whether to set the 'save' tag for
|
||||
this property
|
||||
*/
|
||||
void insert(const Properties& properties, bool save = true);
|
||||
|
||||
/**
|
||||
Marks the property with the given MD5 as being removed.
|
||||
|
||||
@param md5 The md5 of the property to remove
|
||||
*/
|
||||
void removeMD5(const string& md5);
|
||||
|
||||
/**
|
||||
Get the number of properties in the collection.
|
||||
|
@ -87,28 +109,7 @@ class PropertiesSet
|
|||
/**
|
||||
Prints the contents of the PropertiesSet as a flat file.
|
||||
*/
|
||||
void print();
|
||||
|
||||
/**
|
||||
Merge the given properties into the collection.
|
||||
|
||||
@param properties The properties to merge
|
||||
@param filename Full pathname of properties file to save
|
||||
|
||||
@return True on success, false on failure
|
||||
Failure occurs if file couldn't be opened for writing
|
||||
*/
|
||||
bool merge(const Properties& properties, const string& filename);
|
||||
|
||||
/**
|
||||
Insert the properties into the set. If a duplicate is inserted
|
||||
the old properties are overwritten with the new ones.
|
||||
|
||||
@param properties The collection of properties
|
||||
@param save Indicates whether to set the 'save' tag for
|
||||
this property
|
||||
*/
|
||||
void insert(const Properties& properties, bool save = true);
|
||||
void print() const;
|
||||
|
||||
private:
|
||||
struct TreeNode {
|
||||
|
@ -141,14 +142,14 @@ class PropertiesSet
|
|||
@param out The output stream to use
|
||||
@param node The current subroot of the tree
|
||||
*/
|
||||
void saveNode(ostream& out, TreeNode *node);
|
||||
void saveNode(ostream& out, TreeNode* node) const;
|
||||
|
||||
/**
|
||||
Prints the current node properties
|
||||
|
||||
@param node The current subroot of the tree
|
||||
*/
|
||||
void printNode(TreeNode *node);
|
||||
void printNode(TreeNode* node) const;
|
||||
|
||||
private:
|
||||
// The parent system for this object
|
||||
|
|
|
@ -20949,3 +20949,11 @@
|
|||
"Cartridge.Rarity" "Homebrew"
|
||||
"Display.Format" "PAL"
|
||||
""
|
||||
|
||||
"Cartridge.MD5" "807a8ff6216b00d52aba2dfea5d8d860"
|
||||
"Cartridge.Manufacturer" "John Payson"
|
||||
"Cartridge.Name" "Strat-O-Gems Deluxe"
|
||||
"Cartridge.Rarity" "Homebrew"
|
||||
"Display.Format" "PAL"
|
||||
"Display.Height" "250"
|
||||
""
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Dialog.cxx,v 1.48 2006-11-28 21:48:56 stephena Exp $
|
||||
// $Id: Dialog.cxx,v 1.49 2006-12-01 18:30:19 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -485,7 +485,7 @@ bool Dialog::handleNavEvent(Event::Type e)
|
|||
break;
|
||||
|
||||
case Event::UIOK:
|
||||
if(_okWidget)
|
||||
if(_okWidget && _okWidget->isEnabled())
|
||||
{
|
||||
// Receiving 'OK' is the same as getting the 'Select' event
|
||||
_okWidget->handleEvent(Event::UISelect);
|
||||
|
@ -494,7 +494,7 @@ bool Dialog::handleNavEvent(Event::Type e)
|
|||
break;
|
||||
|
||||
case Event::UICancel:
|
||||
if(_cancelWidget)
|
||||
if(_cancelWidget && _cancelWidget->isEnabled())
|
||||
{
|
||||
// Receiving 'Cancel' is the same as getting the 'Select' event
|
||||
_cancelWidget->handleEvent(Event::UISelect);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: GameInfoDialog.cxx,v 1.28 2006-11-28 21:48:56 stephena Exp $
|
||||
// $Id: GameInfoDialog.cxx,v 1.29 2006-12-01 18:30:20 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -22,6 +22,7 @@
|
|||
#include "GuiUtils.hxx"
|
||||
#include "OSystem.hxx"
|
||||
#include "Props.hxx"
|
||||
#include "PropsSet.hxx"
|
||||
#include "Widget.hxx"
|
||||
#include "Dialog.hxx"
|
||||
#include "EditTextWidget.hxx"
|
||||
|
@ -34,7 +35,8 @@ GameInfoDialog::GameInfoDialog(
|
|||
OSystem* osystem, DialogContainer* parent, const GUI::Font& font,
|
||||
GuiObject* boss, int x, int y, int w, int h)
|
||||
: Dialog(osystem, parent, x, y, w, h),
|
||||
CommandSender(boss)
|
||||
CommandSender(boss),
|
||||
myDefaultsSelected(false)
|
||||
{
|
||||
const int fontHeight = font.getFontHeight(),
|
||||
lineHeight = font.getLineHeight();
|
||||
|
@ -46,7 +48,7 @@ GameInfoDialog::GameInfoDialog(
|
|||
|
||||
// The tab widget
|
||||
xpos = 2; ypos = vBorder;
|
||||
myTab = new TabWidget(this, font, xpos, ypos, _w - 2*xpos, _h - 24 - 2*ypos);
|
||||
myTab = new TabWidget(this, font, xpos, ypos, _w - 2*xpos, _h - 24 - 2*ypos - 15);
|
||||
addTabWidget(myTab);
|
||||
|
||||
// 1) Cartridge properties
|
||||
|
@ -279,23 +281,29 @@ GameInfoDialog::GameInfoDialog(
|
|||
myTab->setActiveTab(0);
|
||||
|
||||
// Add message concerning usage
|
||||
new StaticTextWidget(this, font, 10, _h - 20, 120, fontHeight,
|
||||
"(*) Requires a ROM reload", kTextAlignLeft);
|
||||
lwidth = font.getStringWidth("(*) Changes to properties require a ROM reload");
|
||||
new StaticTextWidget(this, font, 10, _h - 38, lwidth, fontHeight,
|
||||
"(*) Changes to properties require a ROM reload",
|
||||
kTextAlignLeft);
|
||||
|
||||
// Add Defaults, OK and Cancel buttons
|
||||
ButtonWidget* b;
|
||||
wid.clear();
|
||||
b = addButton(font, 10, _h - 24, "Defaults", kDefaultsCmd);
|
||||
wid.push_back(b);
|
||||
#ifndef MAC_OSX
|
||||
b = addButton(font, _w - 2 * (kButtonWidth + 7), _h - 24, "OK", kOKCmd);
|
||||
wid.push_back(b);
|
||||
addOKWidget(b);
|
||||
b = addButton(font, _w - (kButtonWidth + 10), _h - 24, "Cancel", kCloseCmd);
|
||||
wid.push_back(b);
|
||||
addCancelWidget(b);
|
||||
myCancelButton =
|
||||
addButton(font, _w - (kButtonWidth + 10), _h - 24, "Cancel", kCloseCmd);
|
||||
wid.push_back(myCancelButton);
|
||||
addCancelWidget(myCancelButton);
|
||||
#else
|
||||
b = addButton(font, _w - 2 * (kButtonWidth + 7), _h - 24, "Cancel", kCloseCmd);
|
||||
wid.push_back(b);
|
||||
addCancelWidget(b);
|
||||
myCancelButton =
|
||||
addButton(font, _w - 2 * (kButtonWidth + 7), _h - 24, "Cancel", kCloseCmd);
|
||||
wid.push_back(myCancelButton);
|
||||
addCancelWidgetmyCancelButton);
|
||||
b = addButton(font, _w - (kButtonWidth + 10), _h - 24, "OK", kOKCmd);
|
||||
wid.push_back(b);
|
||||
addOKWidget(b);
|
||||
|
@ -310,30 +318,38 @@ GameInfoDialog::~GameInfoDialog()
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void GameInfoDialog::loadConfig()
|
||||
{
|
||||
myDefaultsSelected = false;
|
||||
myGameProperties = myOSystem->console().properties();
|
||||
loadView();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void GameInfoDialog::loadView()
|
||||
{
|
||||
string s;
|
||||
int i;
|
||||
|
||||
// Cartridge properties
|
||||
s = myGameProperties->get(Cartridge_Name);
|
||||
s = myGameProperties.get(Cartridge_Name);
|
||||
myName->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Cartridge_MD5);
|
||||
s = myGameProperties.get(Cartridge_MD5);
|
||||
myMD5->setLabel(s);
|
||||
|
||||
s = myGameProperties->get(Cartridge_Manufacturer);
|
||||
s = myGameProperties.get(Cartridge_Manufacturer);
|
||||
myManufacturer->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Cartridge_ModelNo);
|
||||
s = myGameProperties.get(Cartridge_ModelNo);
|
||||
myModelNo->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Cartridge_Rarity);
|
||||
s = myGameProperties.get(Cartridge_Rarity);
|
||||
myRarity->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Cartridge_Note);
|
||||
s = myGameProperties.get(Cartridge_Note);
|
||||
myNote->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Cartridge_Sound);
|
||||
s = myGameProperties.get(Cartridge_Sound);
|
||||
if(s == "MONO")
|
||||
mySound->setSelectedTag(1);
|
||||
else if(s == "STEREO")
|
||||
|
@ -341,7 +357,7 @@ void GameInfoDialog::loadConfig()
|
|||
else
|
||||
mySound->setSelectedTag(0);
|
||||
|
||||
s = myGameProperties->get(Cartridge_Type);
|
||||
s = myGameProperties.get(Cartridge_Type);
|
||||
for(i = 0; i < 21; ++i)
|
||||
{
|
||||
if(s == ourCartridgeList[i][1])
|
||||
|
@ -351,7 +367,7 @@ void GameInfoDialog::loadConfig()
|
|||
myType->setSelectedTag(i);
|
||||
|
||||
// Console properties
|
||||
s = myGameProperties->get(Console_LeftDifficulty);
|
||||
s = myGameProperties.get(Console_LeftDifficulty);
|
||||
if(s == "B")
|
||||
myLeftDiff->setSelectedTag(1);
|
||||
else if(s == "A")
|
||||
|
@ -359,7 +375,7 @@ void GameInfoDialog::loadConfig()
|
|||
else
|
||||
myLeftDiff->setSelectedTag(0);
|
||||
|
||||
s = myGameProperties->get(Console_RightDifficulty);
|
||||
s = myGameProperties.get(Console_RightDifficulty);
|
||||
if(s == "B")
|
||||
myRightDiff->setSelectedTag(1);
|
||||
else if(s == "A")
|
||||
|
@ -367,7 +383,7 @@ void GameInfoDialog::loadConfig()
|
|||
else
|
||||
myRightDiff->setSelectedTag(0);
|
||||
|
||||
s = myGameProperties->get(Console_TelevisionType);
|
||||
s = myGameProperties.get(Console_TelevisionType);
|
||||
if(s == "COLOR")
|
||||
myTVType->setSelectedTag(1);
|
||||
else if(s == "BLACKANDWHITE")
|
||||
|
@ -375,7 +391,7 @@ void GameInfoDialog::loadConfig()
|
|||
else
|
||||
myTVType->setSelectedTag(0);
|
||||
|
||||
s = myGameProperties->get(Console_SwapPorts);
|
||||
s = myGameProperties.get(Console_SwapPorts);
|
||||
if(s == "YES")
|
||||
mySwapPorts->setSelectedTag(1);
|
||||
else if(s == "NO")
|
||||
|
@ -384,7 +400,7 @@ void GameInfoDialog::loadConfig()
|
|||
mySwapPorts->setSelectedTag(0);
|
||||
|
||||
// Controller properties
|
||||
s = myGameProperties->get(Controller_Left);
|
||||
s = myGameProperties.get(Controller_Left);
|
||||
for(i = 0; i < 5; ++i)
|
||||
{
|
||||
if(s == ourControllerList[i][1])
|
||||
|
@ -393,7 +409,7 @@ void GameInfoDialog::loadConfig()
|
|||
i = (i == 5) ? 0: i + 1;
|
||||
myLeftController->setSelectedTag(i);
|
||||
|
||||
s = myGameProperties->get(Controller_Right);
|
||||
s = myGameProperties.get(Controller_Right);
|
||||
for(i = 0; i < 5; ++i)
|
||||
{
|
||||
if(s == ourControllerList[i][1])
|
||||
|
@ -403,7 +419,7 @@ void GameInfoDialog::loadConfig()
|
|||
myRightController->setSelectedTag(i);
|
||||
|
||||
// Display properties
|
||||
s = myGameProperties->get(Display_Format);
|
||||
s = myGameProperties.get(Display_Format);
|
||||
if(s == "NTSC")
|
||||
myFormat->setSelectedTag(1);
|
||||
else if(s == "PAL")
|
||||
|
@ -413,21 +429,21 @@ void GameInfoDialog::loadConfig()
|
|||
else
|
||||
myFormat->setSelectedTag(0);
|
||||
|
||||
s = myGameProperties->get(Display_XStart);
|
||||
s = myGameProperties.get(Display_XStart);
|
||||
myXStart->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Display_Width);
|
||||
s = myGameProperties.get(Display_Width);
|
||||
myWidth->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Display_YStart);
|
||||
s = myGameProperties.get(Display_YStart);
|
||||
myYStart->setEditString(s);
|
||||
|
||||
s = myGameProperties->get(Display_Height);
|
||||
s = myGameProperties.get(Display_Height);
|
||||
myHeight->setEditString(s);
|
||||
|
||||
myPPBlend->setEnabled(false);
|
||||
myPPBlendLabel->setEnabled(false);
|
||||
s = myGameProperties->get(Display_Phosphor);
|
||||
s = myGameProperties.get(Display_Phosphor);
|
||||
if(s == "YES")
|
||||
{
|
||||
myPhosphor->setSelectedTag(1);
|
||||
|
@ -439,11 +455,11 @@ void GameInfoDialog::loadConfig()
|
|||
else
|
||||
myPhosphor->setSelectedTag(0);
|
||||
|
||||
s = myGameProperties->get(Display_PPBlend);
|
||||
s = myGameProperties.get(Display_PPBlend);
|
||||
myPPBlend->setValue(atoi(s.c_str()));
|
||||
myPPBlendLabel->setLabel(s);
|
||||
|
||||
s = myGameProperties->get(Emulation_HmoveBlanks);
|
||||
s = myGameProperties.get(Emulation_HmoveBlanks);
|
||||
if(s == "YES")
|
||||
myHmoveBlanks->setSelectedTag(1);
|
||||
else if(s == "NO")
|
||||
|
@ -462,30 +478,30 @@ void GameInfoDialog::saveConfig()
|
|||
|
||||
// Cartridge properties
|
||||
s = myName->getEditString();
|
||||
myGameProperties->set(Cartridge_Name, s);
|
||||
myGameProperties.set(Cartridge_Name, s);
|
||||
|
||||
s = myManufacturer->getEditString();
|
||||
myGameProperties->set(Cartridge_Manufacturer, s);
|
||||
myGameProperties.set(Cartridge_Manufacturer, s);
|
||||
|
||||
s = myModelNo->getEditString();
|
||||
myGameProperties->set(Cartridge_ModelNo, s);
|
||||
myGameProperties.set(Cartridge_ModelNo, s);
|
||||
|
||||
s = myRarity->getEditString();
|
||||
myGameProperties->set(Cartridge_Rarity, s);
|
||||
myGameProperties.set(Cartridge_Rarity, s);
|
||||
|
||||
s = myNote->getEditString();
|
||||
myGameProperties->set(Cartridge_Note, s);
|
||||
myGameProperties.set(Cartridge_Note, s);
|
||||
|
||||
tag = mySound->getSelectedTag();
|
||||
s = (tag == 1) ? "Mono" : "Stereo";
|
||||
myGameProperties->set(Cartridge_Sound, s);
|
||||
myGameProperties.set(Cartridge_Sound, s);
|
||||
|
||||
tag = myType->getSelectedTag();
|
||||
for(i = 0; i < 21; ++i)
|
||||
{
|
||||
if(i == tag-1)
|
||||
{
|
||||
myGameProperties->set(Cartridge_Type, ourCartridgeList[i][1]);
|
||||
myGameProperties.set(Cartridge_Type, ourCartridgeList[i][1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -493,19 +509,19 @@ void GameInfoDialog::saveConfig()
|
|||
// Console properties
|
||||
tag = myLeftDiff->getSelectedTag();
|
||||
s = (tag == 1) ? "B" : "A";
|
||||
myGameProperties->set(Console_LeftDifficulty, s);
|
||||
myGameProperties.set(Console_LeftDifficulty, s);
|
||||
|
||||
tag = myRightDiff->getSelectedTag();
|
||||
s = (tag == 1) ? "B" : "A";
|
||||
myGameProperties->set(Console_RightDifficulty, s);
|
||||
myGameProperties.set(Console_RightDifficulty, s);
|
||||
|
||||
tag = myTVType->getSelectedTag();
|
||||
s = (tag == 1) ? "Color" : "BlackAndWhite";
|
||||
myGameProperties->set(Console_TelevisionType, s);
|
||||
myGameProperties.set(Console_TelevisionType, s);
|
||||
|
||||
tag = mySwapPorts->getSelectedTag();
|
||||
s = (tag == 1) ? "Yes" : "No";
|
||||
myGameProperties->set(Console_SwapPorts, s);
|
||||
myGameProperties.set(Console_SwapPorts, s);
|
||||
|
||||
// Controller properties
|
||||
tag = myLeftController->getSelectedTag();
|
||||
|
@ -513,7 +529,7 @@ void GameInfoDialog::saveConfig()
|
|||
{
|
||||
if(i == tag-1)
|
||||
{
|
||||
myGameProperties->set(Controller_Left, ourControllerList[i][0]);
|
||||
myGameProperties.set(Controller_Left, ourControllerList[i][0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -523,7 +539,7 @@ void GameInfoDialog::saveConfig()
|
|||
{
|
||||
if(i == tag-1)
|
||||
{
|
||||
myGameProperties->set(Controller_Right, ourControllerList[i][0]);
|
||||
myGameProperties.set(Controller_Right, ourControllerList[i][0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -531,30 +547,52 @@ void GameInfoDialog::saveConfig()
|
|||
// Display properties
|
||||
tag = myFormat->getSelectedTag();
|
||||
s = (tag == 3) ? "PAL60" : (tag == 2) ? "PAL" : "NTSC";
|
||||
myGameProperties->set(Display_Format, s);
|
||||
myGameProperties.set(Display_Format, s);
|
||||
|
||||
s = myXStart->getEditString();
|
||||
myGameProperties->set(Display_XStart, s);
|
||||
myGameProperties.set(Display_XStart, s);
|
||||
|
||||
s = myWidth->getEditString();
|
||||
myGameProperties->set(Display_Width, s);
|
||||
myGameProperties.set(Display_Width, s);
|
||||
|
||||
s = myYStart->getEditString();
|
||||
myGameProperties->set(Display_YStart, s);
|
||||
myGameProperties.set(Display_YStart, s);
|
||||
|
||||
s = myHeight->getEditString();
|
||||
myGameProperties->set(Display_Height, s);
|
||||
myGameProperties.set(Display_Height, s);
|
||||
|
||||
tag = myPhosphor->getSelectedTag();
|
||||
s = (tag == 1) ? "Yes" : "No";
|
||||
myGameProperties->set(Display_Phosphor, s);
|
||||
myGameProperties.set(Display_Phosphor, s);
|
||||
|
||||
s = myPPBlendLabel->getLabel();
|
||||
myGameProperties->set(Display_PPBlend, s);
|
||||
myGameProperties.set(Display_PPBlend, s);
|
||||
|
||||
tag = myHmoveBlanks->getSelectedTag();
|
||||
s = (tag == 1) ? "Yes" : "No";
|
||||
myGameProperties->set(Emulation_HmoveBlanks, s);
|
||||
myGameProperties.set(Emulation_HmoveBlanks, s);
|
||||
|
||||
// Determine whether to add or remove an entry from the properties set
|
||||
if(myDefaultsSelected)
|
||||
instance()->propSet().removeMD5(myGameProperties.get(Cartridge_MD5));
|
||||
else
|
||||
instance()->propSet().insert(myGameProperties, true);
|
||||
|
||||
// In any event, inform the Console and save the properties
|
||||
instance()->console().setProperties(myGameProperties);
|
||||
instance()->propSet().save(myOSystem->propertiesFile());
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void GameInfoDialog::setDefaults()
|
||||
{
|
||||
// Load the default properties
|
||||
string md5 = myGameProperties.get(Cartridge_MD5);
|
||||
instance()->propSet().getMD5(md5, myGameProperties, true);
|
||||
|
||||
// Reload the current dialog
|
||||
loadView();
|
||||
myDefaultsSelected = true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -565,10 +603,13 @@ void GameInfoDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
{
|
||||
case kOKCmd:
|
||||
saveConfig();
|
||||
instance()->eventHandler().saveProperties();
|
||||
close();
|
||||
break;
|
||||
|
||||
case kDefaultsCmd:
|
||||
setDefaults();
|
||||
break;
|
||||
|
||||
case kPhosphorChanged:
|
||||
{
|
||||
bool status = myPhosphor->getSelectedTag() == 1 ? true : false;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: GameInfoDialog.hxx,v 1.17 2006-11-04 19:38:25 stephena Exp $
|
||||
// $Id: GameInfoDialog.hxx,v 1.18 2006-12-01 18:30:20 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -41,16 +41,20 @@ class GameInfoDialog : public Dialog, public CommandSender
|
|||
GameInfoDialog(OSystem* osystem, DialogContainer* parent,
|
||||
const GUI::Font& font, GuiObject* boss,
|
||||
int x, int y, int w, int h);
|
||||
~GameInfoDialog();
|
||||
|
||||
void setGameProfile(Properties& props) { myGameProperties = &props; }
|
||||
virtual ~GameInfoDialog();
|
||||
|
||||
protected:
|
||||
void loadConfig();
|
||||
void saveConfig();
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
void setDefaults();
|
||||
void loadView();
|
||||
|
||||
private:
|
||||
TabWidget* myTab;
|
||||
ButtonWidget* myCancelButton;
|
||||
|
||||
// Cartridge properties
|
||||
EditTextWidget* myName;
|
||||
|
@ -95,7 +99,10 @@ class GameInfoDialog : public Dialog, public CommandSender
|
|||
};
|
||||
|
||||
/** Game properties for currently loaded ROM */
|
||||
Properties* myGameProperties;
|
||||
Properties myGameProperties;
|
||||
|
||||
/** Indicates that the default properties have been loaded */
|
||||
bool myDefaultsSelected;
|
||||
|
||||
/** Holds static strings for Cartridge type */
|
||||
static const char* ourCartridgeList[21][2];
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Menu.cxx,v 1.12 2005-12-18 18:37:03 stephena Exp $
|
||||
// $Id: Menu.cxx,v 1.13 2006-12-01 18:30:20 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "Dialog.hxx"
|
||||
|
@ -25,7 +25,7 @@ class Properties;
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
Menu::Menu(OSystem* osystem)
|
||||
: DialogContainer(osystem)
|
||||
: DialogContainer(osystem)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -40,9 +40,3 @@ void Menu::initialize()
|
|||
delete myBaseDialog;
|
||||
myBaseDialog = new OptionsDialog(myOSystem, this);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Menu::setGameProfile(Properties& props)
|
||||
{
|
||||
((OptionsDialog*)myBaseDialog)->setGameProfile(props);
|
||||
}
|
||||
|
|
|
@ -13,13 +13,12 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: Menu.hxx,v 1.11 2005-12-18 18:37:03 stephena Exp $
|
||||
// $Id: Menu.hxx,v 1.12 2006-12-01 18:30:21 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef MENU_HXX
|
||||
#define MENU_HXX
|
||||
|
||||
class Properties;
|
||||
class OSystem;
|
||||
|
||||
#include "DialogContainer.hxx"
|
||||
|
@ -28,7 +27,7 @@ class OSystem;
|
|||
The base dialog for all configuration menus in Stella.
|
||||
|
||||
@author Stephen Anthony
|
||||
@version $Id: Menu.hxx,v 1.11 2005-12-18 18:37:03 stephena Exp $
|
||||
@version $Id: Menu.hxx,v 1.12 2006-12-01 18:30:21 stephena Exp $
|
||||
*/
|
||||
class Menu : public DialogContainer
|
||||
{
|
||||
|
@ -43,18 +42,10 @@ class Menu : public DialogContainer
|
|||
*/
|
||||
virtual ~Menu();
|
||||
|
||||
public:
|
||||
/**
|
||||
Updates the basedialog to be of the type defined for this derived class.
|
||||
*/
|
||||
void initialize();
|
||||
|
||||
/**
|
||||
Adds the specified game info to the appropriate menu item
|
||||
|
||||
@param props The properties of the current game
|
||||
*/
|
||||
void setGameProfile(Properties& props);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: OptionsDialog.cxx,v 1.43 2006-11-28 21:48:56 stephena Exp $
|
||||
// $Id: OptionsDialog.cxx,v 1.44 2006-12-01 18:30:21 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -129,7 +129,7 @@ OptionsDialog::OptionsDialog(OSystem* osystem, DialogContainer* parent)
|
|||
checkBounds(fbWidth, fbHeight, &x, &y, &w, &h);
|
||||
myInputDialog = new InputDialog(myOSystem, parent, font, x, y, w, h);
|
||||
|
||||
w = 255; h = 175;
|
||||
w = 255; h = 190;
|
||||
checkBounds(fbWidth, fbHeight, &x, &y, &w, &h);
|
||||
myGameInfoDialog = new GameInfoDialog(myOSystem, parent, font, this, x, y, w, h);
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: OptionsDialog.hxx,v 1.18 2006-11-18 13:29:11 stephena Exp $
|
||||
// $Id: OptionsDialog.hxx,v 1.19 2006-12-01 18:30:21 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -22,7 +22,6 @@
|
|||
#ifndef OPTIONS_DIALOG_HXX
|
||||
#define OPTIONS_DIALOG_HXX
|
||||
|
||||
class Properties;
|
||||
class CommandSender;
|
||||
class DialogContainer;
|
||||
class AudioDialog;
|
||||
|
@ -43,8 +42,6 @@ class OptionsDialog : public Dialog
|
|||
OptionsDialog(OSystem* osystem, DialogContainer* parent);
|
||||
virtual ~OptionsDialog();
|
||||
|
||||
void setGameProfile(Properties& props) { myGameInfoDialog->setGameProfile(props); }
|
||||
|
||||
private:
|
||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
void checkBounds(int width, int height, int* x, int* y, int* w, int* h);
|
||||
|
|
Loading…
Reference in New Issue