Factor functions shared between elements into headers

The signature duplication was getting out of hand; too easy to get wrong.
This commit is contained in:
Tamás Bálint Misius 2023-12-09 12:31:23 +01:00
parent 0f1218df0c
commit ca6c67c16c
No known key found for this signature in database
GPG Key ID: 5B472A12F6ECA9F2
53 changed files with 134 additions and 91 deletions

View File

@ -3,6 +3,7 @@
#include "Format.h"
#include "simulation/Simulation.h"
#include "simulation/ElementClasses.h"
#include "simulation/elements/PIPE.h"
#include "common/tpt-compat.h"
#include "bson/BSON.h"
#include "graphics/Renderer.h"
@ -114,9 +115,6 @@ std::pair<bool, std::vector<char>> GameSave::Serialise() const
return { false, {} };
}
extern const std::array<Vec2<int>, 8> Element_PIPE_offsets;
void Element_PIPE_transformPatchOffsets(Particle &part, const std::array<int, 8> &offsetMap);
void GameSave::Transform(Mat2<int> transform, Vec2<int> nudge)
{
// undo translation by rotation

View File

@ -31,6 +31,7 @@
#include "simulation/Simulation.h"
#include "simulation/SimulationData.h"
#include "simulation/Snapshot.h"
#include "simulation/elements/STKM.h"
#include "gui/dialogues/ErrorMessage.h"
#include "gui/dialogues/InformationMessage.h"
@ -881,7 +882,6 @@ void GameController::Update()
rightSelected = sr;
}
void Element_STKM_set_element(Simulation *sim, playerst *playerp, int element);
if (!sim->player.spwn)
Element_STKM_set_element(sim, &sim->player, rightSelected);
if (!sim->player2.spwn)

View File

