mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 12:09:19 +02:00
AnimModel.cpp reaches cParser through the simulation core, not a direct import, so the previous pass missed it; the propagation now follows the whole import closure. Train.cpp, drivermode.cpp and Globals.cpp call Console:: inside _WIN32 guards without importing eu07.console - invisible on Linux, where those blocks are skipped.
102 lines
2.0 KiB
C++
102 lines
2.0 KiB
C++
/*
|
|
This Source Code Form is subject to the
|
|
terms of the Mozilla Public License, v.
|
|
2.0. If a copy of the MPL was not
|
|
distributed with this file, You can
|
|
obtain one at
|
|
http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
module;
|
|
#include <array>
|
|
#include <chrono>
|
|
#include <cstddef>
|
|
#include <deque>
|
|
#include <limits>
|
|
#include <mutex>
|
|
#include <ostream>
|
|
#include <type_traits>
|
|
#include <unordered_map>
|
|
#include <utility>
|
|
#include <vector>
|
|
#include <sstream>
|
|
#include <string>
|
|
|
|
export module eu07.simcore:aircoupler;
|
|
import :fwd;
|
|
import eu07.utilities.parser;
|
|
import eu07.utilities.classes;
|
|
|
|
export {
|
|
|
|
|
|
|
|
class AirCoupler
|
|
{
|
|
private:
|
|
TSubModel *ModelOn, *ModelOff, *ModelxOn;
|
|
bool On;
|
|
bool xOn;
|
|
void Update();
|
|
|
|
public:
|
|
AirCoupler();
|
|
~AirCoupler();
|
|
///Reset members.
|
|
void Clear();
|
|
///Looks for submodels.
|
|
void Init(std::string const &asName, TModel3d *Model);
|
|
///Loads info about coupler.
|
|
void Load(cParser *Parser, TModel3d *Model);
|
|
int GetStatus();
|
|
inline void TurnOn() ///Turns on straight coupler.
|
|
{
|
|
On = true;
|
|
xOn = false;
|
|
Update();
|
|
};
|
|
inline void TurnOff() ///Turns on disconnected coupler.
|
|
{
|
|
On = false;
|
|
xOn = false;
|
|
Update();
|
|
};
|
|
inline void TurnxOn() ///Turns on slanted coupler.
|
|
{
|
|
On = false;
|
|
xOn = true;
|
|
Update();
|
|
};
|
|
|
|
// if the xOn model is missing, activate plain On instead
|
|
inline void TurnxOnWithOnAsFallback()
|
|
{
|
|
if (ModelxOn != nullptr) {
|
|
On = false;
|
|
xOn = true;
|
|
Update();
|
|
}
|
|
else {
|
|
TurnOn();
|
|
}
|
|
};
|
|
// if the xOn model is missing, activate plain Off instead
|
|
inline void TurnxOnWithOffAsFallback()
|
|
{
|
|
if (ModelxOn != nullptr) {
|
|
On = false;
|
|
xOn = true;
|
|
Update();
|
|
}
|
|
else {
|
|
TurnOff();
|
|
}
|
|
};
|
|
inline bool Active() const
|
|
{
|
|
return ModelOn != nullptr || ModelxOn != nullptr;
|
|
};
|
|
};
|
|
|
|
|
|
} // export
|