In hindsight my emscripten-ifdef (70d416a8f63f) is nonsense.
As fpcrtl_glShaderSource() would not be defined and lead to compiling issues.
So either it's 3 ifdefs (in pas2cRedo, pas2cSystem and misc.c),
in order to toggle between fpcrtl_ and the native function,
or alternatively have no ifdef for it at all.
I'm going with none at all,
which means emscripten will compile with the original (const) function prototype,
being wrapped by the fpcrtl_ function, same as non-emscripten builds.
#ifndef ENGINEINSTANCE_H
#define ENGINEINSTANCE_H
#include <QImage>
#include <QObject>
#include <QOpenGLContext>
#include "engine_interface.h"
#include "game_config.h"
class EngineInstance : public QObject {
Q_OBJECT
public:
explicit EngineInstance(const QString& libraryPath,
QObject* parent = nullptr);
~EngineInstance();
Q_PROPERTY(bool isValid READ isValid NOTIFY isValidChanged)
void sendConfig(const GameConfig& config);
void renderFrame();
void setOpenGLContext(QOpenGLContext* context);
QImage generatePreview();
bool isValid() const;
signals:
void isValidChanged(bool isValid);
public slots:
void advance(quint32 ticks);
void moveCamera(const QPoint& delta);
void simpleEvent(Engine::SimpleEventType event_type);
void longEvent(Engine::LongEventType event_type,
Engine::LongEventState state);
void positionedEvent(Engine::PositionedEventType event_type, qint32 x,
qint32 y);
private:
Engine::EngineInstance* m_instance;
Engine::hedgewars_engine_protocol_version_t*
hedgewars_engine_protocol_version;
Engine::start_engine_t* start_engine;
Engine::generate_preview_t* generate_preview;
Engine::dispose_preview_t* dispose_preview;
Engine::cleanup_t* cleanup;
Engine::send_ipc_t* send_ipc;
Engine::read_ipc_t* read_ipc;
Engine::setup_current_gl_context_t* setup_current_gl_context;
Engine::render_frame_t* render_frame;
Engine::advance_simulation_t* advance_simulation;
Engine::move_camera_t* move_camera;
Engine::simple_event_t* simple_event;
Engine::long_event_t* long_event;
Engine::positioned_event_t* positioned_event;
bool m_isValid;
};
#endif // ENGINEINSTANCE_H