mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 08:39:19 +02:00
pch migration to modules [wip]
This commit is contained in:
78
Console.cppm
Normal file
78
Console.cppm
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
This Source Code Form is subject to the
|
||||
terms of the Mozilla Public License, v.
|
||||
2.0. If a copy of the MPL was not
|
||||
distributed with this file, You can
|
||||
obtain one at
|
||||
http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
module;
|
||||
#include "utilities/Globals_macros.h"
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
export module eu07.console;
|
||||
import eu07.console.lpt;
|
||||
import eu07.console.pokeys55;
|
||||
import eu07.utilities.globals;
|
||||
import eu07.application.application;
|
||||
|
||||
export {
|
||||
class TConsoleDevice; // urządzenie podłączalne za pomocą DLL
|
||||
|
||||
// klasy konwersji znaków wprowadzanych z klawiatury
|
||||
class TKeyTrans
|
||||
{ // przekodowanie kodu naciśnięcia i zwolnienia klawisza
|
||||
public:
|
||||
short int iDown, iUp;
|
||||
};
|
||||
|
||||
class Console
|
||||
{ // Ra: klasa statyczna gromadząca sygnały sterujące oraz informacje zwrotne
|
||||
// Ra: stan wejścia zmieniany klawiaturą albo dedykowanym urządzeniem
|
||||
// Ra: stan wyjścia zmieniany przez symulację (mierniki, kontrolki)
|
||||
private:
|
||||
static int iMode; // tryb pracy
|
||||
static int iConfig; // dodatkowa informacja o sprzęcie (np. numer LPT)
|
||||
static int iBits; // podstawowy zestaw lampek
|
||||
static TPoKeys55 *PoKeys55[2]; // może ich być kilka
|
||||
static TLPT *LPT;
|
||||
static void BitsUpdate(int mask);
|
||||
// zmienne dla trybu "jednokabinowego", potrzebne do współpracy z pulpitem (PoKeys)
|
||||
// używając klawiatury, każdy pojazd powinien mieć własny stan przełączników
|
||||
// bazowym sterowaniem jest wirtualny strumień klawiatury
|
||||
// przy zmianie kabiny z PoKeys, do kabiny są wysyłane stany tych przycisków
|
||||
static int iSwitch[8]; // bistabilne w kabinie, załączane z [Shift], wyłączane bez
|
||||
static int iButton[8]; // monostabilne w kabinie, załączane podczas trzymania klawisza
|
||||
static TKeyTrans ktTable[4 * 256]; // tabela wczesnej konwersji klawiatury
|
||||
public:
|
||||
Console();
|
||||
~Console();
|
||||
static void ModeSet(int m, int h = 0);
|
||||
static void BitsSet(int mask, int entry = 0);
|
||||
static void BitsClear(int mask, int entry = 0);
|
||||
static int On();
|
||||
static void Off();
|
||||
|
||||
inline static bool Pressed(int x)
|
||||
{ // na razie tak - czyta się tylko klawiatura
|
||||
if (glfwGetKey(Application.window(), x) == GLFW_TRUE)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
};
|
||||
|
||||
static void ValueSet(int x, double y);
|
||||
static void Update();
|
||||
static float AnalogGet(int x);
|
||||
static float AnalogCalibrateGet(int x);
|
||||
static unsigned char DigitalGet(int x);
|
||||
static void OnKeyDown(int k);
|
||||
static void OnKeyUp(int k);
|
||||
static int KeyDownConvert(int k);
|
||||
static int KeyUpConvert(int k);
|
||||
};
|
||||
|
||||
|
||||
} // export
|
||||
Reference in New Issue
Block a user