mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 20:59:19 +02:00
Poprawka dla MWD aby kompilował się na VS
This commit is contained in:
369
Console/MWD.cpp
369
Console/MWD.cpp
@@ -14,10 +14,10 @@ http://mozilla.org/MPL/2.0/.
|
||||
author: Maciej Witek 2016
|
||||
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "MWD.h"
|
||||
#include "Logs.h"
|
||||
#include "Globals.h"
|
||||
#include "Logs.h"
|
||||
#include "World.h"
|
||||
|
||||
#include <windows.h>
|
||||
@@ -50,7 +50,8 @@ MWDComm::MWDComm() // konstruktor
|
||||
int i = 0;
|
||||
while (i < BYTETOWRITE)
|
||||
{
|
||||
if(i<BYTETOREAD)ReadDataBuff[i] = 0;
|
||||
if (i < BYTETOREAD)
|
||||
ReadDataBuff[i] = 0;
|
||||
WriteDataBuff[i] = 0;
|
||||
i++;
|
||||
}
|
||||
@@ -72,11 +73,15 @@ MWDComm::~MWDComm() // destruktor
|
||||
bool MWDComm::Open() // otwieranie portu COM
|
||||
{
|
||||
LPCSTR portId = Global::sMWDPortId.c_str();
|
||||
hComm = CreateFile(portId, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
hComm = CreateFile(portId, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
|
||||
if (hComm == INVALID_HANDLE_VALUE){
|
||||
if(GetLastError()==ERROR_FILE_NOT_FOUND){
|
||||
WriteLog("PortCOM ERROR: serial port does not exist"); //serial port does not exist. Inform user.
|
||||
if (hComm == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
if (GetLastError() == ERROR_FILE_NOT_FOUND)
|
||||
{
|
||||
WriteLog("PortCOM ERROR: serial port does not exist"); // serial port does not exist.
|
||||
// Inform user.
|
||||
}
|
||||
WriteLog("PortCOM ERROR! not open!");
|
||||
// some other error occurred. Inform user.
|
||||
@@ -138,8 +143,10 @@ bool MWDComm::Close() // zamykanie portu COM
|
||||
|
||||
inline bool MWDComm::GetMWDState() // sprawdzanie otwarcia portu COM
|
||||
{
|
||||
if(hComm > 0) return 1;
|
||||
else return 0;
|
||||
if (hComm > 0)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zapis do zmiennych
|
||||
@@ -147,10 +154,15 @@ bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zap
|
||||
DWORD bytes_read;
|
||||
ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL);
|
||||
|
||||
fAnalog[0] = (float)((ReadDataBuff[9]<<8)+ReadDataBuff[8]) / Global::fMWDAnalogCalib[0][3]; //4095.0f; //max wartosc wynikająca z rozdzielczości
|
||||
fAnalog[1] = (float)((ReadDataBuff[11]<<8)+ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3];
|
||||
fAnalog[2] = (float)((ReadDataBuff[13]<<8)+ReadDataBuff[12]) / Global::fMWDAnalogCalib[2][3];
|
||||
fAnalog[3] = (float)((ReadDataBuff[15]<<8)+ReadDataBuff[14]) / Global::fMWDAnalogCalib[3][3];
|
||||
fAnalog[0] =
|
||||
(float)((ReadDataBuff[9] << 8) + ReadDataBuff[8]) /
|
||||
Global::fMWDAnalogCalib[0][3]; // 4095.0f; //max wartosc wynikająca z rozdzielczości
|
||||
fAnalog[1] =
|
||||
(float)((ReadDataBuff[11] << 8) + ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3];
|
||||
fAnalog[2] =
|
||||
(float)((ReadDataBuff[13] << 8) + ReadDataBuff[12]) / Global::fMWDAnalogCalib[2][3];
|
||||
fAnalog[3] =
|
||||
(float)((ReadDataBuff[15] << 8) + ReadDataBuff[14]) / Global::fMWDAnalogCalib[3][3];
|
||||
CheckData();
|
||||
|
||||
return TRUE;
|
||||
@@ -174,9 +186,11 @@ bool MWDComm::Run() // wywo
|
||||
if (GetMWDState())
|
||||
{
|
||||
SendData();
|
||||
if (Global::bMWDInputDataEnable) ReadData();
|
||||
if (Global::bMWDInputDataEnable)
|
||||
ReadData();
|
||||
return 1;
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteLog("Port COM: connection ERROR!");
|
||||
// może spróbować się połączyć znowu?
|
||||
@@ -186,7 +200,7 @@ bool MWDComm::Run() // wywo
|
||||
}
|
||||
}
|
||||
|
||||
bool MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
||||
void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
||||
{
|
||||
int i = 0;
|
||||
while (i < 6)
|
||||
@@ -200,9 +214,11 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów
|
||||
1 M wyłącznik wył. szybkiego
|
||||
2 Shift+M impuls załączający wył. szybki
|
||||
3 N odblok. przekaźników nadmiarowych i różnicowego obwodu głównego
|
||||
3 N odblok. przekaźników nadmiarowych
|
||||
i różnicowego obwodu głównego
|
||||
4 NC rezerwa
|
||||
5 Ctrl+N odblok. przek. nadmiarowych przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
||||
5 Ctrl+N odblok. przek. nadmiarowych
|
||||
przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
||||
6 L wył. styczników liniowych
|
||||
7 SPACE kasowanie czuwaka
|
||||
|
||||
@@ -211,7 +227,8 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
2 (Shift) C sprężarka
|
||||
3 S piasecznice
|
||||
4 (Shift) H ogrzewanie składu
|
||||
5 przel. hamowania Shift+B pspbpwy Ctrl+B pospieszny B towarowy
|
||||
5 przel. hamowania Shift+B
|
||||
pspbpwy Ctrl+B pospieszny B towarowy
|
||||
6 przel. hamowania
|
||||
7 (Shift) F rozruch w/n
|
||||
|
||||
@@ -235,169 +252,235 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
*/
|
||||
|
||||
/* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym
|
||||
wejściu w pętlę MWD puszczamy bo inaczej nie działa */
|
||||
wejściu w pętlę MWD puszczamy bo inaczej nie działa
|
||||
*/
|
||||
|
||||
// wciskanie przycisków klawiatury
|
||||
/*PORT0*/
|
||||
if(maskData[0] & 0x02 && lastStateData[0] & 0x02) KeyBoard('M',1); // wyłączenie wyłącznika szybkiego
|
||||
else KeyBoard('M',0); // monostabilny
|
||||
if(maskData[0] & 0x04 && lastStateData[0] & 0x04) { // impuls załączający wyłącznik szybki
|
||||
if (maskData[0] & 0x02 && lastStateData[0] & 0x02)
|
||||
KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego
|
||||
else
|
||||
KeyBoard('M', 0); // monostabilny
|
||||
if (maskData[0] & 0x04 && lastStateData[0] & 0x04)
|
||||
{ // impuls załączający wyłącznik szybki
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard('M', 1);
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
KeyBoard('M', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
if(maskData[0] & 0x08 && lastStateData[0] & 0x08) KeyBoard('N',1); // odblok nadmiarowego silników trakcyjnych
|
||||
else KeyBoard('N',0); // monostabilny
|
||||
if(maskData[0] & 0x20 && lastStateData[0] & 0x20) { // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
||||
if (maskData[0] & 0x08 && lastStateData[0] & 0x08)
|
||||
KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych
|
||||
else
|
||||
KeyBoard('N', 0); // monostabilny
|
||||
if (maskData[0] & 0x20 && lastStateData[0] & 0x20)
|
||||
{ // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
||||
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
||||
KeyBoard('N', 1); // monostabilny
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
KeyBoard('N', 0);
|
||||
KeyBoard(0x11, 0);
|
||||
}
|
||||
if(maskData[0] & 0x40 && lastStateData[0] & 0x40) KeyBoard('L',1); // wył. styczników liniowych
|
||||
else KeyBoard('L',0); // monostabilny
|
||||
if(maskData[0] & 0x80 && lastStateData[0] & 0x80) KeyBoard(0x20,1); // kasowanie czuwaka/SHP
|
||||
else KeyBoard(0x20,0); // kasowanie czuwaka/SHP
|
||||
if (maskData[0] & 0x40 && lastStateData[0] & 0x40)
|
||||
KeyBoard('L', 1); // wył. styczników liniowych
|
||||
else
|
||||
KeyBoard('L', 0); // monostabilny
|
||||
if (maskData[0] & 0x80 && lastStateData[0] & 0x80)
|
||||
KeyBoard(0x20, 1); // kasowanie czuwaka/SHP
|
||||
else
|
||||
KeyBoard(0x20, 0); // kasowanie czuwaka/SHP
|
||||
|
||||
/*PORT1*/
|
||||
|
||||
// puszczanie przycisku bistabilnego klawiatury
|
||||
if(maskSwitch[1]&0x02){
|
||||
if(bitSwitch[1] &0x02){
|
||||
if (maskSwitch[1] & 0x02)
|
||||
{
|
||||
if (bitSwitch[1] & 0x02)
|
||||
{
|
||||
KeyBoard('X', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('X',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('X', 0);
|
||||
maskSwitch[1] &= ~0x02;
|
||||
}
|
||||
if(maskSwitch[1]&0x04){
|
||||
if(bitSwitch[1] &0x04){
|
||||
if (maskSwitch[1] & 0x04)
|
||||
{
|
||||
if (bitSwitch[1] & 0x04)
|
||||
{
|
||||
KeyBoard('C', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('C',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('C', 0);
|
||||
maskSwitch[1] &= ~0x04;
|
||||
}
|
||||
if(maskSwitch[1]&0x10){
|
||||
if(bitSwitch[1] &0x10){
|
||||
if (maskSwitch[1] & 0x10)
|
||||
{
|
||||
if (bitSwitch[1] & 0x10)
|
||||
{
|
||||
KeyBoard('H', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('H',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('H', 0);
|
||||
maskSwitch[1] &= ~0x10;
|
||||
}
|
||||
if(maskSwitch[1] & 0x20 || maskSwitch[1] & 0x40){
|
||||
if(maskSwitch[1] & 0x20) KeyBoard(0x10,0);
|
||||
if(maskSwitch[1] & 0x40) KeyBoard(0x11,0);
|
||||
if (maskSwitch[1] & 0x20 || maskSwitch[1] & 0x40)
|
||||
{
|
||||
if (maskSwitch[1] & 0x20)
|
||||
KeyBoard(0x10, 0);
|
||||
if (maskSwitch[1] & 0x40)
|
||||
KeyBoard(0x11, 0);
|
||||
KeyBoard('B', 0);
|
||||
maskSwitch[1] &= ~0x60;
|
||||
}
|
||||
if(maskSwitch[1]&0x80){
|
||||
if(bitSwitch[1] &0x80){
|
||||
if (maskSwitch[1] & 0x80)
|
||||
{
|
||||
if (bitSwitch[1] & 0x80)
|
||||
{
|
||||
KeyBoard('F', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('F',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('F', 0);
|
||||
maskSwitch[1] &= ~0x80;
|
||||
}
|
||||
|
||||
|
||||
if(maskData[1] & 0x02 && lastStateData[1] & 0x02) { // przetwornica
|
||||
if (maskData[1] & 0x02 && lastStateData[1] & 0x02)
|
||||
{ // przetwornica
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('X', 1);
|
||||
maskSwitch[1] |= 0x02;
|
||||
bitSwitch[1] |= 0x02;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x02;
|
||||
bitSwitch[1] &= ~0x02;
|
||||
KeyBoard('X', 1);
|
||||
}
|
||||
if(maskData[1] & 0x04 && lastStateData[1] & 0x04) { // sprężarka
|
||||
if (maskData[1] & 0x04 && lastStateData[1] & 0x04)
|
||||
{ // sprężarka
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('C', 1);
|
||||
maskSwitch[1] |= 0x04;
|
||||
bitSwitch[1] |= 0x04;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x04;
|
||||
bitSwitch[1] &= ~0x04;
|
||||
KeyBoard('C', 1);
|
||||
}
|
||||
if(maskData[1] & 0x08 && lastStateData[1] & 0x08) KeyBoard('S',1); // piasecznica
|
||||
else KeyBoard('S',0); // monostabilny
|
||||
if(maskData[1] & 0x10 && lastStateData[1] & 0x10) { // ogrzewanie składu
|
||||
if (maskData[1] & 0x08 && lastStateData[1] & 0x08)
|
||||
KeyBoard('S', 1); // piasecznica
|
||||
else
|
||||
KeyBoard('S', 0); // monostabilny
|
||||
if (maskData[1] & 0x10 && lastStateData[1] & 0x10)
|
||||
{ // ogrzewanie składu
|
||||
KeyBoard(0x11, 1); // bistabilny
|
||||
KeyBoard('H', 1);
|
||||
maskSwitch[1] |= 0x10;
|
||||
bitSwitch[1] |= 0x10;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x10;
|
||||
bitSwitch[1] &= ~0x10;
|
||||
KeyBoard('H', 1);
|
||||
}
|
||||
if(maskData[1] & 0x20 || maskData[1] & 0x40){ // przełącznik hamowania
|
||||
if(lastStateData[1] & 0x20){ // Shift+B
|
||||
if (maskData[1] & 0x20 || maskData[1] & 0x40)
|
||||
{ // przełącznik hamowania
|
||||
if (lastStateData[1] & 0x20)
|
||||
{ // Shift+B
|
||||
KeyBoard(0x10, 1);
|
||||
maskSwitch[1] |= 0x20;
|
||||
}else if(lastStateData[1] & 0x40){ // Ctrl+B
|
||||
}
|
||||
else if (lastStateData[1] & 0x40)
|
||||
{ // Ctrl+B
|
||||
KeyBoard(0x11, 1);
|
||||
maskSwitch[1] |= 0x40;
|
||||
}
|
||||
KeyBoard('B', 1);
|
||||
}
|
||||
|
||||
if(maskData[1] & 0x80 && lastStateData[1] & 0x80) { // rozruch wysoki/niski
|
||||
if (maskData[1] & 0x80 && lastStateData[1] & 0x80)
|
||||
{ // rozruch wysoki/niski
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('F', 1);
|
||||
maskSwitch[1] |= 0x80;
|
||||
bitSwitch[1] |= 0x80;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x80;
|
||||
bitSwitch[1] &= ~0x80;
|
||||
KeyBoard('F', 1);
|
||||
}
|
||||
|
||||
|
||||
/*PORT2*/
|
||||
|
||||
if(maskSwitch[2]&0x01){
|
||||
if(bitSwitch[2] &0x01){
|
||||
if (maskSwitch[2] & 0x01)
|
||||
{
|
||||
if (bitSwitch[2] & 0x01)
|
||||
{
|
||||
KeyBoard('P', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('P',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('P', 0);
|
||||
maskSwitch[2] &= ~0x01;
|
||||
}
|
||||
if(maskSwitch[2]&0x02){
|
||||
if(bitSwitch[2] &0x02){
|
||||
if (maskSwitch[2] & 0x02)
|
||||
{
|
||||
if (bitSwitch[2] & 0x02)
|
||||
{
|
||||
KeyBoard('O', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('O',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('O', 0);
|
||||
maskSwitch[2] &= ~0x02;
|
||||
}
|
||||
|
||||
|
||||
if(maskData[2] & 0x01 && lastStateData[2] & 0x01) { // pantograf przedni
|
||||
if (maskData[2] & 0x01 && lastStateData[2] & 0x01)
|
||||
{ // pantograf przedni
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('P', 1);
|
||||
maskSwitch[2] |= 0x01;
|
||||
bitSwitch[2] |= 0x01;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[2] |= 0x01;
|
||||
bitSwitch[2] &= ~0x01;
|
||||
KeyBoard('P', 1);
|
||||
}
|
||||
if(maskData[2] & 0x02 && lastStateData[2] & 0x02) { // pantograf tylni
|
||||
if (maskData[2] & 0x02 && lastStateData[2] & 0x02)
|
||||
{ // pantograf tylni
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('O', 1);
|
||||
maskSwitch[2] |= 0x02;
|
||||
bitSwitch[2] |= 0x02;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[2] |= 0x02;
|
||||
bitSwitch[2] &= ~0x02;
|
||||
KeyBoard('O', 1);
|
||||
}
|
||||
if(maskData[2] & 0x04 && lastStateData[2] & 0x04) { // przyhamowanie przy poślizgu
|
||||
if (maskData[2] & 0x04 && lastStateData[2] & 0x04)
|
||||
{ // przyhamowanie przy poślizgu
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard(0x0D, 1);
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
KeyBoard(0x0D, 0);
|
||||
KeyBoard(0x10, 0);
|
||||
@@ -420,35 +503,48 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
KeyBoard(0x11,0);
|
||||
KeyBoard(' ',1);
|
||||
}*/
|
||||
if(maskData[2] & 0x20 && lastStateData[2] & 0x20) KeyBoard(0x66,1); // odluźniacz
|
||||
else KeyBoard(0x66,0); // monostabilny
|
||||
if(maskData[2] & 0x40 && lastStateData[2] & 0x40) { // syrena wysoka
|
||||
if (maskData[2] & 0x20 && lastStateData[2] & 0x20)
|
||||
KeyBoard(0x66, 1); // odluźniacz
|
||||
else
|
||||
KeyBoard(0x66, 0); // monostabilny
|
||||
if (maskData[2] & 0x40 && lastStateData[2] & 0x40)
|
||||
{ // syrena wysoka
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard('A', 1);
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
KeyBoard('A', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
if(maskData[2] & 0x80 && lastStateData[2] & 0x80) KeyBoard('A',1); // syrena niska
|
||||
else KeyBoard('A',0); // monostabilny
|
||||
|
||||
if (maskData[2] & 0x80 && lastStateData[2] & 0x80)
|
||||
KeyBoard('A', 1); // syrena niska
|
||||
else
|
||||
KeyBoard('A', 0); // monostabilny
|
||||
|
||||
/*PORT3*/
|
||||
|
||||
if(maskSwitch[3]&0x01){
|
||||
if(bitSwitch[3] &0x01){
|
||||
if (maskSwitch[3] & 0x01)
|
||||
{
|
||||
if (bitSwitch[3] & 0x01)
|
||||
{
|
||||
KeyBoard('J', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}else KeyBoard('J',0);
|
||||
}
|
||||
else
|
||||
KeyBoard('J', 0);
|
||||
maskSwitch[3] &= ~0x01;
|
||||
}
|
||||
|
||||
if(maskData[3] & 0x01 && lastStateData[3] & 0x01) { // bateria
|
||||
if (maskData[3] & 0x01 && lastStateData[3] & 0x01)
|
||||
{ // bateria
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('J', 1);
|
||||
maskSwitch[3] |= 0x01;
|
||||
bitSwitch[3] |= 0x01;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[3] |= 0x01;
|
||||
bitSwitch[3] &= ~0x01;
|
||||
KeyBoard('J', 1);
|
||||
@@ -543,7 +639,8 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
KeyBoard('X',1); //
|
||||
KeyBoard('X',0);
|
||||
KeyBoard(0x10,0);
|
||||
}else{ KeyBoard('X',1); //
|
||||
}else{
|
||||
KeyBoard('X',1); //
|
||||
KeyBoard('X',0);
|
||||
}
|
||||
if(maskData[5] & 0x04 && lastStateData[1] & 0x04) {
|
||||
@@ -551,53 +648,63 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
KeyBoard('C',1); //
|
||||
KeyBoard('C',0);
|
||||
KeyBoard(0x10,0);
|
||||
}else{ KeyBoard('C',1); //
|
||||
}else{
|
||||
KeyBoard('C',1); //
|
||||
KeyBoard('C',0);
|
||||
}
|
||||
if(maskData[5] & 0x08 && lastStateData[1] & 0x08) KeyBoard('S',1); //
|
||||
else KeyBoard('S',0);
|
||||
else
|
||||
KeyBoard('S',0);
|
||||
|
||||
|
||||
if(maskData[5] & 0x10 && lastStateData[1] & 0x10) {
|
||||
KeyBoard(0x11,1);
|
||||
KeyBoard('H',1);
|
||||
}else{ KeyBoard('H',0);
|
||||
}else{
|
||||
KeyBoard('H',0);
|
||||
KeyBoard(0x11,0);
|
||||
}
|
||||
if(maskData[5] & 0x20 && lastStateData[1] & 0x20) {
|
||||
KeyBoard(0x11,1);
|
||||
KeyBoard(' ',1);
|
||||
}else{ KeyBoard(' ',0);
|
||||
}else{
|
||||
KeyBoard(' ',0);
|
||||
KeyBoard(0x11,0);
|
||||
}
|
||||
if(maskData[5] & 0x40 && lastStateData[1] & 0x40) {
|
||||
KeyBoard(0x10,1);
|
||||
KeyBoard(' ',1);
|
||||
}else{ KeyBoard(' ',0);
|
||||
}else{
|
||||
KeyBoard(' ',0);
|
||||
KeyBoard(0x10,0);
|
||||
}
|
||||
if(maskData[5] & 0x80 && lastStateData[1] & 0x80) {
|
||||
KeyBoard(0x10,1);
|
||||
KeyBoard('F',1);
|
||||
}else{ KeyBoard('F',0);
|
||||
}else{
|
||||
KeyBoard('F',0);
|
||||
KeyBoard(0x10,0);
|
||||
}//*/
|
||||
|
||||
/* NASTAWNIK, BOCZNIK i KIERUNEK */
|
||||
|
||||
if(bnkMask & 1){ //puszczanie klawiszy
|
||||
if (bnkMask & 1)
|
||||
{ // puszczanie klawiszy
|
||||
KeyBoard(0x6B, 0);
|
||||
bnkMask &= ~1;
|
||||
}
|
||||
if(bnkMask & 2){
|
||||
if (bnkMask & 2)
|
||||
{
|
||||
KeyBoard(0x6D, 0);
|
||||
bnkMask &= ~2;
|
||||
}
|
||||
if(bnkMask & 4){
|
||||
if (bnkMask & 4)
|
||||
{
|
||||
KeyBoard(0x6F, 0);
|
||||
bnkMask &= ~4;
|
||||
}
|
||||
if(bnkMask & 8){
|
||||
if (bnkMask & 8)
|
||||
{
|
||||
KeyBoard(0x6A, 0);
|
||||
bnkMask &= ~8;
|
||||
}
|
||||
@@ -628,38 +735,59 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
||||
}
|
||||
|
||||
/* Obsługa HASLERA */
|
||||
if(ReadDataBuff[0] & 0x80) bCzuwak = true;
|
||||
if (ReadDataBuff[0] & 0x80)
|
||||
bCzuwak = true;
|
||||
|
||||
if(bKabina1){ // logika rysika 1
|
||||
if (bKabina1)
|
||||
{ // logika rysika 1
|
||||
bRysik1H = true;
|
||||
bRysik1L = false;
|
||||
if(bPrzejazdSHP) bRysik1H = false;
|
||||
}else if(bKabina2){
|
||||
if (bPrzejazdSHP)
|
||||
bRysik1H = false;
|
||||
}
|
||||
else if (bKabina2)
|
||||
{
|
||||
bRysik1L = true;
|
||||
bRysik1H = false;
|
||||
if(bPrzejazdSHP) bRysik1L = false;
|
||||
}else{
|
||||
if (bPrzejazdSHP)
|
||||
bRysik1L = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
bRysik1H = false;
|
||||
bRysik1L = false;
|
||||
}
|
||||
|
||||
if(bHamowanie){ // logika rysika 2
|
||||
if (bHamowanie)
|
||||
{ // logika rysika 2
|
||||
bRysik2H = false;
|
||||
bRysik2L = true;
|
||||
}else{
|
||||
if(bCzuwak) bRysik2H = true;
|
||||
else bRysik2H = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bCzuwak)
|
||||
bRysik2H = true;
|
||||
else
|
||||
bRysik2H = false;
|
||||
bRysik2L = false;
|
||||
}
|
||||
bCzuwak = false;
|
||||
if(bRysik1H)WriteDataBuff[6] |= 1<<0;
|
||||
else WriteDataBuff[6] &= ~(1<<0);
|
||||
if(bRysik1L)WriteDataBuff[6] |= 1<<1;
|
||||
else WriteDataBuff[6] &= ~(1<<1);
|
||||
if(bRysik2H)WriteDataBuff[6] |= 1<<2;
|
||||
else WriteDataBuff[6] &= ~(1<<2);
|
||||
if(bRysik2L)WriteDataBuff[6] |= 1<<3;
|
||||
else WriteDataBuff[6] &= ~(1<<3);
|
||||
if (bRysik1H)
|
||||
WriteDataBuff[6] |= 1 << 0;
|
||||
else
|
||||
WriteDataBuff[6] &= ~(1 << 0);
|
||||
if (bRysik1L)
|
||||
WriteDataBuff[6] |= 1 << 1;
|
||||
else
|
||||
WriteDataBuff[6] &= ~(1 << 1);
|
||||
if (bRysik2H)
|
||||
WriteDataBuff[6] |= 1 << 2;
|
||||
else
|
||||
WriteDataBuff[6] &= ~(1 << 2);
|
||||
if (bRysik2L)
|
||||
WriteDataBuff[6] |= 1 << 3;
|
||||
else
|
||||
WriteDataBuff[6] &= ~(1 << 3);
|
||||
}
|
||||
|
||||
void MWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
||||
@@ -673,15 +801,16 @@ void MWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
||||
|
||||
ip.ki.wVk = key; // virtual-key code for the "a" key
|
||||
|
||||
if(s){// Press the "A" key
|
||||
if (s)
|
||||
{ // Press the "A" key
|
||||
ip.ki.dwFlags = 0; // 0 for key press
|
||||
SendInput(1, &ip, sizeof(INPUT));
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
|
||||
SendInput(1, &ip, sizeof(INPUT));
|
||||
}
|
||||
|
||||
// return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ http://mozilla.org/MPL/2.0/.
|
||||
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
||||
*/
|
||||
|
||||
|
||||
#ifndef MWDH
|
||||
#define MWDH
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -33,7 +32,7 @@ private:
|
||||
|
||||
bool ReadData(); // BYTE *pReadDataBuff);
|
||||
bool SendData(); // BYTE *pWriteDataBuff);
|
||||
bool CheckData(); //sprawdzanie zmian wejść i kontrola mazaków HASLERA
|
||||
void CheckData(); // sprawdzanie zmian wejść i kontrola mazaków HASLERA
|
||||
void KeyBoard(int key, bool s);
|
||||
|
||||
bool bRysik1H;
|
||||
@@ -55,8 +54,6 @@ public:
|
||||
bool bHamowanie;
|
||||
bool bCzuwak;
|
||||
|
||||
|
||||
|
||||
float fAnalog[4]; // trzymanie danych z wejść analogowych
|
||||
|
||||
BYTE ReadDataBuff[17]; // bufory danych
|
||||
@@ -67,7 +64,6 @@ public:
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
|
||||
|
||||
|
||||
248
Driver.cpp
248
Driver.cpp
@@ -11,21 +11,21 @@ http://mozilla.org/MPL/2.0/.
|
||||
Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
||||
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Driver.h"
|
||||
|
||||
#include <direct.h>
|
||||
#include "Globals.h"
|
||||
#include "Logs.h"
|
||||
#include "mtable.h"
|
||||
|
||||
#include "DynObj.h"
|
||||
#include "Event.h"
|
||||
#include "Globals.h"
|
||||
#include "Ground.h"
|
||||
#include "Logs.h"
|
||||
#include "McZapkie/MOVER.h"
|
||||
#include "McZapkie/mctools.h"
|
||||
#include "MemCell.h"
|
||||
#include "World.h"
|
||||
#include "McZapkie/mctools.h"
|
||||
#include "McZapkie/MOVER.h"
|
||||
#include "mtable.h"
|
||||
#include <direct.h>
|
||||
|
||||
#define LOGVELOCITY 0
|
||||
#define LOGORDERS 0
|
||||
@@ -162,7 +162,8 @@ void TSpeedPos::CommandCheck()
|
||||
// przystanek, najwy<77>ej AI zignoruje przy analizie tabelki
|
||||
if ((iFlags & spPassengerStopPoint) == 0)
|
||||
fVelNext = 0.0; // TrainParams->IsStop()?0.0:-1.0; //na razie tak
|
||||
iFlags |= spPassengerStopPoint; // niestety nie da si<73> w tym miejscu wsp<73><70>pracowa<77> z rozk<7A>adem
|
||||
iFlags |=
|
||||
spPassengerStopPoint; // niestety nie da si<73> w tym miejscu wsp<73><70>pracowa<77> z rozk<7A>adem
|
||||
break;
|
||||
case cm_SetProximityVelocity:
|
||||
// musi zosta<74> gdy<64> inaczej nie dzia<69>aj<61> manewry
|
||||
@@ -204,7 +205,8 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
|
||||
}
|
||||
else
|
||||
{
|
||||
iFlags ^= spElapsed; // 32-mini<6E>ty - b<>dziemy liczy<7A> odleg<65>o<EFBFBD><6F> wzgl<67>dem przeciwnego ko<6B>ca
|
||||
iFlags ^=
|
||||
spElapsed; // 32-mini<6E>ty - b<>dziemy liczy<7A> odleg<65>o<EFBFBD><6F> wzgl<67>dem przeciwnego ko<6B>ca
|
||||
// toru (nadal mo<6D>e by<62> z przodu i ogranicza<7A>)
|
||||
if ((iFlags & 0x43) == 3) // tylko je<6A>li (istotny) tor, bo eventy s<> punktowe
|
||||
if (trTrack) // mo<6D>e by<62> NULL, je<6A>li koniec toru (????)
|
||||
@@ -245,7 +247,8 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("Tor " + trTrack->NameGet() + " zajety przed pojazdem. Num=" +
|
||||
std::to_string(trTrack->iNumDynamics) + "Dist= " + std::to_string(fDist));
|
||||
std::to_string(trTrack->iNumDynamics) +
|
||||
"Dist= " + std::to_string(fDist));
|
||||
fVelNext =
|
||||
0.0; // to zabroni<6E> wjazdu (chyba <20>e ten z przodu te<74> jedzie prosto)
|
||||
}
|
||||
@@ -263,13 +266,15 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
|
||||
// na Mydelniczce potrafi skanowa<77> na wprost mimo pojechania na bok
|
||||
}
|
||||
// poni<6E>sze nie dotyczy trybu <20><>czenia?
|
||||
if ((iFlags & spElapsed) ? false :
|
||||
if ((iFlags & spElapsed) ?
|
||||
false :
|
||||
trTrack->iNumDynamics >
|
||||
0) // je<6A>li jeszcze nie wjechano na tor, a co<63> na nim jest
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("Rozjazd " + trTrack->NameGet() + " zajety przed pojazdem. Num=" +
|
||||
std::to_string(trTrack->iNumDynamics) + "Dist= "+ std::to_string(fDist));
|
||||
std::to_string(trTrack->iNumDynamics) +
|
||||
"Dist= " + std::to_string(fDist));
|
||||
// fDist -= 30.0;
|
||||
fVelNext = 0.0; // to niech stanie w zwi<77>kszonej odleg<65>o<EFBFBD>ci
|
||||
// else if (fVelNext==0.0) //je<6A>li zosta<74>a wyzerowana
|
||||
@@ -301,10 +306,12 @@ std::string TSpeedPos::TableText()
|
||||
return "Flags=#" + to_hex_str(iFlags, 8) + ", Dist=" + to_string(fDist, 1, 7) +
|
||||
", Vel=" + std::to_string(fVelNext) + ", Name=" + GetName();
|
||||
// if (iFlags & spTrack) // je<6A>li tor
|
||||
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) +
|
||||
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1)
|
||||
// +
|
||||
// ", Vel=" + AnsiString(fVelNext) + ", Track=" + trTrack->NameGet();
|
||||
// else if (iFlags & spEvent) // je<6A>li event
|
||||
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) +
|
||||
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1)
|
||||
// +
|
||||
// ", Vel=" + AnsiString(fVelNext) + ", Event=" + evEvent->asName;
|
||||
}
|
||||
return "Empty";
|
||||
@@ -312,7 +319,8 @@ std::string TSpeedPos::TableText()
|
||||
|
||||
bool TSpeedPos::IsProperSemaphor(TOrders order)
|
||||
{ // sprawdzenie czy semafor jest zgodny z trybem jazdy
|
||||
if (order < 0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
||||
if (order <
|
||||
0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
||||
{
|
||||
if (iFlags & (spSemaphor | spShuntSemaphor))
|
||||
return true;
|
||||
@@ -336,8 +344,10 @@ bool TSpeedPos::Set(TEvent *event, double dist, TOrders order)
|
||||
CommandCheck(); // sprawdzenie typu komendy w evencie i okre<72>lenie pr<70>dko<6B>ci
|
||||
// zale<6C>nie od trybu sprawdzenie czy jest tutaj gdzie<69> semafor lub tarcza manewrowa
|
||||
// je<6A>li wskazuje stop wtedy wystawiamy true jako koniec sprawdzania
|
||||
// WriteLog("EventSet: Vel=" + AnsiString(fVelNext) + " iFlags=" + AnsiString(iFlags) + " order="+AnsiString(order));
|
||||
if (order < 0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
||||
// WriteLog("EventSet: Vel=" + AnsiString(fVelNext) + " iFlags=" + AnsiString(iFlags) + "
|
||||
// order="+AnsiString(order));
|
||||
if (order <
|
||||
0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
||||
{
|
||||
if (iFlags & (spSemaphor | spShuntSemaphor) && fVelNext == 0.0)
|
||||
return true;
|
||||
@@ -358,7 +368,8 @@ void TSpeedPos::Set(TTrack *track, double dist, int flag)
|
||||
trTrack = track; // TODO: (t) mo<6D>e by<62> NULL i nie odczytamy ko<6B>ca poprzedniego :/
|
||||
if (trTrack)
|
||||
{
|
||||
iFlags = flag | (trTrack->eType == tt_Normal ? 2 : 10); // zapami<6D>tanie kierunku wraz z typem
|
||||
iFlags =
|
||||
flag | (trTrack->eType == tt_Normal ? 2 : 10); // zapami<6D>tanie kierunku wraz z typem
|
||||
if (iFlags & spSwitch)
|
||||
if (trTrack->GetSwitchState() & 1)
|
||||
iFlags |= spSwitchStatus;
|
||||
@@ -416,12 +427,13 @@ bool TController::TableNotFound(TEvent *e)
|
||||
{ // sprawdzenie, czy nie zosta<74> ju<6A> dodany do tabelki (np. podw<64>jne W4 robi problemy)
|
||||
int j = (iLast + 1) % iSpeedTableSize; // j, aby sprawdzi<7A> te<74> ostatni<6E> pozycj<63>
|
||||
for (int i = iFirst; i != j; i = (i + 1) % iSpeedTableSize)
|
||||
if ((sSpeedTable[i].iFlags & (spEnabled | spEvent)) == (spEnabled |
|
||||
spEvent)) // o ile u<>ywana pozycja
|
||||
if ((sSpeedTable[i].iFlags & (spEnabled | spEvent)) ==
|
||||
(spEnabled | spEvent)) // o ile u<>ywana pozycja
|
||||
if (sSpeedTable[i].evEvent == e)
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableNotFound: Event already in SpeedTable: " + sSpeedTable[i].evEvent->asName);
|
||||
WriteLog("TableNotFound: Event already in SpeedTable: " +
|
||||
sSpeedTable[i].evEvent->asName);
|
||||
return false; // ju<6A> jest, drugi raz dodawa<77> nie ma po co
|
||||
}
|
||||
return true; // nie ma, czyli mo<6D>na doda<64>
|
||||
@@ -499,8 +511,9 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle)
|
||||
-1.0 :
|
||||
1.0; // flaga ustawiona, gdy Point2 toru jest bli<6C>ej
|
||||
fCurrentDistance = sSpeedTable[iLast].fDist; // aktualna odleg<65>o<EFBFBD><6F> do jego Point1
|
||||
fTrackLength =
|
||||
sSpeedTable[iLast].iFlags & (spElapsed | spEnd) ? 0.0 : pTrack->Length(); // nie dolicza<7A> d<>ugo<67>ci gdy:
|
||||
fTrackLength = sSpeedTable[iLast].iFlags & (spElapsed | spEnd) ?
|
||||
0.0 :
|
||||
pTrack->Length(); // nie dolicza<7A> d<>ugo<67>ci gdy:
|
||||
// 32-mini<6E>ty pocz<63>tek,
|
||||
// 64-jazda do ko<6B>ca toru
|
||||
}
|
||||
@@ -523,8 +536,11 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle)
|
||||
if (TableAddNew())
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableTraceRoute: new event found " + pEvent->asName + " by " + OwnerName());
|
||||
if (sSpeedTable[iLast].Set( pEvent, fCurrentDistance, OrderCurrentGet())) // dodanie odczytu sygna<6E>u
|
||||
WriteLog("TableTraceRoute: new event found " + pEvent->asName +
|
||||
" by " + OwnerName());
|
||||
if (sSpeedTable[iLast].Set(
|
||||
pEvent, fCurrentDistance,
|
||||
OrderCurrentGet())) // dodanie odczytu sygna<6E>u
|
||||
{
|
||||
fDistance = fCurrentDistance; // je<6A>li sygna<6E> stop, to nie ma
|
||||
// potrzeby dalej skanowa<77>
|
||||
@@ -589,8 +605,9 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle)
|
||||
sSpeedTable[iLast].iFlags &=
|
||||
~spReverse; // usuni<6E>cie flagi kierunku, bo mo<6D>e by<62> b<><62>dna
|
||||
if (sSpeedTable[iLast].iFlags < 0)
|
||||
sSpeedTable[iLast].iFlags |=
|
||||
spReverse; // ustawienie flagi kierunku na podstawie wybranego segmentu
|
||||
sSpeedTable[iLast].iFlags |= spReverse; // ustawienie flagi kierunku
|
||||
// na podstawie wybranego
|
||||
// segmentu
|
||||
if (int(fLastDir) * sSpeedTable[iLast].iFlags < 0)
|
||||
fLastDir = -fLastDir;
|
||||
if (AIControllFlag) // dla AI na razie losujemy kierunek na kolejnym
|
||||
@@ -711,7 +728,8 @@ void TController::TableCheck(double fDistance)
|
||||
if (sSpeedTable[i].Update(&pos, &dir, len))
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableCheck: Switch change. Delete next entries. (" + sSpeedTable[i].trTrack->NameGet() + ")");
|
||||
WriteLog("TableCheck: Switch change. Delete next entries. (" +
|
||||
sSpeedTable[i].trTrack->NameGet() + ")");
|
||||
int k = (iLast + 1) % iSpeedTableSize; // skanujemy razem z ostatni<6E> pozycj<63>
|
||||
for (int j = (i + 1) % iSpeedTableSize; j != k; j = (j + 1) % iSpeedTableSize)
|
||||
{ // kasowanie wszystkich rekord<72>w za zmienion<6F> zwrotnic<69>
|
||||
@@ -735,16 +753,20 @@ void TController::TableCheck(double fDistance)
|
||||
{
|
||||
if (sSpeedTable[i].fDist < -fLength) // a sk<73>ad wyjecha<68> ca<63><61> d<>ugo<67>ci<63> poza
|
||||
{ // degradacja pozycji
|
||||
// WriteLog( "TableCheck: Track is behind. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
||||
// WriteLog( "TableCheck: Track is behind. Delete from table: " +
|
||||
// sSpeedTable[i].trTrack->NameGet());
|
||||
sSpeedTable[i].iFlags &= ~spEnabled; // nie liczy si<73>
|
||||
}
|
||||
else if ((sSpeedTable[i].iFlags & 0xF0000028) ==
|
||||
spElapsed) // jest z ty<74>u (najechany) i nie jest zwrotnic<69> ani skrzy<7A>owaniem
|
||||
else if ((sSpeedTable[i].iFlags & 0xF0000028) == spElapsed) // jest z ty<74>u
|
||||
// (najechany) i nie
|
||||
// jest zwrotnic<69>
|
||||
// ani skrzy<7A>owaniem
|
||||
if (sSpeedTable[i].fVelNext < 0) // a nie ma ograniczenia pr<70>dko<6B>ci
|
||||
{
|
||||
sSpeedTable[i].iFlags =
|
||||
0; // to nie ma go po co trzyma<6D> (odtykacz usunie ze <20>rodka)
|
||||
// WriteLog("TableCheck: Track without speed. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
||||
// WriteLog("TableCheck: Track without speed. Delete from table: " +
|
||||
// sSpeedTable[i].trTrack->NameGet());
|
||||
}
|
||||
}
|
||||
else if (sSpeedTable[i].iFlags & spEvent) // je<6A>li event
|
||||
@@ -756,7 +778,8 @@ void TController::TableCheck(double fDistance)
|
||||
sSpeedTable[i].fDist < -fLength)
|
||||
{ // poci<63>g staje zawsze, a samoch<63>d tylko je<6A>li nie przejedzie ca<63><61>
|
||||
// d<>ugo<67>ci<63> (mo<6D>e by<62> zaskoczony zmian<61>)
|
||||
// WriteLog("TableCheck: Event is behind. Delete from table: " + sSpeedTable[i].evEvent->asName);
|
||||
// WriteLog("TableCheck: Event is behind. Delete from table: " +
|
||||
// sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags &= ~1; // degradacja pozycji dla samochodu;
|
||||
// semafory usuwane tylko przy sprawdzaniu,
|
||||
// bo wysy<73>aj<61> komendy
|
||||
@@ -831,15 +854,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
// ju<6A> semafora)
|
||||
#if LOGSTOPS
|
||||
WriteLog(pVehicle->asName + " as " + TrainParams->TrainName + ": at " +
|
||||
std::to_string(GlobalTime->hh) + ":" + std::to_string(GlobalTime->mm) +
|
||||
" skipped " + asNextStop); // informacja
|
||||
std::to_string(GlobalTime->hh) + ":" +
|
||||
std::to_string(GlobalTime->mm) + " skipped " +
|
||||
asNextStop); // informacja
|
||||
#endif
|
||||
fLastStopExpDist = mvOccupied->DistCounter + 0.250 +
|
||||
0.001 * fLength; // przy jakim dystansie (stanie
|
||||
// licznika) ma przesun<75><6E> na
|
||||
// nast<73>pny post<73>j
|
||||
TrainParams->UpdateMTable(
|
||||
GlobalTime->hh, GlobalTime->mm,
|
||||
TrainParams->UpdateMTable(GlobalTime->hh, GlobalTime->mm,
|
||||
asNextStop.substr(19, asNextStop.length()));
|
||||
TrainParams->StationIndexInc(); // przej<65>cie do nast<73>pnej
|
||||
asNextStop =
|
||||
@@ -1000,7 +1023,9 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
// ma przesun<75><6E> na nast<73>pny post<73>j
|
||||
// Controlled-> //zapisa<73> odleg<65>o<EFBFBD><6F> do przejechania
|
||||
TrainParams->StationIndexInc(); // przej<65>cie do nast<73>pnej
|
||||
asNextStop = TrainParams->NextStop(); // pobranie kolejnego miejsca zatrzymania
|
||||
asNextStop =
|
||||
TrainParams
|
||||
->NextStop(); // pobranie kolejnego miejsca zatrzymania
|
||||
// TableClear(); //aby od nowa sprawdzi<7A>o W4 z inn<6E> nazw<7A> ju<6A> - to nie jest dobry pomys<79>
|
||||
#if LOGSTOPS
|
||||
WriteLog(pVehicle->asName + " as " + TrainParams->TrainName +
|
||||
@@ -1075,15 +1100,18 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
if (sSpeedTable[i].fDist < 0.0 && sSemNext == &sSpeedTable[i])
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableUpdate: semaphor " + sSemNext->GetName() + " passed by " + OwnerName());
|
||||
WriteLog("TableUpdate: semaphor " + sSemNext->GetName() + " passed by " +
|
||||
OwnerName());
|
||||
sSemNext = NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
||||
// zmiennej sprawdzaj<61>cej dla skanowania w prz<72>d
|
||||
}
|
||||
if (sSpeedTable[i].fDist < 0.0 && sSemNextStop == &sSpeedTable[i])
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableUpdate: semaphor " + sSemNextStop->GetName() + " passed by " + OwnerName());
|
||||
sSemNextStop = NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
||||
WriteLog("TableUpdate: semaphor " + sSemNextStop->GetName() +
|
||||
" passed by " + OwnerName());
|
||||
sSemNextStop =
|
||||
NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
||||
// zmiennej sprawdzaj<61>cej dla skanowania w prz<72>d
|
||||
}
|
||||
if (sSpeedTable[i].fDist > 0.0 &&
|
||||
@@ -1096,7 +1124,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
// byl nowy to go dorzucamy do zmiennej, <20>eby ca<63>y
|
||||
// czas widzia<69> najbli<6C>szy
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableUpdate: Next semaphor: " + sSemNext->GetName() + " by " + OwnerName());
|
||||
WriteLog("TableUpdate: Next semaphor: " + sSemNext->GetName() + " by " +
|
||||
OwnerName());
|
||||
}
|
||||
if (!sSemNextStop || (sSemNextStop && sSemNextStop->fVelNext != 0 &&
|
||||
sSpeedTable[i].fVelNext == 0))
|
||||
@@ -1149,10 +1178,12 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
else if (sSpeedTable[i].IsProperSemaphor(OrderCurrentGet()))
|
||||
{ // to semaphor
|
||||
if (sSpeedTable[i].fDist < 0)
|
||||
VelSignalLast = sSpeedTable[i].fVelNext; //mini<6E>ty daje pr<70>dko<6B><6F> obowi<77>zuj<75>c<EFBFBD>
|
||||
VelSignalLast =
|
||||
sSpeedTable[i].fVelNext; // mini<6E>ty daje pr<70>dko<6B><6F> obowi<77>zuj<75>c<EFBFBD>
|
||||
else
|
||||
{
|
||||
iDrivigFlags |= moveSemaphorFound; //je<6A>li z przodu to dajemy falg<6C>, <20>e jest
|
||||
iDrivigFlags |= moveSemaphorFound; // je<EFBFBD>li z przodu to dajemy falg<6C>, <20>e
|
||||
// jest
|
||||
d_to_next_sem = Min0R(sSpeedTable[i].fDist, d_to_next_sem);
|
||||
}
|
||||
if (sSpeedTable[i].fDist <= d_to_next_sem)
|
||||
@@ -1172,12 +1203,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
if (sSpeedTable[i].fSectionVelocityDist == 0.0)
|
||||
{
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableUpdate: Event is behind. SVD = 0: " + sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags = 0; // je<6A>li punktowy to kasujemy i nie dajemy ograniczenia na sta<74>e
|
||||
WriteLog("TableUpdate: Event is behind. SVD = 0: " +
|
||||
sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags =
|
||||
0; // je<6A>li punktowy to kasujemy i nie dajemy ograniczenia na sta<74>e
|
||||
}
|
||||
else if (sSpeedTable[i].fSectionVelocityDist < 0.0)
|
||||
{ // ograniczenie obowi<77>zuj<75>ce do nast<73>pnego
|
||||
if (sSpeedTable[i].fVelNext == Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
||||
if (sSpeedTable[i].fVelNext ==
|
||||
Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
||||
sSpeedTable[i].fVelNext != VelLimitLast)
|
||||
{ // je<6A>li ograniczenie jest mniejsze ni<6E> obecne to obowi<77>zuje od zaraz
|
||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||
@@ -1186,27 +1220,34 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
{ // je<6A>li wi<77>ksze to musi wyjecha<68> za poprzednie
|
||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableUpdate: Event is behind. SVD < 0: " + sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags = 0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
||||
WriteLog("TableUpdate: Event is behind. SVD < 0: " +
|
||||
sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags =
|
||||
0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // je<6A>li wi<77>ksze to ograniczenie ma swoj<6F> d<>ugo<67><6F>
|
||||
if (sSpeedTable[i].fVelNext == Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
||||
if (sSpeedTable[i].fVelNext ==
|
||||
Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
||||
sSpeedTable[i].fVelNext != VelLimitLast)
|
||||
{ // je<6A>li ograniczenie jest mniejsze ni<6E> obecne to obowi<77>zuje od zaraz
|
||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||
}
|
||||
else if (sSpeedTable[i].fDist < -fLength && sSpeedTable[i].fVelNext != VelLimitLast)
|
||||
else if (sSpeedTable[i].fDist < -fLength &&
|
||||
sSpeedTable[i].fVelNext != VelLimitLast)
|
||||
{ // je<6A>li wi<77>ksze to musi wyjecha<68> za poprzednie
|
||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||
}
|
||||
else if (sSpeedTable[i].fDist < -fLength - sSpeedTable[i].fSectionVelocityDist)
|
||||
else if (sSpeedTable[i].fDist <
|
||||
-fLength - sSpeedTable[i].fSectionVelocityDist)
|
||||
{ //
|
||||
VelLimitLast = -1.0;
|
||||
if (Global::iWriteLogEnabled & 8)
|
||||
WriteLog("TableUpdate: Event is behind. SVD > 0: " + sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags = 0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
||||
WriteLog("TableUpdate: Event is behind. SVD > 0: " +
|
||||
sSpeedTable[i].evEvent->asName);
|
||||
sSpeedTable[i].iFlags =
|
||||
0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1219,7 +1260,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
v = 0.0; // to mo<6D>e by<62> podany dla tamtego: jecha<68> tak, jakby tam stop by<62>
|
||||
else
|
||||
{ // zawalidrogi nie ma (albo pojazd jest samochodem), sprawdzi<7A> sygna<6E>
|
||||
if (sSpeedTable[i].iFlags & spShuntSemaphor) // je<6A>li Tm - w zasadzie to sprawdzi<7A>
|
||||
if (sSpeedTable[i].iFlags &
|
||||
spShuntSemaphor) // je<6A>li Tm - w zasadzie to sprawdzi<7A>
|
||||
// komend<6E>!
|
||||
{ // je<6A>li podana pr<70>dko<6B><6F> manewrowa
|
||||
if ((OrderCurrentGet() & Obey_train) ? v == 0.0 : false)
|
||||
@@ -1250,13 +1292,17 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!(sSpeedTable[i].iFlags & spSectionVel)) //je<6A>li jaki<6B> event pasywny ale nie ograniczenie
|
||||
if (go == cm_Unknown) // je<6A>li nie by<62>o komendy wcze<7A>niej - pierwsza si<73> liczy
|
||||
else if (!(sSpeedTable[i].iFlags &
|
||||
spSectionVel)) // je<6A>li jaki<6B> event pasywny ale nie ograniczenie
|
||||
if (go ==
|
||||
cm_Unknown) // je<6A>li nie by<62>o komendy wcze<7A>niej - pierwsza si<73> liczy
|
||||
// - ustawianie VelSignal
|
||||
if (v < 0.0 ? true : v >= 1.0) // bo warto<74><6F> 0.1 s<>u<EFBFBD>y do hamowania tylko
|
||||
if (v < 0.0 ? true :
|
||||
v >= 1.0) // bo warto<74><6F> 0.1 s<>u<EFBFBD>y do hamowania tylko
|
||||
{
|
||||
go = cm_SetVelocity; // mo<6D>e odjecha<68>
|
||||
// Ra 2014-06: (VelSignal) nie mo<6D>e by<62> tu ustawiane, bo semafor mo<6D>e
|
||||
// Ra 2014-06: (VelSignal) nie mo<6D>e by<62> tu ustawiane, bo semafor
|
||||
// mo<6D>e
|
||||
// by<62> daleko
|
||||
// VelSignal=v; //nie do ko<6B>ca tak, to jest druga pr<70>dko<6B><6F>; -1 nie
|
||||
// wpisywa<77>...
|
||||
@@ -1270,11 +1316,13 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
if (sSpeedTable[i].iFlags & spEvent) // je<6A>li event
|
||||
if ((sSpeedTable[i].evEvent != eSignSkip) ?
|
||||
true :
|
||||
(sSpeedTable[i].fVelNext != 0.0)) // ale inny ni<6E> ten,
|
||||
(sSpeedTable[i].fVelNext !=
|
||||
0.0)) // ale inny ni<6E> ten,
|
||||
// na kt<6B>rym mini<6E>to
|
||||
// S1, chyba <20>e si<73>
|
||||
// ju<6A> zmieni<6E>o
|
||||
iDrivigFlags &= ~moveVisibility; // sygna<6E> zezwalaj<61>cy na
|
||||
iDrivigFlags &=
|
||||
~moveVisibility; // sygna<6E> zezwalaj<61>cy na
|
||||
// jazd<7A> wy<77><79>cza jazd<7A> na
|
||||
// widoczno<6E><6F> (S1 na SBL)
|
||||
|
||||
@@ -1288,12 +1336,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
eSignNext = sSpeedTable[i].evEvent; // dla informacji
|
||||
if (iDrivigFlags &
|
||||
moveStopHere) // je<6A>li ma sta<74>, dostaje komend<6E> od razu
|
||||
go = cm_Command; // komenda z kom<6F>rki, do wykonania po zatrzymaniu
|
||||
else if (sSpeedTable[i].fDist <= 20.0) // je<6A>li ma doci<63>gn<67><6E>, to niech
|
||||
go = cm_Command; // komenda z kom<6F>rki, do wykonania po
|
||||
// zatrzymaniu
|
||||
else if (sSpeedTable[i].fDist <=
|
||||
20.0) // je<6A>li ma doci<63>gn<67><6E>, to niech
|
||||
// doci<63>ga (moveStopCloser
|
||||
// dotyczy doci<63>gania do W4, nie
|
||||
// semafora)
|
||||
go = cm_Command; // komenda z kom<6F>rki, do wykonania po zatrzymaniu
|
||||
go = cm_Command; // komenda z kom<6F>rki, do wykonania po
|
||||
// zatrzymaniu
|
||||
}
|
||||
} // je<6A>li nie ma zawalidrogi
|
||||
} // je<6A>li event
|
||||
@@ -1501,7 +1552,8 @@ TController::TController(bool AI, TDynamicObject *NewControll, bool InitPsyche,
|
||||
"Coupler.Force[N] TractionForce [kN] FrictionForce [kN] "
|
||||
"BrakeForce [kN] BrakePress [MPa] PipePress [MPa] "
|
||||
"MotorCurrent [A] MCP SCP BCP LBP DmgFlag Command CVal1 CVal2")
|
||||
.c_str() << "\r\n";
|
||||
.c_str()
|
||||
<< "\r\n";
|
||||
#endif
|
||||
#if LOGPRESS == 1
|
||||
LogFile << string("t\tVel\tAcc\tPP\tVVP\tBP\tBVP\tCVP").c_str() << "\n";
|
||||
@@ -1909,7 +1961,8 @@ bool TController::CheckVehicles(TOrders user)
|
||||
}
|
||||
else if (OrderCurrentGet() & (Shunt | Connect))
|
||||
{
|
||||
Lights(16, (pVehicles[1]->MoverParameters->CabNo) ?
|
||||
Lights(16,
|
||||
(pVehicles[1]->MoverParameters->CabNo) ?
|
||||
1 :
|
||||
0); //<2F>wiat<61>a manewrowe (Tb1) na poje<6A>dzie z nap<61>dem
|
||||
if (OrderCurrentGet() & Connect) // je<6A>li <20><>czenie, skanowa<77> dalej
|
||||
@@ -2173,9 +2226,7 @@ void TController::SetDriverPsyche()
|
||||
|
||||
bool TController::PrepareEngine()
|
||||
{ // odpalanie silnika
|
||||
bool OK = false,
|
||||
voltfront = false,
|
||||
voltrear = false;
|
||||
bool OK = false, voltfront = false, voltrear = false;
|
||||
LastReactionTime = 0.0;
|
||||
ReactionTime = PrepareTime;
|
||||
iDrivigFlags |= moveActive; // mo<6D>e skanowa<77> sygna<6E>y i reagowa<77> na komendy
|
||||
@@ -2596,7 +2647,8 @@ bool TController::IncSpeed()
|
||||
break;
|
||||
case ElectricInductionMotor:
|
||||
if (!mvControlling->FuseFlag)
|
||||
if (Ready || (iDrivigFlags & movePress) || (mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
||||
if (Ready || (iDrivigFlags & movePress) ||
|
||||
(mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
||||
{
|
||||
OK = mvControlling->IncMainCtrl(1);
|
||||
}
|
||||
@@ -2953,7 +3005,8 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne
|
||||
if (ConversionError == -8)
|
||||
ErrorLog("Missed timetable: " + NewCommand);
|
||||
WriteLog("Cannot load timetable file " + NewCommand + "\r\nError " +
|
||||
std::to_string(ConversionError) + " in position " + std::to_string(TrainParams->StationCount));
|
||||
std::to_string(ConversionError) + " in position " +
|
||||
std::to_string(TrainParams->StationCount));
|
||||
NewCommand = ""; // puste, dla wymiennej tekstury
|
||||
}
|
||||
else
|
||||
@@ -2967,20 +3020,21 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne
|
||||
NewCommand = Global::asCurrentSceneryPath + NewCommand + ".wav"; // na razie jeden
|
||||
if (FileExists(NewCommand))
|
||||
{ // wczytanie d<>wi<77>ku odjazdu podawanego bezpo<70>renido
|
||||
tsGuardSignal = new TTextSound(NewCommand.c_str(), 30, pVehicle->GetPosition().x,
|
||||
pVehicle->GetPosition().y, pVehicle->GetPosition().z,
|
||||
false);
|
||||
tsGuardSignal =
|
||||
new TTextSound(NewCommand.c_str(), 30, pVehicle->GetPosition().x,
|
||||
pVehicle->GetPosition().y, pVehicle->GetPosition().z, false);
|
||||
// rsGuardSignal->Stop();
|
||||
iGuardRadio = 0; // nie przez radio
|
||||
}
|
||||
else
|
||||
{
|
||||
NewCommand = NewCommand.insert(NewCommand.find_last_of("."),"radio"); // wstawienie przed kropk<70>
|
||||
NewCommand = NewCommand.insert(NewCommand.find_last_of("."),
|
||||
"radio"); // wstawienie przed kropk<70>
|
||||
if (FileExists(NewCommand))
|
||||
{ // wczytanie d<>wi<77>ku odjazdu w wersji radiowej (s<>ycha<68> tylko w kabinie)
|
||||
tsGuardSignal = new TTextSound(NewCommand.c_str(), -1, pVehicle->GetPosition().x,
|
||||
pVehicle->GetPosition().y, pVehicle->GetPosition().z,
|
||||
false);
|
||||
tsGuardSignal = new TTextSound(
|
||||
NewCommand.c_str(), -1, pVehicle->GetPosition().x,
|
||||
pVehicle->GetPosition().y, pVehicle->GetPosition().z, false);
|
||||
iGuardRadio = iRadioChannel;
|
||||
}
|
||||
}
|
||||
@@ -3884,7 +3938,8 @@ bool TController::UpdateSituation(double dt)
|
||||
case Change_direction | Connect: // zmiana kierunku podczas pod<6F><64>czania
|
||||
if (OrderList[OrderPos] != Obey_train) // spokojne manewry
|
||||
{
|
||||
VelSignal = Global::Min0RSpeed(VelSignal, 40); // je<6A>li manewry, to ograniczamy pr<70>dko<6B><6F>
|
||||
VelSignal =
|
||||
Global::Min0RSpeed(VelSignal, 40); // je<6A>li manewry, to ograniczamy pr<70>dko<6B><6F>
|
||||
if (AIControllFlag)
|
||||
{ // to poni<6E>ej tylko dla AI
|
||||
if (iVehicleCount >= 0) // je<6A>li jest co odczepi<70>
|
||||
@@ -4018,7 +4073,8 @@ bool TController::UpdateSituation(double dt)
|
||||
// nast<73>pnie ograniczana
|
||||
if (TrainParams) // je<6A>li ma rozk<7A>ad
|
||||
if (TrainParams->TTVmax > 0.0) // i ograniczenie w rozk<7A>adzie
|
||||
VelDesired = Global::Min0RSpeed(VelDesired,
|
||||
VelDesired = Global::Min0RSpeed(
|
||||
VelDesired,
|
||||
TrainParams->TTVmax); // to nie przekracza<7A> rozkladowej
|
||||
SetDriverPsyche(); // ustawia AccPreferred (potrzebne tu?)
|
||||
// Ra: odczyt (ActualProximityDist), (VelNext) i (AccPreferred) z tabelki pr<70>dkosci
|
||||
@@ -4086,7 +4142,9 @@ bool TController::UpdateSituation(double dt)
|
||||
// ma taboru do pod<6F><64>czenia
|
||||
// Ra 2F1H: z tym (fTrackBlock) to nie jest najlepszy pomys<79>, bo lepiej by
|
||||
// by<62>o por<6F>wna<6E> z odleg<65>o<EFBFBD>ci<63> od sygnalizatora z przodu
|
||||
if ((OrderList[OrderPos] & Connect) ? (pVehicles[0]->fTrackBlock > 2000 || pVehicles[0]->fTrackBlock > FirstSemaphorDist) :
|
||||
if ((OrderList[OrderPos] & Connect) ?
|
||||
(pVehicles[0]->fTrackBlock > 2000 ||
|
||||
pVehicles[0]->fTrackBlock > FirstSemaphorDist) :
|
||||
true)
|
||||
if ((comm = BackwardScan()) != cm_Unknown) // je<6A>li w drug<75> mo<6D>na jecha<68>
|
||||
{ // nale<6C>y sprawdza<7A> odleg<65>o<EFBFBD><6F> od znalezionego sygnalizatora,
|
||||
@@ -4226,16 +4284,18 @@ bool TController::UpdateSituation(double dt)
|
||||
VelDesired = 0.0; // jak ma czeka<6B>, to nie ma jazdy
|
||||
// else if (VelSignal<0)
|
||||
// VelDesired=fVelMax; //ile fabryka dala (Ra: uwzgl<67>dione wagony)
|
||||
else if (VelSignal >= 0) // je<6A>li sk<73>ad by<62> zatrzymany na pocz<63>tku i teraz ju<6A> mo<6D>e jecha<68>
|
||||
else if (VelSignal >=
|
||||
0) // je<6A>li sk<73>ad by<62> zatrzymany na pocz<63>tku i teraz ju<6A> mo<6D>e jecha<68>
|
||||
VelDesired = Global::Min0RSpeed(VelDesired, VelSignal);
|
||||
|
||||
if (mvOccupied->RunningTrack.Velmax >=
|
||||
0) // ograniczenie pr<70>dko<6B>ci z trajektorii ruchu
|
||||
VelDesired =
|
||||
Global::Min0RSpeed(VelDesired,
|
||||
VelDesired = Global::Min0RSpeed(
|
||||
VelDesired,
|
||||
mvOccupied->RunningTrack.Velmax); // uwaga na ograniczenia szlakowej!
|
||||
if (VelforDriver >= 0) // tu jest zero przy zmianie kierunku jazdy
|
||||
VelDesired = Global::Min0RSpeed(VelDesired, VelforDriver); // Ra: tu mo<6D>e by<62> 40, je<6A>li
|
||||
VelDesired =
|
||||
Global::Min0RSpeed(VelDesired, VelforDriver); // Ra: tu mo<6D>e by<62> 40, je<6A>li
|
||||
// mechanik nie ma znajomo<6D>ci
|
||||
// szlaaku, albo kierowca je<6A>dzi
|
||||
// 70
|
||||
@@ -4247,7 +4307,8 @@ bool TController::UpdateSituation(double dt)
|
||||
TrainParams
|
||||
->TTVmax); // jesli nie spozniony to nie przekracza<7A> rozkladowej
|
||||
if (VelDesired > 0.0)
|
||||
if ((sSemNext && sSemNext->fVelNext != 0.0) || (iDrivigFlags & moveStopHere)==0)
|
||||
if ((sSemNext && sSemNext->fVelNext != 0.0) ||
|
||||
(iDrivigFlags & moveStopHere) == 0)
|
||||
{ // je<6A>li mo<6D>na jecha<68>, to odpali<6C> d<>wi<77>k kierownika oraz zamkn<6B><6E> drzwi w
|
||||
// sk<73>adzie, je<6A>li nie mamy czeka<6B> na sygna<6E> te<74> trzeba odpali<6C>
|
||||
|
||||
@@ -4536,8 +4597,8 @@ bool TController::UpdateSituation(double dt)
|
||||
WriteLog("Dist=" + FloatToStrF(ActualProximityDist, ffFixed, 7, 1) +
|
||||
", VelDesired=" + FloatToStrF(VelDesired, ffFixed, 7, 1) +
|
||||
", AccDesired=" + FloatToStrF(AccDesired, ffFixed, 7, 3) +
|
||||
", VelSignal=" + AnsiString(VelSignal) + ", VelNext=" +
|
||||
AnsiString(VelNext));
|
||||
", VelSignal=" + AnsiString(VelSignal) +
|
||||
", VelNext=" + AnsiString(VelNext));
|
||||
#endif
|
||||
if (AccDesired > 0.1)
|
||||
if (vel < 10.0) // Ra 2F1H: je<6A>li pr<70>dko<6B><6F> jest ma<6D>a, a mo<6D>na przyspiesza<7A>,
|
||||
@@ -4648,7 +4709,8 @@ bool TController::UpdateSituation(double dt)
|
||||
(AbsAccS >
|
||||
AccDesired + 0.05))) // u g<>ry ustawia si<73> hamowanie na fAccThreshold
|
||||
// if not MinVelFlag)
|
||||
if (fBrakeTime < 0 ? true : (AccDesired < fAccGravity - 0.3) ||
|
||||
if (fBrakeTime < 0 ? true :
|
||||
(AccDesired < fAccGravity - 0.3) ||
|
||||
(mvOccupied->BrakeCtrlPos <= 0))
|
||||
if (!IncBrake()) // je<6A>li up<75>yn<79><6E> czas reakcji hamulca, chyba <20>e
|
||||
// nag<61>e albo luzowa<77>
|
||||
@@ -4683,8 +4745,8 @@ bool TController::UpdateSituation(double dt)
|
||||
// Mietek-end1
|
||||
SpeedSet(); // ci<63>gla regulacja pr<70>dko<6B>ci
|
||||
#if LOGVELOCITY
|
||||
WriteLog("BrakePos=" + AnsiString(mvOccupied->BrakeCtrlPos) + ", MainCtrl=" +
|
||||
AnsiString(mvControlling->MainCtrlPos));
|
||||
WriteLog("BrakePos=" + AnsiString(mvOccupied->BrakeCtrlPos) +
|
||||
", MainCtrl=" + AnsiString(mvControlling->MainCtrlPos));
|
||||
#endif
|
||||
|
||||
/* //Ra: mamy teraz wska<6B>nik na cz<63>on silnikowy, gorzej jak s<> dwa w
|
||||
@@ -5036,8 +5098,8 @@ TEvent * TController::CheckTrackEventBackward(double fDirection, TTrack *Track)
|
||||
return NULL;
|
||||
};
|
||||
|
||||
TTrack * TController::BackwardTraceRoute(double &fDistance, double &fDirection,
|
||||
TTrack *Track, TEvent *&Event)
|
||||
TTrack *TController::BackwardTraceRoute(double &fDistance, double &fDirection, TTrack *Track,
|
||||
TEvent *&Event)
|
||||
{ // szukanie sygnalizatora w kierunku przeciwnym jazdy (eventu odczytu kom<6F>rki pami<6D>ci)
|
||||
TTrack *pTrackChVel = Track; // tor ze zmian<61> pr<70>dko<6B>ci
|
||||
TTrack *pTrackFrom; // odcinek poprzedni, do znajdywania ko<6B>ca dr<64>g
|
||||
|
||||
12
Driver.h
12
Driver.h
@@ -10,10 +10,10 @@ http://mozilla.org/MPL/2.0/.
|
||||
#pragma once
|
||||
|
||||
//#include <fstream>
|
||||
#include <string>
|
||||
#include "Classes.h"
|
||||
#include "dumb3d.h"
|
||||
#include "mczapkie/mover.h"
|
||||
#include <string>
|
||||
using namespace Math3D;
|
||||
using namespace Mtable;
|
||||
|
||||
@@ -52,10 +52,12 @@ enum TMovementStatus
|
||||
moveGuardSignal = 0x8000, // sygnał od kierownika (minął czas postoju)
|
||||
moveVisibility = 0x10000, // jazda na widoczność po przejechaniu S1 na SBL
|
||||
moveDoorOpened = 0x20000, // drzwi zostały otwarte - doliczyć czas na zamknięcie
|
||||
movePushPull = 0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
|
||||
movePushPull =
|
||||
0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
|
||||
moveSemaphorFound = 0x80000, // na drodze skanowania został znaleziony semafor
|
||||
moveSemaphorWasElapsed = 0x100000, // minięty został semafor
|
||||
moveTrainInsideStation = 0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
|
||||
moveTrainInsideStation =
|
||||
0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
|
||||
moveSpeedLimitFound = 0x400000 // pociąg w ograniczeniu z podaną jego długością
|
||||
};
|
||||
|
||||
@@ -219,8 +221,8 @@ class TController
|
||||
// migacz lub czeka na stan zwrotnicy
|
||||
private:
|
||||
TDynamicObject *pVehicle; // pojazd w którym siedzi sterujący
|
||||
TDynamicObject *
|
||||
pVehicles[2]; // skrajne pojazdy w składzie (niekoniecznie bezpośrednio sterowane)
|
||||
TDynamicObject
|
||||
*pVehicles[2]; // skrajne pojazdy w składzie (niekoniecznie bezpośrednio sterowane)
|
||||
TMoverParameters *mvControlling; // jakim pojazdem steruje (może silnikowym w EZT)
|
||||
TMoverParameters *mvOccupied; // jakim pojazdem hamuje
|
||||
TTrainParameters *TrainParams; // rozkład jazdy zawsze jest, nawet jeśli pusty
|
||||
|
||||
624
Globals.cpp
624
Globals.cpp
@@ -11,17 +11,17 @@ http://mozilla.org/MPL/2.0/.
|
||||
Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
||||
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "Globals.h"
|
||||
#include "usefull.h"
|
||||
//#include "Mover.h"
|
||||
#include "Driver.h"
|
||||
#include "Console.h"
|
||||
#include "World.h"
|
||||
#include "parser.h"
|
||||
#include "Driver.h"
|
||||
#include "Logs.h"
|
||||
#include "PyInt.h"
|
||||
#include "World.h"
|
||||
#include "parser.h"
|
||||
|
||||
// namespace Global {
|
||||
|
||||
@@ -160,18 +160,10 @@ bool Global::bDecompressDDS = false; // czy programowa dekompresja DDS
|
||||
|
||||
// parametry do kalibracji
|
||||
// kolejno wsp<73><70>czynniki dla pot<6F>g 0, 1, 2, 3 warto<74>ci odczytanej z urz<72>dzenia
|
||||
double Global::fCalibrateIn[6][6] = {{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0}};
|
||||
double Global::fCalibrateOut[7][6] = {{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0},
|
||||
double Global::fCalibrateIn[6][6] = {{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}};
|
||||
double Global::fCalibrateOut[7][6] = {{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0}};
|
||||
double Global::fCalibrateOutMax[7] = {0, 0, 0, 0, 0, 0, 0};
|
||||
int Global::iCalibrateOutDebugInfo = -1;
|
||||
@@ -186,10 +178,18 @@ bool Global::bHideConsole = false; // hunter-271211: ukrywanie konsoli
|
||||
int Global::iBpp = 32; // chyba ju<6A> nie u<>ywa si<73> kart, na kt<6B>rych 16bpp co<63> poprawi
|
||||
// maciek001: konfiguracja wst<73>pna portu COM
|
||||
bool Global::bMWDdebugEnable = false;
|
||||
unsigned long int Global::iMWDBaudrate = 500000;
|
||||
AnsiString Global::sMWDPortId = "COM1"; // nazwa portu z kt<6B>rego korzystamy - na razie nie dzia<69>a
|
||||
bool Global::bMWDBreakEnable = false; // zmieni<EFBFBD> na FALSE!!! jak ju<6A> b<>dzie dzia<69>a<EFBFBD> wczytywanie z *.ini
|
||||
double Global::fMWDAnalogCalib[4][3] = {{1023, 0, 1023},{1023, 0, 1023},{1023, 0, 1023},{1023, 0, 1023}}; // warto<74><6F> max potencjometru, warto<74><6F> min potencjometru, rozdzielczo<7A><6F> (max. warto<74><6F> jaka mo<6D>e by<62> -1)
|
||||
bool Global::bMWDInputDataEnable = false;
|
||||
unsigned int Global::iMWDBaudrate = 500000;
|
||||
std::string Global::sMWDPortId = "COM1"; // nazwa portu z kt<6B>rego korzystamy - na razie nie dzia<69>a
|
||||
bool Global::bMWDBreakEnable =
|
||||
false; // zmieni<6E> na FALSE!!! jak ju<6A> b<>dzie dzia<69>a<EFBFBD> wczytywanie z *.ini
|
||||
double Global::fMWDAnalogCalib[4][3] = {
|
||||
{1023, 0, 1023}, {1023, 0, 1023}, {1023, 0, 1023}, {1023, 0, 1023}}; // warto<74><6F> max
|
||||
// potencjometru, warto<74><6F>
|
||||
// min potencjometru,
|
||||
// rozdzielczo<7A><6F> (max.
|
||||
// warto<74><6F> jaka mo<6D>e by<62>
|
||||
// -1)
|
||||
double Global::fMWDzg[2] = {0.9, 1023};
|
||||
double Global::fMWDpg[2] = {0.8, 1023};
|
||||
double Global::fMWDph[2] = {0.6, 1023};
|
||||
@@ -204,7 +204,8 @@ std::string Global::GetNextSymbol()
|
||||
{ // pobranie tokenu z aktualnego parsera
|
||||
|
||||
std::string token;
|
||||
if( pParser != nullptr ) {
|
||||
if (pParser != nullptr)
|
||||
{
|
||||
|
||||
pParser->getTokens();
|
||||
*pParser >> token;
|
||||
@@ -223,214 +224,313 @@ void Global::LoadIniFile(std::string asFileName)
|
||||
ConfigParse(parser);
|
||||
};
|
||||
|
||||
void Global::ConfigParse(cParser &Parser) {
|
||||
void Global::ConfigParse(cParser &Parser)
|
||||
{
|
||||
|
||||
std::string token;
|
||||
do {
|
||||
do
|
||||
{
|
||||
|
||||
token = "";
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
|
||||
if( token == "sceneryfile" ) {
|
||||
if (token == "sceneryfile")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> Global::SceneryFile;
|
||||
Parser.getTokens();
|
||||
Parser >> Global::SceneryFile;
|
||||
}
|
||||
else if( token == "humanctrlvehicle" ) {
|
||||
else if (token == "humanctrlvehicle")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> Global::asHumanCtrlVehicle;
|
||||
Parser.getTokens();
|
||||
Parser >> Global::asHumanCtrlVehicle;
|
||||
}
|
||||
else if( token == "width" ) {
|
||||
else if (token == "width")
|
||||
{
|
||||
|
||||
Parser.getTokens( 1, false ); Parser >> Global::iWindowWidth;
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iWindowWidth;
|
||||
}
|
||||
else if( token == "height" ) {
|
||||
else if (token == "height")
|
||||
{
|
||||
|
||||
Parser.getTokens( 1, false ); Parser >> Global::iWindowHeight;
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iWindowHeight;
|
||||
}
|
||||
else if( token == "heightbase" ) {
|
||||
else if (token == "heightbase")
|
||||
{
|
||||
|
||||
Parser.getTokens( 1, false ); Parser >> Global::fDistanceFactor;
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fDistanceFactor;
|
||||
}
|
||||
else if( token == "bpp" ) {
|
||||
else if (token == "bpp")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::iBpp = (token == "32" ? 32 : 16);
|
||||
}
|
||||
else if( token == "fullscreen" ) {
|
||||
else if (token == "fullscreen")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bFullScreen = (token == "yes");
|
||||
}
|
||||
else if( token == "freefly" ) { // Mczapkie-130302
|
||||
else if (token == "freefly")
|
||||
{ // Mczapkie-130302
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bFreeFly = (token == "yes");
|
||||
Parser.getTokens(3, false);
|
||||
Parser >>
|
||||
Global::pFreeCameraInit[ 0 ].x,
|
||||
Global::pFreeCameraInit[ 0 ].y,
|
||||
Parser >> Global::pFreeCameraInit[0].x, Global::pFreeCameraInit[0].y,
|
||||
Global::pFreeCameraInit[0].z;
|
||||
}
|
||||
else if( token == "wireframe" ) {
|
||||
else if (token == "wireframe")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bWireFrame = (token == "yes");
|
||||
}
|
||||
else if( token == "debugmode" ) { // McZapkie! - DebugModeFlag uzywana w mover.pas,
|
||||
else if (token == "debugmode")
|
||||
{ // McZapkie! - DebugModeFlag uzywana w mover.pas,
|
||||
// warto tez blokowac cheaty gdy false
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
DebugModeFlag = (token == "yes");
|
||||
}
|
||||
else if( token == "soundenabled" ) { // McZapkie-040302 - blokada dzwieku - przyda
|
||||
else if (token == "soundenabled")
|
||||
{ // McZapkie-040302 - blokada dzwieku - przyda
|
||||
// sie do debugowania oraz na komp. bez karty
|
||||
// dzw.
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bSoundEnabled = (token == "yes");
|
||||
}
|
||||
// else if (str==AnsiString("renderalpha")) //McZapkie-1312302 - dwuprzebiegowe renderowanie
|
||||
// bRenderAlpha=(GetNextSymbol().LowerCase()==AnsiString("yes"));
|
||||
else if( token == "physicslog" ) { // McZapkie-030402 - logowanie parametrow
|
||||
else if (token == "physicslog")
|
||||
{ // McZapkie-030402 - logowanie parametrow
|
||||
// fizycznych dla kazdego pojazdu z maszynista
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
WriteLogFlag = (token == "yes");
|
||||
}
|
||||
else if( token == "physicsdeactivation" ) { // McZapkie-291103 - usypianie fizyki
|
||||
else if (token == "physicsdeactivation")
|
||||
{ // McZapkie-291103 - usypianie fizyki
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
PhysicActivationFlag = (token == "yes");
|
||||
}
|
||||
else if( token == "debuglog" ) {
|
||||
else if (token == "debuglog")
|
||||
{
|
||||
// McZapkie-300402 - wylaczanie log.txt
|
||||
Parser.getTokens(); Parser >> token;
|
||||
if( token == "yes" ) { Global::iWriteLogEnabled = 3; }
|
||||
else if( token == "no" ) { Global::iWriteLogEnabled = 0; }
|
||||
else { Global::iWriteLogEnabled = std::atoi( token.c_str() ); }
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
if (token == "yes")
|
||||
{
|
||||
Global::iWriteLogEnabled = 3;
|
||||
}
|
||||
else if( token == "adjustscreenfreq" ) {
|
||||
else if (token == "no")
|
||||
{
|
||||
Global::iWriteLogEnabled = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
Global::iWriteLogEnabled = std::atoi(token.c_str());
|
||||
}
|
||||
}
|
||||
else if (token == "adjustscreenfreq")
|
||||
{
|
||||
// McZapkie-240403 - czestotliwosc odswiezania ekranu
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bAdjustScreenFreq = (token == "yes");
|
||||
}
|
||||
else if( token == "mousescale" ) {
|
||||
else if (token == "mousescale")
|
||||
{
|
||||
// McZapkie-060503 - czulosc ruchu myszy (krecenia glowa)
|
||||
Parser.getTokens(2, false);
|
||||
Parser
|
||||
>> Global::fMouseXScale
|
||||
>> Global::fMouseYScale;
|
||||
Parser >> Global::fMouseXScale >> Global::fMouseYScale;
|
||||
}
|
||||
else if( token == "enabletraction" ) {
|
||||
else if (token == "enabletraction")
|
||||
{
|
||||
// Winger 040204 - 'zywe' patyki dostosowujace sie do trakcji; Ra 2014-03: teraz <20>amanie
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bEnableTraction = (token == "yes");
|
||||
}
|
||||
else if( token == "loadtraction" ) {
|
||||
else if (token == "loadtraction")
|
||||
{
|
||||
// Winger 140404 - ladowanie sie trakcji
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bLoadTraction = (token == "yes");
|
||||
}
|
||||
else if( token == "friction" ) { // mno<6E>nik tarcia - KURS90
|
||||
else if (token == "friction")
|
||||
{ // mno<6E>nik tarcia - KURS90
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fFriction;
|
||||
}
|
||||
else if( token == "livetraction" ) {
|
||||
else if (token == "livetraction")
|
||||
{
|
||||
// Winger 160404 - zaleznosc napiecia loka od trakcji;
|
||||
// Ra 2014-03: teraz pr<70>d przy braku sieci
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bLiveTraction = (token == "yes");
|
||||
}
|
||||
else if( token == "skyenabled" ) {
|
||||
else if (token == "skyenabled")
|
||||
{
|
||||
// youBy - niebo
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::asSky = (token == "yes" ? "1" : "0");
|
||||
}
|
||||
else if( token == "managenodes" ) {
|
||||
else if (token == "managenodes")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bManageNodes = (token == "yes");
|
||||
}
|
||||
else if( token == "decompressdds" ) {
|
||||
else if (token == "decompressdds")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bDecompressDDS = (token == "yes");
|
||||
}
|
||||
else if( token == "defaultext" ) {
|
||||
else if (token == "defaultext")
|
||||
{
|
||||
// ShaXbee - domyslne rozszerzenie tekstur
|
||||
Parser.getTokens(); Parser >> token;
|
||||
if( token == "tga" ) {
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
if (token == "tga")
|
||||
{
|
||||
// domy<6D>lnie od TGA
|
||||
Global::szDefaultExt = Global::szTexturesTGA;
|
||||
}
|
||||
}
|
||||
else if( token == "newaircouplers" ) {
|
||||
else if (token == "newaircouplers")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bnewAirCouplers = (token == "yes");
|
||||
}
|
||||
else if( token == "defaultfiltering" ) {
|
||||
else if (token == "defaultfiltering")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iDefaultFiltering;
|
||||
}
|
||||
else if( token == "ballastfiltering" ) {
|
||||
else if (token == "ballastfiltering")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iBallastFiltering;
|
||||
}
|
||||
else if( token == "railprofiltering" ) {
|
||||
else if (token == "railprofiltering")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iRailProFiltering;
|
||||
}
|
||||
else if( token == "dynamicfiltering" ) {
|
||||
else if (token == "dynamicfiltering")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iDynamicFiltering;
|
||||
}
|
||||
else if( token == "usevbo" ) {
|
||||
else if (token == "usevbo")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bUseVBO = (token == "yes");
|
||||
}
|
||||
else if( token == "feedbackmode" ) {
|
||||
else if (token == "feedbackmode")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iFeedbackMode;
|
||||
}
|
||||
else if( token == "feedbackport" ) {
|
||||
else if (token == "feedbackport")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iFeedbackPort;
|
||||
}
|
||||
else if( token == "multiplayer" ) {
|
||||
else if (token == "multiplayer")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iMultiplayer;
|
||||
}
|
||||
else if( token == "maxtexturesize" ) {
|
||||
else if (token == "maxtexturesize")
|
||||
{
|
||||
// wymuszenie przeskalowania tekstur
|
||||
Parser.getTokens(1, false);
|
||||
int size; Parser >> size;
|
||||
if( size <= 64 ) { Global::iMaxTextureSize = 64; }
|
||||
else if( size <= 128 ) { Global::iMaxTextureSize = 128; }
|
||||
else if( size <= 256 ) { Global::iMaxTextureSize = 256; }
|
||||
else if( size <= 512 ) { Global::iMaxTextureSize = 512; }
|
||||
else if( size <= 1024 ) { Global::iMaxTextureSize = 1024; }
|
||||
else if( size <= 2048 ) { Global::iMaxTextureSize = 2048; }
|
||||
else if( size <= 4096 ) { Global::iMaxTextureSize = 4096; }
|
||||
else if( size <= 8192 ) { Global::iMaxTextureSize = 8192; }
|
||||
else { Global::iMaxTextureSize = 16384; }
|
||||
int size;
|
||||
Parser >> size;
|
||||
if (size <= 64)
|
||||
{
|
||||
Global::iMaxTextureSize = 64;
|
||||
}
|
||||
else if( token == "doubleambient" ) {
|
||||
else if (size <= 128)
|
||||
{
|
||||
Global::iMaxTextureSize = 128;
|
||||
}
|
||||
else if (size <= 256)
|
||||
{
|
||||
Global::iMaxTextureSize = 256;
|
||||
}
|
||||
else if (size <= 512)
|
||||
{
|
||||
Global::iMaxTextureSize = 512;
|
||||
}
|
||||
else if (size <= 1024)
|
||||
{
|
||||
Global::iMaxTextureSize = 1024;
|
||||
}
|
||||
else if (size <= 2048)
|
||||
{
|
||||
Global::iMaxTextureSize = 2048;
|
||||
}
|
||||
else if (size <= 4096)
|
||||
{
|
||||
Global::iMaxTextureSize = 4096;
|
||||
}
|
||||
else if (size <= 8192)
|
||||
{
|
||||
Global::iMaxTextureSize = 8192;
|
||||
}
|
||||
else
|
||||
{
|
||||
Global::iMaxTextureSize = 16384;
|
||||
}
|
||||
}
|
||||
else if (token == "doubleambient")
|
||||
{
|
||||
// podw<64>jna jasno<6E><6F> ambient
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bDoubleAmbient = (token == "yes");
|
||||
}
|
||||
else if( token == "movelight" ) {
|
||||
else if (token == "movelight")
|
||||
{
|
||||
// numer dnia w roku albo -1
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fMoveLight;
|
||||
if( Global::fMoveLight == 0.f ) { // pobranie daty z systemu
|
||||
if (Global::fMoveLight == 0.f)
|
||||
{ // pobranie daty z systemu
|
||||
std::time_t timenow = std::time(0);
|
||||
std::tm *localtime = std::localtime(&timenow);
|
||||
Global::fMoveLight = localtime->tm_yday + 1; // numer bie<69><65>cego dnia w roku
|
||||
@@ -440,273 +540,347 @@ void Global::ConfigParse(cParser &Parser) {
|
||||
// http://naturalfrequency.com/Tregenza_Sharples/Daylight_Algorithms/algorithm_1_11.htm
|
||||
// Spencer J W Fourier series representation of the position of the sun Search 2 (5)
|
||||
// 172 (1971)
|
||||
Global::fMoveLight = M_PI / 182.5 * ( Global::fMoveLight - 1.0 ); // numer dnia w postaci k<>ta
|
||||
fSunDeclination = 0.006918 - 0.3999120 * std::cos( fMoveLight ) +
|
||||
0.0702570 * std::sin( fMoveLight ) - 0.0067580 * std::cos( 2 * fMoveLight ) +
|
||||
0.0009070 * std::sin( 2 * fMoveLight ) -
|
||||
Global::fMoveLight =
|
||||
M_PI / 182.5 * (Global::fMoveLight - 1.0); // numer dnia w postaci k<>ta
|
||||
fSunDeclination =
|
||||
0.006918 - 0.3999120 * std::cos(fMoveLight) + 0.0702570 * std::sin(fMoveLight) -
|
||||
0.0067580 * std::cos(2 * fMoveLight) + 0.0009070 * std::sin(2 * fMoveLight) -
|
||||
0.0026970 * std::cos(3 * fMoveLight) + 0.0014800 * std::sin(3 * fMoveLight);
|
||||
}
|
||||
}
|
||||
else if( token == "smoothtraction" ) {
|
||||
else if (token == "smoothtraction")
|
||||
{
|
||||
// podw<64>jna jasno<6E><6F> ambient
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bSmoothTraction = (token == "yes");
|
||||
}
|
||||
else if( token == "timespeed" ) {
|
||||
else if (token == "timespeed")
|
||||
{
|
||||
// przyspieszenie czasu, zmienna do test<73>w
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fTimeSpeed;
|
||||
}
|
||||
else if( token == "multisampling" ) {
|
||||
else if (token == "multisampling")
|
||||
{
|
||||
// tryb antyaliasingu: 0=brak,1=2px,2=4px
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iMultisampling;
|
||||
}
|
||||
else if( token == "glutfont" ) {
|
||||
else if (token == "glutfont")
|
||||
{
|
||||
// tekst generowany przez GLUT
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bGlutFont = (token == "yes");
|
||||
}
|
||||
else if( token == "latitude" ) {
|
||||
else if (token == "latitude")
|
||||
{
|
||||
// szeroko<6B><6F> geograficzna
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fLatitudeDeg;
|
||||
}
|
||||
else if( token == "convertmodels" ) {
|
||||
else if (token == "convertmodels")
|
||||
{
|
||||
// tworzenie plik<69>w binarnych
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iConvertModels;
|
||||
}
|
||||
else if( token == "inactivepause" ) {
|
||||
else if (token == "inactivepause")
|
||||
{
|
||||
// automatyczna pauza, gdy okno nieaktywne
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bInactivePause = (token == "yes");
|
||||
}
|
||||
else if( token == "slowmotion" ) {
|
||||
else if (token == "slowmotion")
|
||||
{
|
||||
// tworzenie plik<69>w binarnych
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iSlowMotionMask;
|
||||
}
|
||||
else if( token == "modifytga" ) {
|
||||
else if (token == "modifytga")
|
||||
{
|
||||
// czy korygowa<77> pliki TGA dla szybszego wczytywania
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iModifyTGA;
|
||||
}
|
||||
else if( token == "hideconsole" ) {
|
||||
else if (token == "hideconsole")
|
||||
{
|
||||
// hunter-271211: ukrywanie konsoli
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bHideConsole = (token == "yes");
|
||||
}
|
||||
else if( token == "oldsmudge" ) {
|
||||
else if (token == "oldsmudge")
|
||||
{
|
||||
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bOldSmudge = (token == "yes");
|
||||
}
|
||||
else if( token == "rollfix" ) {
|
||||
else if (token == "rollfix")
|
||||
{
|
||||
// Ra: poprawianie przechy<68>ki, aby wewn<77>trzna szyna by<62>a "pozioma"
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bRollFix = (token == "yes");
|
||||
}
|
||||
else if( token == "fpsaverage" ) {
|
||||
else if (token == "fpsaverage")
|
||||
{
|
||||
// oczekiwana wartos<6F> FPS
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fFpsAverage;
|
||||
}
|
||||
else if( token == "fpsdeviation" ) {
|
||||
else if (token == "fpsdeviation")
|
||||
{
|
||||
// odchylenie standardowe FPS
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fFpsDeviation;
|
||||
}
|
||||
else if( token == "fpsradiusmax" ) {
|
||||
else if (token == "fpsradiusmax")
|
||||
{
|
||||
// maksymalny promie<69> renderowania
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fFpsRadiusMax;
|
||||
}
|
||||
else if(token == "calibratein"){
|
||||
else if (token == "calibratein")
|
||||
{
|
||||
// parametry kalibracji wej<65><6A>
|
||||
Parser.getTokens(1, false);
|
||||
int in; Parser >> in;
|
||||
if( ( in < 0 ) || ( in > 5 ) ) {
|
||||
int in;
|
||||
Parser >> in;
|
||||
if ((in < 0) || (in > 5))
|
||||
{
|
||||
in = 5; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||
}
|
||||
Parser.getTokens(4, false);
|
||||
Parser
|
||||
>> Global::fCalibrateIn[ in ][ 0 ] // wyraz wolny
|
||||
Parser >> Global::fCalibrateIn[in][0] // wyraz wolny
|
||||
>> Global::fCalibrateIn[in][1] // mno<6E>nik
|
||||
>> Global::fCalibrateIn[in][2] // mno<6E>nik dla kwadratu
|
||||
>> Global::fCalibrateIn[in][3]; // mno<6E>nik dla sze<7A>cianu
|
||||
Global::fCalibrateIn[in][4] = 0.0; // mno<6E>nik 4 pot<6F>gi
|
||||
Global::fCalibrateIn[in][5] = 0.0; // mno<6E>nik 5 pot<6F>gi
|
||||
}
|
||||
else if(token == "calibrate5din"){
|
||||
else if (token == "calibrate5din")
|
||||
{
|
||||
// parametry kalibracji wej<65><6A>
|
||||
Parser.getTokens(1, false);
|
||||
int in; Parser >> in;
|
||||
if( ( in < 0 ) || ( in > 5 ) ) {
|
||||
int in;
|
||||
Parser >> in;
|
||||
if ((in < 0) || (in > 5))
|
||||
{
|
||||
in = 5; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||
}
|
||||
Parser.getTokens(6, false);
|
||||
Parser
|
||||
>> Global::fCalibrateIn[ in ][ 0 ] // wyraz wolny
|
||||
Parser >> Global::fCalibrateIn[in][0] // wyraz wolny
|
||||
>> Global::fCalibrateIn[in][1] // mno<6E>nik
|
||||
>> Global::fCalibrateIn[in][2] // mno<6E>nik dla kwadratu
|
||||
>> Global::fCalibrateIn[in][3] // mno<6E>nik dla sze<7A>cianu
|
||||
>> Global::fCalibrateIn[in][4] // mno<6E>nik 4 pot<6F>gi
|
||||
>> Global::fCalibrateIn[in][5]; // mno<6E>nik 5 pot<6F>gi
|
||||
}
|
||||
else if(token == "calibrateout"){
|
||||
else if (token == "calibrateout")
|
||||
{
|
||||
// parametry kalibracji wyj<79><6A>
|
||||
Parser.getTokens(1, false);
|
||||
int out; Parser >> out;
|
||||
if( ( out < 0 ) || ( out > 6 ) ) {
|
||||
int out;
|
||||
Parser >> out;
|
||||
if ((out < 0) || (out > 6))
|
||||
{
|
||||
out = 6; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||
}
|
||||
Parser.getTokens(4, false);
|
||||
Parser
|
||||
>> Global::fCalibrateOut[ out ][ 0 ] // wyraz wolny
|
||||
Parser >> Global::fCalibrateOut[out][0] // wyraz wolny
|
||||
>> Global::fCalibrateOut[out][1] // mno<6E>nik liniowy
|
||||
>> Global::fCalibrateOut[out][2] // mno<6E>nik dla kwadratu
|
||||
>> Global::fCalibrateOut[out][3]; // mno<6E>nik dla sze<7A>cianu
|
||||
Global::fCalibrateOut[out][4] = 0.0; // mno<6E>nik dla 4 pot<6F>gi
|
||||
Global::fCalibrateOut[out][5] = 0.0; // mno<6E>nik dla 5 pot<6F>gi
|
||||
}
|
||||
else if(token == "calibrate5dout"){
|
||||
else if (token == "calibrate5dout")
|
||||
{
|
||||
// parametry kalibracji wyj<79><6A>
|
||||
Parser.getTokens(1, false);
|
||||
int out; Parser >> out;
|
||||
if( ( out < 0 ) || ( out > 6 ) ) {
|
||||
int out;
|
||||
Parser >> out;
|
||||
if ((out < 0) || (out > 6))
|
||||
{
|
||||
out = 6; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||
}
|
||||
Parser.getTokens(6, false);
|
||||
Parser
|
||||
>> Global::fCalibrateOut[ out ][ 0 ] // wyraz wolny
|
||||
Parser >> Global::fCalibrateOut[out][0] // wyraz wolny
|
||||
>> Global::fCalibrateOut[out][1] // mno<6E>nik liniowy
|
||||
>> Global::fCalibrateOut[out][2] // mno<6E>nik dla kwadratu
|
||||
>> Global::fCalibrateOut[out][3] // mno<6E>nik dla sze<7A>cianu
|
||||
>> Global::fCalibrateOut[out][4] // mno<6E>nik dla 4 pot<6F>gi
|
||||
>> Global::fCalibrateOut[out][5]; // mno<6E>nik dla 5 pot<6F>gi
|
||||
}
|
||||
else if(token == "calibrateoutmaxvalues"){
|
||||
else if (token == "calibrateoutmaxvalues")
|
||||
{
|
||||
// maksymalne warto<74>ci jakie mo<6D>na wy<77>wietli<6C> na mierniku
|
||||
Parser.getTokens(7, false);
|
||||
Parser
|
||||
>> Global::fCalibrateOutMax[ 0 ]
|
||||
>> Global::fCalibrateOutMax[ 1 ]
|
||||
>> Global::fCalibrateOutMax[ 2 ]
|
||||
>> Global::fCalibrateOutMax[ 3 ]
|
||||
>> Global::fCalibrateOutMax[ 4 ]
|
||||
>> Global::fCalibrateOutMax[ 5 ]
|
||||
>> Global::fCalibrateOutMax[ 6 ];
|
||||
Parser >> Global::fCalibrateOutMax[0] >> Global::fCalibrateOutMax[1] >>
|
||||
Global::fCalibrateOutMax[2] >> Global::fCalibrateOutMax[3] >>
|
||||
Global::fCalibrateOutMax[4] >> Global::fCalibrateOutMax[5] >>
|
||||
Global::fCalibrateOutMax[6];
|
||||
}
|
||||
else if( token == "calibrateoutdebuginfo" ) {
|
||||
else if (token == "calibrateoutdebuginfo")
|
||||
{
|
||||
// wyj<79>cie z info o przebiegu kalibracji
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iCalibrateOutDebugInfo;
|
||||
}
|
||||
else if( token == "pwm" ) {
|
||||
else if (token == "pwm")
|
||||
{
|
||||
// zmiana numer<65>w wyj<79><6A> PWM
|
||||
Parser.getTokens(2, false);
|
||||
int pwm_out, pwm_no;
|
||||
Parser
|
||||
>> pwm_out
|
||||
>> pwm_no;
|
||||
Parser >> pwm_out >> pwm_no;
|
||||
Global::iPoKeysPWM[pwm_out] = pwm_no;
|
||||
}
|
||||
else if( token == "brakestep" ) {
|
||||
else if (token == "brakestep")
|
||||
{
|
||||
// krok zmiany hamulca dla klawiszy [Num3] i [Num9]
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fBrakeStep;
|
||||
}
|
||||
else if( token == "joinduplicatedevents" ) {
|
||||
else if (token == "joinduplicatedevents")
|
||||
{
|
||||
// czy grupowa<77> eventy o tych samych nazwach
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
Global::bJoinEvents = (token == "yes");
|
||||
}
|
||||
else if( token == "hiddenevents" ) {
|
||||
else if (token == "hiddenevents")
|
||||
{
|
||||
// czy <20><>czy<7A> eventy z torami poprzez nazw<7A> toru
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::iHiddenEvents;
|
||||
}
|
||||
else if( token == "pause" ) {
|
||||
else if (token == "pause")
|
||||
{
|
||||
// czy po wczytaniu ma by<62> pauza?
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
iPause |= (token == "yes" ? 1 : 0);
|
||||
}
|
||||
else if( token == "lang" ) {
|
||||
else if (token == "lang")
|
||||
{
|
||||
// domy<6D>lny j<>zyk - http://tools.ietf.org/html/bcp47
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::asLang;
|
||||
}
|
||||
else if( token == "opengl" ) {
|
||||
else if (token == "opengl")
|
||||
{
|
||||
// deklarowana wersja OpenGL, <20>eby powstrzyma<6D> b<><62>dy
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> Global::fOpenGL;
|
||||
}
|
||||
else if( token == "pyscreenrendererpriority" ) {
|
||||
else if (token == "pyscreenrendererpriority")
|
||||
{
|
||||
// priority of python screen renderer
|
||||
Parser.getTokens(); Parser >> token;
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
TPythonInterpreter::getInstance()->setScreenRendererPriority(token.c_str());
|
||||
}
|
||||
else if( token == "background" ) {
|
||||
else if (token == "background")
|
||||
{
|
||||
|
||||
Parser.getTokens(3, false);
|
||||
Parser
|
||||
>> Global::Background[ 0 ] // r
|
||||
Parser >> Global::Background[0] // r
|
||||
>> Global::Background[1] // g
|
||||
>> Global::Background[2]; // b
|
||||
}
|
||||
// maciek001: ustawienia MWD
|
||||
else if (str == AnsiString("mwddebug")){ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
||||
bMWDdebugEnable = (GetNextSymbol().LowerCase() == AnsiString("yes"));
|
||||
}else if (str == AnsiString("comportname"))
|
||||
else if (token == "mwddebug")
|
||||
{ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
bMWDdebugEnable = (token == "yes");
|
||||
}
|
||||
else if (token == "comportname")
|
||||
{
|
||||
sMWDPortId = GetNextSymbol().LowerCase();
|
||||
if (bMWDdebugEnable) WriteLog("PortName " + AnsiString(sMWDPortId));
|
||||
}else if (str == AnsiString("mwdbaudrate")){ // pobierz pr<70>dko<6B><6F> transmisji danych
|
||||
iMWDBaudrate = GetNextSymbol().ToInt();
|
||||
if (bMWDdebugEnable) WriteLog("PortName " + AnsiString(iMWDBaudrate));
|
||||
}else if (str == AnsiString("mwdbreakenable")){ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
||||
bMWDBreakEnable = (GetNextSymbol().LowerCase() == AnsiString("yes"));
|
||||
}else if (str == AnsiString("mwdinputenable")){
|
||||
bMWDInputDataEnable = (GetNextSymbol().LowerCase() == AnsiString("yes"));
|
||||
}else if(str == AnsiString("mwdbreak")) // warto<74><6F> max dla potencjometru hamulca zasadniczego
|
||||
Parser.getTokens();
|
||||
Parser >> sMWDPortId;
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("PortName " + sMWDPortId);
|
||||
}
|
||||
else if (token == "mwdbaudrate")
|
||||
{ // pobierz pr<70>dko<6B><6F> transmisji danych
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> iMWDBaudrate;
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("PortName " + to_string(iMWDBaudrate));
|
||||
}
|
||||
else if (token == "mwdbreakenable")
|
||||
{ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
bMWDBreakEnable = (token == "yes");
|
||||
}
|
||||
else if (token == "mwdinputenable")
|
||||
{
|
||||
i = GetNextSymbol().ToIntDef(-1); // numer wej<65>cia
|
||||
if ((i >= 0) || (i <= 1)){
|
||||
fMWDAnalogCalib[i][0] = GetNextSymbol().ToDouble(); // max -> 2^16 -1
|
||||
fMWDAnalogCalib[i][1] = GetNextSymbol().ToDouble(); // min -> 0
|
||||
fMWDAnalogCalib[i][2] = GetNextSymbol().ToDouble(); // rozdzielczo<7A><6F> -> 255 maksymalna mo<6D>liwa warto<74><6F> z ADC
|
||||
if (bMWDdebugEnable) WriteLog("Break settings " + AnsiString(i) + AnsiString(": ") + AnsiString(fMWDAnalogCalib[i][0]) + AnsiString(" ") + AnsiString(fMWDAnalogCalib[i][1]) + AnsiString(" ") + AnsiString(fMWDAnalogCalib[i][2]));
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
bMWDInputDataEnable = (token == "yes");
|
||||
}
|
||||
else if (token == "mwdbreak") // warto<74><6F> max dla potencjometru hamulca zasadniczego
|
||||
{
|
||||
Parser.getTokens();
|
||||
Parser >> token;
|
||||
int i = stol_def(token, -1); // numer wej<65>cia
|
||||
if ((i >= 0) || (i <= 1))
|
||||
{
|
||||
Parser.getTokens(3, false);
|
||||
Parser >> fMWDAnalogCalib[i][0] // max -> 2^16 -1
|
||||
>> fMWDAnalogCalib[i][1] // min -> 0
|
||||
>>
|
||||
fMWDAnalogCalib[i][2]; // rozdzielczo<7A><6F> -> 255 maksymalna mo<6D>liwa warto<74><6F> z ADC
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("Break settings " + to_string(i) + ": " +
|
||||
to_string(fMWDAnalogCalib[i][0]) + " " +
|
||||
to_string(fMWDAnalogCalib[i][1]) + " " +
|
||||
to_string(fMWDAnalogCalib[i][2]));
|
||||
}
|
||||
}
|
||||
else if(str == AnsiString("mwdzbiornikglowny")){
|
||||
fMWDzg[0] = GetNextSymbol().ToDouble();
|
||||
fMWDzg[1] = GetNextSymbol().ToDouble();
|
||||
if (bMWDdebugEnable) WriteLog("AirTank settings: " + AnsiString(fMWDzg[0]) + AnsiString(" ") + AnsiString(fMWDzg[1]));
|
||||
else if (token == "mwdzbiornikglowny")
|
||||
{
|
||||
Parser.getTokens(2, false);
|
||||
Parser >> fMWDzg[0] >> fMWDzg[1];
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("AirTank settings: " + to_string(fMWDzg[0]) + " " + to_string(fMWDzg[1]));
|
||||
}
|
||||
else if(str == AnsiString("mwdprzewodglowny")){
|
||||
fMWDpg[0] = GetNextSymbol().ToDouble();
|
||||
fMWDpg[1] = GetNextSymbol().ToDouble();
|
||||
if (bMWDdebugEnable) WriteLog("MainAirPipe settings: " + AnsiString(fMWDpg[0]) + AnsiString(" ") + AnsiString(fMWDpg[1]));
|
||||
else if (token == "mwdprzewodglowny")
|
||||
{
|
||||
Parser.getTokens(2, false);
|
||||
Parser >> fMWDpg[0] >> fMWDpg[1];
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("MainAirPipe settings: " + to_string(fMWDpg[0]) + " " +
|
||||
to_string(fMWDpg[1]));
|
||||
}
|
||||
else if(str == AnsiString("mwdcylinderhamulcowy")){
|
||||
fMWDph[0] = GetNextSymbol().ToDouble();
|
||||
fMWDph[1] = GetNextSymbol().ToDouble();
|
||||
if (bMWDdebugEnable) WriteLog("AirPipe settings: " + AnsiString(fMWDph[0]) + AnsiString(" ") + AnsiString(fMWDph[1]));
|
||||
else if (token == "mwdcylinderhamulcowy")
|
||||
{
|
||||
Parser.getTokens(2, false);
|
||||
Parser >> fMWDph[0] >> fMWDph[1];
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("AirPipe settings: " + to_string(fMWDph[0]) + " " + to_string(fMWDph[1]));
|
||||
}
|
||||
else if(str == AnsiString("mwdwoltomierzwn")){
|
||||
fMWDvolt[0] = GetNextSymbol().ToDouble();
|
||||
fMWDvolt[1] = GetNextSymbol().ToDouble();
|
||||
if (bMWDdebugEnable) WriteLog("Volt settings: " + AnsiString(fMWDvolt[0]) + AnsiString(" ") + AnsiString(fMWDvolt[1]));
|
||||
else if (token == "mwdwoltomierzwn")
|
||||
{
|
||||
Parser.getTokens(2, false);
|
||||
Parser >> fMWDvolt[0] >> fMWDvolt[1];
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("Volt settings: " + to_string(fMWDvolt[0]) + " " + to_string(fMWDvolt[1]));
|
||||
}
|
||||
else if(str == AnsiString("mwdamperomierzwn")){
|
||||
fMWDamp[0] = GetNextSymbol().ToDouble();
|
||||
fMWDamp[1] = GetNextSymbol().ToDouble();
|
||||
if (bMWDdebugEnable) WriteLog("Amp settings: " + AnsiString(fMWDamp[0]) + AnsiString(" ") + AnsiString(fMWDamp[1]));
|
||||
else if (token == "mwdamperomierzwn")
|
||||
{
|
||||
Parser.getTokens(2, false);
|
||||
Parser >> fMWDamp[0] >> fMWDamp[1];
|
||||
if (bMWDdebugEnable)
|
||||
WriteLog("Amp settings: " + to_string(fMWDamp[0]) + " " + to_string(fMWDamp[1]));
|
||||
}
|
||||
}
|
||||
while( ( token != "" )
|
||||
&& ( token != "endconfig" ) ); //(!Parser->EndOfFile)
|
||||
} while ((token != "") && (token != "endconfig")); //(!Parser->EndOfFile)
|
||||
// na koniec troch<63> zale<6C>no<6E>ci
|
||||
if (!bLoadTraction) // wczytywanie drut<75>w i s<>up<75>w
|
||||
{ // tutaj wy<77><79>czenie, bo mog<6F> nie by<62> zdefiniowane w INI
|
||||
@@ -1085,8 +1259,14 @@ std::string Global::Bezogonkow(std::string str, bool _)
|
||||
|
||||
double Global::Min0RSpeed(double vel1, double vel2)
|
||||
{ // rozszerzenie funkcji Min0R o warto<74>ci -1.0
|
||||
if( vel1 == -1.0 ) { vel1 = std::numeric_limits<double>::max(); }
|
||||
if( vel2 == -1.0 ) { vel2 = std::numeric_limits<double>::max(); }
|
||||
if (vel1 == -1.0)
|
||||
{
|
||||
vel1 = std::numeric_limits<double>::max();
|
||||
}
|
||||
if (vel2 == -1.0)
|
||||
{
|
||||
vel2 = std::numeric_limits<double>::max();
|
||||
}
|
||||
return Min0R(vel1, vel2);
|
||||
};
|
||||
|
||||
|
||||
@@ -317,8 +317,8 @@ class Global
|
||||
|
||||
// maciek001: zmienne dla MWD
|
||||
static bool bMWDdebugEnable;
|
||||
static unsigned long int iMWDBaudrate;
|
||||
static AnsiString sMWDPortId;
|
||||
static unsigned int iMWDBaudrate;
|
||||
static std::string sMWDPortId;
|
||||
static bool bMWDBreakEnable;
|
||||
static bool bMWDInputDataEnable;
|
||||
static double fMWDAnalogCalib[4][3];
|
||||
|
||||
28
Train.h
28
Train.h
@@ -12,18 +12,18 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
//#include "Track.h"
|
||||
//#include "TrkFoll.h"
|
||||
#include "Model3d.h"
|
||||
#include "Spring.h"
|
||||
#include "Gauge.h"
|
||||
#include "Button.h"
|
||||
#include "DynObj.h"
|
||||
#include "Gauge.h"
|
||||
#include "Model3d.h"
|
||||
#include "Spring.h"
|
||||
#include "mtable.h"
|
||||
|
||||
#include "Sound.h"
|
||||
#include "AdvSound.h"
|
||||
#include "RealSound.h"
|
||||
#include "FadeSound.h"
|
||||
#include "PyInt.h"
|
||||
#include "RealSound.h"
|
||||
#include "Sound.h"
|
||||
#include <string>
|
||||
|
||||
// typedef enum {st_Off, st_Starting, st_On, st_ShuttingDown} T4State;
|
||||
@@ -104,14 +104,13 @@ class TTrain
|
||||
|
||||
private:
|
||||
// clears state of all cabin controls
|
||||
void
|
||||
clear_cab_controls();
|
||||
// initializes a gauge matching provided label. returns: true if the label was found, false otherwise
|
||||
bool
|
||||
initialize_gauge( cParser &Parser, std::string const &Label, int const Cabindex );
|
||||
// initializes a button matching provided label. returns: true if the label was found, false otherwise
|
||||
bool
|
||||
initialize_button( cParser &Parser, std::string const &Label, int const Cabindex );
|
||||
void clear_cab_controls();
|
||||
// initializes a gauge matching provided label. returns: true if the label was found, false
|
||||
// otherwise
|
||||
bool initialize_gauge(cParser &Parser, std::string const &Label, int const Cabindex);
|
||||
// initializes a button matching provided label. returns: true if the label was found, false
|
||||
// otherwise
|
||||
bool initialize_button(cParser &Parser, std::string const &Label, int const Cabindex);
|
||||
|
||||
private: //瞠by go nic z zewn靖rz nie przestawia這
|
||||
TDynamicObject *DynamicObject; // przestawia zmiana pojazdu [F5]
|
||||
@@ -396,7 +395,8 @@ private:
|
||||
float fHVoltage; // napi?cie dla dynamicznych ga?ek
|
||||
float fHCurrent[4]; // pr?dy: suma i amperomierze 1,2,3
|
||||
float fEngine[4]; // obroty te? trzeba pobra?
|
||||
int iCarNo, iPowerNo, iUnitNo; //liczba pojazdow, czlonow napednych i jednostek spi皻ych ze sob<6F>
|
||||
int iCarNo, iPowerNo, iUnitNo; // liczba pojazdow, czlonow napednych i jednostek spi皻ych ze
|
||||
// sob<6F>
|
||||
bool bDoors[20][3]; // drzwi dla wszystkich czlonow
|
||||
int iUnits[20]; // numer jednostki
|
||||
int iDoorNo[20]; // liczba drzwi
|
||||
|
||||
Reference in New Issue
Block a user