2021-01-10 11:47:44 +00:00
|
|
|
#pragma once
|
|
|
|
|
2021-03-14 11:31:00 +00:00
|
|
|
#include "Common.h"
|
2021-10-29 12:09:23 +01:00
|
|
|
#include "Configuration/Config.h"
|
2021-01-20 18:17:34 +00:00
|
|
|
#include "frontends/common2/commonframe.h"
|
2021-02-23 19:32:00 +00:00
|
|
|
#include "frontends/common2/speed.h"
|
2021-01-10 11:47:44 +00:00
|
|
|
#include <SDL.h>
|
|
|
|
|
2021-02-25 16:04:50 +00:00
|
|
|
namespace common2
|
|
|
|
{
|
|
|
|
struct EmulatorOptions;
|
|
|
|
}
|
2021-02-23 19:32:00 +00:00
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
namespace sa2
|
2021-01-10 11:47:44 +00:00
|
|
|
{
|
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
class SDLFrame : public common2::CommonFrame
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
SDLFrame(const common2::EmulatorOptions & options);
|
2021-01-10 11:47:44 +00:00
|
|
|
|
2021-12-11 17:14:09 +00:00
|
|
|
void Begin() override;
|
|
|
|
void End() override;
|
2021-03-27 20:05:41 +00:00
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
void FrameRefreshStatus(int drawflags) override;
|
|
|
|
int FrameMessageBox(LPCSTR lpText, LPCSTR lpCaption, UINT uType) override;
|
|
|
|
void GetBitmap(LPCSTR lpBitmapName, LONG cb, LPVOID lpvBits) override;
|
2021-02-23 19:32:00 +00:00
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
void ProcessEvents(bool &quit);
|
2021-01-10 11:47:44 +00:00
|
|
|
|
2021-03-14 10:02:19 +00:00
|
|
|
void ExecuteOneFrame(const size_t msNextFrame);
|
2021-03-14 11:31:00 +00:00
|
|
|
void ChangeMode(const AppMode_e mode);
|
2021-06-07 18:34:17 +01:00
|
|
|
void SingleStep();
|
2021-10-29 12:09:23 +01:00
|
|
|
void ResetHardware();
|
|
|
|
bool HardwareChanged() const;
|
2021-05-26 17:48:44 +01:00
|
|
|
virtual void ResetSpeed();
|
2021-03-14 10:02:19 +00:00
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
const std::shared_ptr<SDL_Window> & GetWindow() const;
|
2021-01-10 11:47:44 +00:00
|
|
|
|
2021-04-01 16:04:50 +01:00
|
|
|
void getDragDropSlotAndDrive(size_t & slot, size_t & drive) const;
|
|
|
|
void setDragDropSlotAndDrive(const size_t slot, const size_t drive);
|
|
|
|
|
2021-06-07 18:34:17 +01:00
|
|
|
static void setGLSwapInterval(const int interval);
|
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
protected:
|
|
|
|
void SetApplicationIcon();
|
2021-02-23 19:32:00 +00:00
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
virtual void ProcessSingleEvent(const SDL_Event & event, bool & quit);
|
2021-06-05 13:51:07 +01:00
|
|
|
virtual void GetRelativeMousePosition(const SDL_MouseMotionEvent & motion, double & x, double & y) const = 0;
|
2021-02-23 19:32:00 +00:00
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
void ProcessKeyDown(const SDL_KeyboardEvent & key);
|
|
|
|
void ProcessKeyUp(const SDL_KeyboardEvent & key);
|
|
|
|
void ProcessText(const SDL_TextInputEvent & text);
|
2021-03-21 16:32:48 +00:00
|
|
|
void ProcessDropEvent(const SDL_DropEvent & drop);
|
2021-04-04 16:44:04 +01:00
|
|
|
void ProcessMouseButton(const SDL_MouseButtonEvent & button);
|
|
|
|
void ProcessMouseMotion(const SDL_MouseMotionEvent & motion);
|
2021-02-23 19:32:00 +00:00
|
|
|
|
2021-05-28 19:07:58 +01:00
|
|
|
void ExecuteInRunningMode(const size_t msNextFrame);
|
|
|
|
void ExecuteInDebugMode(const size_t msNextFrame);
|
2021-06-07 18:34:17 +01:00
|
|
|
void Execute(const DWORD uCycles);
|
2021-05-28 19:07:58 +01:00
|
|
|
|
2021-06-07 18:34:17 +01:00
|
|
|
void SetFullSpeed(const bool value);
|
|
|
|
bool CanDoFullSpeed();
|
2021-06-05 14:25:32 +01:00
|
|
|
|
2021-06-07 18:34:17 +01:00
|
|
|
static double GetRelativePosition(const int value, const int width);
|
2021-02-23 19:32:00 +00:00
|
|
|
|
2021-06-07 18:34:17 +01:00
|
|
|
int myTargetGLSwap;
|
2021-02-25 16:31:24 +00:00
|
|
|
bool myForceCapsLock;
|
|
|
|
int myMultiplier;
|
|
|
|
bool myFullscreen;
|
|
|
|
|
2021-04-01 16:04:50 +01:00
|
|
|
size_t myDragAndDropSlot;
|
|
|
|
size_t myDragAndDropDrive;
|
|
|
|
|
2021-06-07 18:34:17 +01:00
|
|
|
bool myScrollLockFullSpeed;
|
|
|
|
|
2021-02-25 16:31:24 +00:00
|
|
|
common2::Speed mySpeed;
|
2021-06-07 18:34:17 +01:00
|
|
|
|
|
|
|
std::shared_ptr<SDL_Window> myWindow;
|
2021-10-29 12:09:23 +01:00
|
|
|
|
|
|
|
CConfigNeedingRestart myHardwareConfig;
|
2021-02-25 16:31:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|