Files
maszyna/Console.h
2026-03-14 19:16:48 +00:00

73 lines
2.5 KiB
C++

/*
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/.
*/
#ifndef ConsoleH
#define ConsoleH
#include "utilities/Globals.h"
#include "application/application.h"
//---------------------------------------------------------------------------
class TConsoleDevice; // urządzenie podłączalne za pomocą DLL
class TPoKeys55;
class TLPT;
// 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);
};
#endif