mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
81 lines
1.7 KiB
C++
81 lines
1.7 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/.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "utilities/Classes.h"
|
|
|
|
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 ) );
|
|
};
|
|
};
|
|
|