@ -9,15 +9,14 @@
#include "common/tpt-rand.h"
#include "common/tpt-thread-local.h"
#include "gui/game/Brush.h"
#include "elements/EMP.h"
#include "elements/LOLZ.h"
#include "elements/STKM.h"
#include "elements/PIPE.h"
#include "elements/FILT.h"
#include <iostream>
#include <set>
extern int Element_PPIP_ppip_changed;
extern int Element_LOLZ_RuleTable[9][9];
extern int Element_LOLZ_lolz[XRES/9][YRES/9];
extern int Element_LOVE_RuleTable[9][9];
extern int Element_LOVE_love[XRES/9][YRES/9];
static float remainder_p(float x, float y)
{
return std::fmod(x, y) + (x>=0 ? 0 : y);
@ -127,7 +126,6 @@ MissingElements Simulation::Load(const GameSave *save, bool includePressure, Vec
{
continue;
}
bool Element_FIGH_CanAlloc(Simulation *sim);
if (tempPart.type == PT_FIGH && !Element_FIGH_CanAlloc(this))
{
continue;
@ -159,7 +157,6 @@ MissingElements Simulation::Load(const GameSave *save, bool includePressure, Vec
elementCount[tempPart.type]++;
void Element_STKM_init_legs(Simulation * sim, playerst *playerp, int i);
switch (parts[i].type)
{
case PT_STKM:
@ -200,7 +197,6 @@ MissingElements Simulation::Load(const GameSave *save, bool includePressure, Vec
case PT_FIGH:
{
unsigned int oldTmp = parts[i].tmp;
int Element_FIGH_Alloc(Simulation *sim);
parts[i].tmp = Element_FIGH_Alloc(this);
if (parts[i].tmp >= 0)
{
@ -212,7 +208,6 @@ MissingElements Simulation::Load(const GameSave *save, bool includePressure, Vec
parts[i].ctype = 0;
}
fighters[parts[i].tmp].elem = PT_DUST;
void Element_FIGH_NewFighter(Simulation *sim, int fighterID, int i, int elem);
Element_FIGH_NewFighter(this, parts[i].tmp, i, parts[i].ctype);
if (fan)
fighters[parts[i].tmp].fan = true;
@ -1262,7 +1257,6 @@ int Simulation::try_move(int i, int x, int y, int nx, int ny)
return 0;
}
int Element_FILT_interactWavelengths(Simulation *sim, Particle* cpart, int origWl);
if (e == 2) //if occupy same space
{
switch (parts[i].type)
@ -3922,7 +3916,6 @@ void Simulation::AfterSim()
if (emp_trigger_count)
{
// pitiful attempt at trying to keep code relating to a given element in the same file
void Element_EMP_Trigger(Simulation *sim, int triggerCount);
Element_EMP_Trigger(this, emp_trigger_count);
emp_trigger_count = 0;
}

View File

@ -1,4 +1,5 @@
#include "simulation/ElementCommon.h"
#include "FILT.h"
static int update(UPDATE_FUNC_ARGS);
@ -130,7 +131,6 @@ static int update(UPDATE_FUNC_ARGS)
{
if (parts[r].tmp != 6)
{
int Element_FILT_interactWavelengths(Simulation *sim, Particle* cpart, int origWl);
colored = Element_FILT_interactWavelengths(sim, &parts[r], colored);
if (!colored)
break;

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_COAL_update(UPDATE_FUNC_ARGS);
int Element_COAL_graphics(GRAPHICS_FUNC_ARGS);
#include "COAL.h"
void Element::Element_BCOL()
{

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_BIZR_update(UPDATE_FUNC_ARGS);
int Element_BIZR_graphics(GRAPHICS_FUNC_ARGS);
#include "BIZR.h"
void Element::Element_BIZR()
{

View File

@ -0,0 +1,5 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_BIZR_graphics(GRAPHICS_FUNC_ARGS);
int Element_BIZR_update(UPDATE_FUNC_ARGS);

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_BIZR_update(UPDATE_FUNC_ARGS);
int Element_BIZR_graphics(GRAPHICS_FUNC_ARGS);
#include "BIZR.h"
void Element::Element_BIZRG()
{

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_BIZR_update(UPDATE_FUNC_ARGS);
int Element_BIZR_graphics(GRAPHICS_FUNC_ARGS);
#include "BIZR.h"
void Element::Element_BIZRS()
{

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_VIBR_update(UPDATE_FUNC_ARGS);
int Element_VIBR_graphics(GRAPHICS_FUNC_ARGS);
#include "VIBR.h"
void Element::Element_BVBR()
{

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_COAL_update(UPDATE_FUNC_ARGS);
int Element_COAL_graphics(GRAPHICS_FUNC_ARGS);
#include "COAL.h"
void Element::Element_COAL()
{

View File

@ -0,0 +1,5 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_COAL_graphics(GRAPHICS_FUNC_ARGS);
int Element_COAL_update(UPDATE_FUNC_ARGS);

View File

@ -1,4 +1,5 @@
#include "simulation/ElementCommon.h"
#include "FILT.h"
static int update(UPDATE_FUNC_ARGS);
static bool ctypeDraw(CTYPEDRAW_FUNC_ARGS);

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
void Element_EMP_Trigger(Simulation *sim, int triggerCount);

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_ETRD_nearestSparkablePart(Simulation *sim, int targetId);

View File

@ -1,15 +1,10 @@
#include "simulation/ElementCommon.h"
#include "STKM.h"
static int update(UPDATE_FUNC_ARGS);
static bool createAllowed(ELEMENT_CREATE_ALLOWED_FUNC_ARGS);
static void changeType(ELEMENT_CHANGETYPE_FUNC_ARGS);
static void Free(Simulation *sim, unsigned char i);
bool Element_FIGH_CanAlloc(Simulation *sim);
int Element_FIGH_Alloc(Simulation *sim);
void Element_FIGH_NewFighter(Simulation *sim, int fighterID, int i, int elem);
int Element_STKM_graphics(GRAPHICS_FUNC_ARGS);
void Element_STKM_init_legs(Simulation * sim, playerst *playerp, int i);
int Element_STKM_run_stickman(playerst *playerp, UPDATE_FUNC_ARGS);
void Element::Element_FIGH()
{

View File

@ -1,8 +1,8 @@
#include "simulation/ElementCommon.h"
#include "FILT.h"
static int graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);
int Element_FILT_interactWavelengths(Simulation *sim, Particle* cpart, int origWl);
void Element::Element_FILT()
{

View File

@ -0,0 +1,5 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_FILT_getWavelengths(const Particle* cpart);
int Element_FILT_interactWavelengths(Simulation *sim, Particle* cpart, int origWl);

View File

@ -1,7 +1,7 @@
#include "simulation/ElementCommon.h"
#include "FIRE.h"
#include <algorithm>
int Element_FIRE_update(UPDATE_FUNC_ARGS);
static int updateLegacy(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_FIRE_update(UPDATE_FUNC_ARGS);

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "FIRE.h"
int Element_FIRE_update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);

View File

@ -1,5 +1,5 @@
#include "simulation/ElementCommon.h"
#include <iostream>
#include "FILT.h"
static int update(UPDATE_FUNC_ARGS);

View File

@ -0,0 +1,7 @@
#pragma once
#include "simulation/ElementDefs.h"
extern int Element_LOLZ_RuleTable[9][9];
extern int Element_LOLZ_lolz[XRES/9][YRES/9];
extern int Element_LOVE_RuleTable[9][9];
extern int Element_LOVE_love[XRES/9][YRES/9];

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "FIRE.h"
int Element_FIRE_update(UPDATE_FUNC_ARGS);
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);

View File

@ -1,6 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_NTCT_update(UPDATE_FUNC_ARGS);
#include "NTCT.h"
void Element::Element_NTCT()
{

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_NTCT_update(UPDATE_FUNC_ARGS);

View File

@ -1,8 +1,8 @@
#include "simulation/ElementCommon.h"
#include "PCLN.h"
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
bool Element_PCLN_ctypeDraw(CTYPEDRAW_FUNC_ARGS);
void Element::Element_PBCN()
{

View File

@ -1,8 +1,8 @@
#include "simulation/ElementCommon.h"
#include "PCLN.h"
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
bool Element_PCLN_ctypeDraw(CTYPEDRAW_FUNC_ARGS);
void Element::Element_PCLN()
{

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
bool Element_PCLN_ctypeDraw(CTYPEDRAW_FUNC_ARGS);

View File

@ -1,6 +1,7 @@
#include "simulation/ElementCommon.h"
#include "FIRE.h"
#include "FILT.h"
int Element_FIRE_update(UPDATE_FUNC_ARGS);
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);
@ -151,7 +152,6 @@ static void create(ELEMENT_CREATE_FUNC_ARGS)
float a = sim->rng.between(0, 7) * 0.78540f;
sim->parts[i].vx = 3.0f * cosf(a);
sim->parts[i].vy = 3.0f * sinf(a);
int Element_FILT_interactWavelengths(Simulation *sim, Particle* cpart, int origWl);
if (TYP(sim->pmap[y][x]) == PT_FILT)
sim->parts[i].ctype = Element_FILT_interactWavelengths(sim, &sim->parts[ID(sim->pmap[y][x])], sim->parts[i].ctype);
}

View File

@ -1,15 +1,11 @@
#include "simulation/ElementCommon.h"
#include "PIPE.h"
#include "SOAP.h"
extern const std::array<Vec2<int>, 8> Element_PIPE_offsets;
void Element_PIPE_transformPatchOffsets(Particle &part, const std::array<int, 8> &offsetMap);
int Element_PIPE_update(UPDATE_FUNC_ARGS);
int Element_PIPE_graphics(GRAPHICS_FUNC_ARGS);
static void props_pipe_to_part(const Particle *pipe, Particle *part, bool STOR);
void Element_PIPE_transfer_pipe_to_part(Simulation * sim, Particle *pipe, Particle *part, bool STOR);
static void transfer_part_to_pipe(Particle *part, Particle *pipe);
static void transfer_pipe_to_pipe(Particle *src, Particle *dest, bool STOR);
static void pushParticle(Simulation * sim, int i, int count, int original);
void Element_SOAP_detach(Simulation * sim, int i);
void Element::Element_PIPE()
{

View File

@ -0,0 +1,11 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_PIPE_graphics(GRAPHICS_FUNC_ARGS);
void Element_PIPE_transfer_pipe_to_part(Simulation * sim, Particle *pipe, Particle *part, bool STOR);
void Element_PIPE_transformPatchOffsets(Particle &part, const std::array<int, 8> &offsetMap);
int Element_PIPE_update(UPDATE_FUNC_ARGS);
void Element_PPIP_flood_trigger(Simulation * sim, int x, int y, int sparkedBy);
extern int Element_PPIP_ppip_changed;
extern const std::array<Vec2<int>, 8> Element_PIPE_offsets;

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "FIRE.h"
int Element_FIRE_update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_PIPE_update(UPDATE_FUNC_ARGS);
int Element_PIPE_graphics(GRAPHICS_FUNC_ARGS);
#include "PIPE.h"
void Element::Element_PPIP()
{

View File

@ -1,7 +1,6 @@
#include "simulation/ElementCommon.h"
#include "QRTZ.h"
int Element_QRTZ_update(UPDATE_FUNC_ARGS);
int Element_QRTZ_graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);
void Element::Element_PQRT()

View File

@ -1,10 +1,10 @@
#include "simulation/ElementCommon.h"
#include "simulation/orbitalparts.h"
#include "PIPE.h"
#include "SOAP.h"
void Element_PIPE_transfer_pipe_to_part(Simulation * sim, Particle *pipe, Particle *part, bool STOR);
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
void Element_SOAP_detach(Simulation * sim, int i);
void Element::Element_PRTI()
{

View File

@ -1,7 +1,6 @@
#include "simulation/ElementCommon.h"
#include "QRTZ.h"
int Element_QRTZ_update(UPDATE_FUNC_ARGS);
int Element_QRTZ_graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);
void Element::Element_QRTZ()

View File

@ -0,0 +1,5 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_QRTZ_graphics(GRAPHICS_FUNC_ARGS);
int Element_QRTZ_update(UPDATE_FUNC_ARGS);

View File

@ -1,6 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_RFRG_update(UPDATE_FUNC_ARGS);
#include "RFRG.h"
void Element::Element_RFGL()
{

View File

@ -1,6 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_RFRG_update(UPDATE_FUNC_ARGS);
#include "RFRG.h"
void Element::Element_RFRG()
{

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_RFRG_update(UPDATE_FUNC_ARGS);

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
void Element_SOAP_detach(Simulation * sim, int i);

View File

@ -1,6 +1,9 @@
#include "simulation/ElementCommon.h"
#include "NTCT.h"
#include "PIPE.h"
#include "FIRE.h"
#include "ETRD.h"
int Element_FIRE_update(UPDATE_FUNC_ARGS);
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
@ -83,13 +86,11 @@ static int update(UPDATE_FUNC_ARGS)
return 1;
case PT_NTCT:
case PT_PTCT:
int Element_NTCT_update(UPDATE_FUNC_ARGS);
Element_NTCT_update(UPDATE_FUNC_SUBCALL_ARGS);
break;
case PT_ETRD:
if (parts[i].life==1)
{
int Element_ETRD_nearestSparkablePart(Simulation *sim, int targetId);
auto nearp = Element_ETRD_nearestSparkablePart(sim, i);
if (nearp!=-1 && sim->parts_avg(i, nearp, PT_INSL)!=PT_INSL)
{
@ -247,7 +248,6 @@ static int update(UPDATE_FUNC_ARGS)
case PT_PPIP:
if (parts[i].life == 3 && pavg!=PT_INSL)
{
void Element_PPIP_flood_trigger(Simulation * sim, int x, int y, int sparkedBy);
if (sender == PT_NSCN || sender == PT_PSCN || sender == PT_INST)
Element_PPIP_flood_trigger(sim, x+rx, y+ry, sender);
}

View File

@ -1,14 +1,10 @@
#include "simulation/ElementCommon.h"
#include "STKM.h"
static int update(UPDATE_FUNC_ARGS);
int Element_STKM_graphics(GRAPHICS_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);
static bool createAllowed(ELEMENT_CREATE_ALLOWED_FUNC_ARGS);
static void changeType(ELEMENT_CHANGETYPE_FUNC_ARGS);
void Element_STKM_init_legs(Simulation * sim, playerst *playerp, int i);
int Element_STKM_run_stickman(playerst *playerp, UPDATE_FUNC_ARGS);
void Element_STKM_set_element(Simulation *sim, playerst *playerp, int element);
void Element_STKM_interact(Simulation *sim, playerst *playerp, int i, int x, int y);
void Element::Element_STKM()
{

View File

@ -0,0 +1,12 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_FIGH_Alloc(Simulation *sim);
bool Element_FIGH_CanAlloc(Simulation *sim);
void Element_FIGH_NewFighter(Simulation *sim, int fighterID, int i, int elem);
int Element_STKM_graphics(GRAPHICS_FUNC_ARGS);
void Element_STKM_init_legs(Simulation * sim, playerst *playerp, int i);
void Element_STKM_interact(Simulation *sim, playerst *playerp, int i, int x, int y);
int Element_STKM_run_stickman(playerst *playerp, UPDATE_FUNC_ARGS);
void Element_STKM_set_element(Simulation *sim, playerst *playerp, int element);
void Element_STKM_set_element(Simulation *sim, playerst *playerp, int element);

View File

@ -1,12 +1,10 @@
#include "simulation/ElementCommon.h"
#include "STKM.h"
static int update(UPDATE_FUNC_ARGS);
static void create(ELEMENT_CREATE_FUNC_ARGS);
static bool createAllowed(ELEMENT_CREATE_ALLOWED_FUNC_ARGS);
static void changeType(ELEMENT_CHANGETYPE_FUNC_ARGS);
int Element_STKM_graphics(GRAPHICS_FUNC_ARGS);
void Element_STKM_init_legs(Simulation * sim, playerst *playerp, int i);
int Element_STKM_run_stickman(playerst *playerp, UPDATE_FUNC_ARGS);
void Element::Element_STKM2()
{

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "SOAP.h"
void Element_SOAP_detach(Simulation * sim, int i);
static int update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
static bool ctypeDraw(CTYPEDRAW_FUNC_ARGS);

View File

@ -1,7 +1,5 @@
#include "simulation/ElementCommon.h"
int Element_VIBR_update(UPDATE_FUNC_ARGS);
int Element_VIBR_graphics(GRAPHICS_FUNC_ARGS);
#include "VIBR.h"
void Element::Element_VIBR()
{

View File

@ -0,0 +1,5 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_VIBR_graphics(GRAPHICS_FUNC_ARGS);
int Element_VIBR_update(UPDATE_FUNC_ARGS);

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "VIRS.h"
int Element_VIRS_update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
void Element::Element_VIRS()

View File

@ -0,0 +1,4 @@
#pragma once
#include "simulation/ElementDefs.h"
int Element_VIRS_update(UPDATE_FUNC_ARGS);

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "VIRS.h"
int Element_VIRS_update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
void Element::Element_VRSG()

View File

@ -1,6 +1,6 @@
#include "simulation/ElementCommon.h"
#include "VIRS.h"
int Element_VIRS_update(UPDATE_FUNC_ARGS);
static int graphics(GRAPHICS_FUNC_ARGS);
void Element::Element_VRSS()