Vendor the Shockolate engine and build it via a Docker image with every
build / build (push) Failing after 5s
build / build (push) Failing after 5s
dependency (SDL2, SDL2_mixer, fluidsynth-lite, a MIDI soundfont) prebuilt, so compiling the engine needs no network access - just the image and the engine source. Add res/assets/extract_assets.sh to pull the game's data files out of a purchased GOG installer, and a Makefile that assembles a runnable dist/ from the two. Also add `make package`, which builds a redistributable tarball that omits the proprietary game assets (shipping res/GET_ASSETS.txt instead) plus license information for both the MIT tooling and the GPLv3 engine, and a Gitea Actions workflow that builds and publishes it to dl.ladkau.de on every push.
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
|
||||
Copyright (C) 2015-2018 Night Dive Studios, LLC.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
*/
|
||||
/*
|
||||
** $Header: n:/project/cit/src/RCS/objapp.c 1.17 1994/05/14 03:30:03 xemu Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include "objects.h"
|
||||
#include "objwpn.h"
|
||||
#include "objwarez.h"
|
||||
#include "objstuff.h"
|
||||
#include "objgame.h"
|
||||
#include "objcrit.h"
|
||||
#include "objprop.h"
|
||||
#include "map.h"
|
||||
|
||||
////////////////////////////// APPLICATION-SPECIFIC DATA
|
||||
//
|
||||
// Here we define the arrays for all the application-specific
|
||||
// classes defined in objapp.h. Follow this example, and there
|
||||
// won't be any trouble.
|
||||
//
|
||||
// ## INSERT NEW CLASS HERE
|
||||
|
||||
/*const*/ ObjSpecHeader objSpecHeaders[NUM_CLASSES] = {
|
||||
{NUM_OBJECTS_GUN, sizeof(ObjGun), (char *)&objGuns},
|
||||
{NUM_OBJECTS_AMMO, sizeof(ObjAmmo), (char *)&objAmmos},
|
||||
{NUM_OBJECTS_PHYSICS, sizeof(ObjPhysics), (char *)&objPhysicss},
|
||||
{NUM_OBJECTS_GRENADE, sizeof(ObjGrenade), (char *)&objGrenades},
|
||||
{NUM_OBJECTS_DRUG, sizeof(ObjDrug), (char *)&objDrugs},
|
||||
{NUM_OBJECTS_HARDWARE, sizeof(ObjHardware), (char *)&objHardwares},
|
||||
{NUM_OBJECTS_SOFTWARE, sizeof(ObjSoftware), (char *)&objSoftwares},
|
||||
{NUM_OBJECTS_BIGSTUFF, sizeof(ObjBigstuff), (char *)&objBigstuffs},
|
||||
{NUM_OBJECTS_SMALLSTUFF, sizeof(ObjSmallstuff), (char *)&objSmallstuffs},
|
||||
{NUM_OBJECTS_FIXTURE, sizeof(ObjFixture), (char *)&objFixtures},
|
||||
{NUM_OBJECTS_DOOR, sizeof(ObjDoor), (char *)&objDoors},
|
||||
{NUM_OBJECTS_ANIMATING, sizeof(ObjAnimating), (char *)&objAnimatings},
|
||||
{NUM_OBJECTS_TRAP, sizeof(ObjTrap), (char *)&objTraps},
|
||||
{NUM_OBJECTS_CONTAINER, sizeof(ObjContainer), (char *)&objContainers},
|
||||
{NUM_OBJECTS_CRITTER, sizeof(ObjCritter), (char *)&objCritters},
|
||||
};
|
||||
|
||||
// const ObjSpecHeader ObjPropHeader = {NUM_OBJECT, sizeof(ObjProp), &ObjProps}
|
||||
|
||||
const ObjSpecHeader ClassPropHeaders[NUM_CLASSES] = {
|
||||
{NUM_GUN, sizeof(GunProp), (char *)&GunProps},
|
||||
{NUM_AMMO, sizeof(AmmoProp), (char *)&AmmoProps},
|
||||
{NUM_PHYSICS, sizeof(PhysicsProp), (char *)&PhysicsProps},
|
||||
{NUM_GRENADE, sizeof(GrenadeProp), (char *)&GrenadeProps},
|
||||
{NUM_DRUG, sizeof(DrugProp), (char *)&DrugProps},
|
||||
{NUM_HARDWARE, sizeof(HardwareProp), (char *)&HardwareProps},
|
||||
{NUM_SOFTWARE, sizeof(SoftwareProp), (char *)&SoftwareProps},
|
||||
{NUM_BIGSTUFF, sizeof(BigstuffProp), (char *)&BigstuffProps},
|
||||
{NUM_SMALLSTUFF, sizeof(SmallstuffProp), (char *)&SmallstuffProps},
|
||||
{NUM_FIXTURE, sizeof(FixtureProp), (char *)&FixtureProps},
|
||||
{NUM_DOOR, sizeof(DoorProp), (char *)&DoorProps},
|
||||
{NUM_CONTAINER, sizeof(ContainerProp), (char *)&ContainerProps},
|
||||
{NUM_CRITTER, sizeof(CritterProp), (char *)&CritterProps},
|
||||
};
|
||||
|
||||
const ObjSpecHeader SubclassPropHeaders[NUM_SUBCLASSES] = {
|
||||
{NUM_PISTOL_GUN, sizeof(PistolGunProp), (char *)&PistolGunProps},
|
||||
{NUM_AUTO_GUN, sizeof(AutoGunProp), (char *)&AutoGunProps},
|
||||
{NUM_SPECIAL_GUN, sizeof(SpecialGunProp), (char *)&SpecialGunProps},
|
||||
{NUM_HANDTOHAND_GUN, sizeof(HandtohandGunProp), (char *)&HandtohandGunProps},
|
||||
{NUM_BEAM_GUN, sizeof(BeamGunProp), (char *)&BeamGunProps},
|
||||
{NUM_BEAMPROJ_GUN, sizeof(BeamprojGunProp), (char *)&BeamprojGunProps},
|
||||
{NUM_PISTOL_AMMO, sizeof(PistolAmmoProp), (char *)&PistolAmmoProps},
|
||||
{NUM_NEEDLE_AMMO, sizeof(NeedleAmmoProp), (char *)&NeedleAmmoProps},
|
||||
{NUM_MAGNUM_AMMO, sizeof(MagnumAmmoProp), (char *)&MagnumAmmoProps},
|
||||
{NUM_RIFLE_AMMO, sizeof(RifleAmmoProp), (char *)&RifleAmmoProps},
|
||||
{NUM_FLECHETTE_AMMO, sizeof(FlechetteAmmoProp), (char *)&FlechetteAmmoProps},
|
||||
{NUM_AUTO_AMMO, sizeof(AutoAmmoProp), (char *)&AutoAmmoProps},
|
||||
{NUM_PROJ_AMMO, sizeof(ProjAmmoProp), (char *)&ProjAmmoProps},
|
||||
{NUM_TRACER_PHYSICS, sizeof(TracerPhysicsProp), (char *)&TracerPhysicsProps},
|
||||
{NUM_SLOW_PHYSICS, sizeof(SlowPhysicsProp), (char *)&SlowPhysicsProps},
|
||||
{NUM_CAMERA_PHYSICS, sizeof(CameraPhysicsProp), (char *)&CameraPhysicsProps},
|
||||
{NUM_DIRECT_GRENADE, sizeof(DirectGrenadeProp), (char *)&DirectGrenadeProps},
|
||||
{NUM_TIMED_GRENADE, sizeof(TimedGrenadeProp), (char *)&TimedGrenadeProps},
|
||||
{NUM_STATS_DRUG, sizeof(StatsDrugProp), (char *)&StatsDrugProps},
|
||||
{NUM_GOGGLE_HARDWARE, sizeof(GoggleHardwareProp), (char *)&GoggleHardwareProps},
|
||||
{NUM_HARDWARE_HARDWARE, sizeof(HardwareHardwareProp), (char *)&HardwareHardwareProps},
|
||||
{NUM_OFFENSE_SOFTWARE, sizeof(OffenseSoftwareProp), (char *)&OffenseSoftwareProps},
|
||||
{NUM_DEFENSE_SOFTWARE, sizeof(DefenseSoftwareProp), (char *)&DefenseSoftwareProps},
|
||||
{NUM_ONESHOT_SOFTWARE, sizeof(OneshotSoftwareProp), (char *)&OneshotSoftwareProps},
|
||||
{NUM_MISC_SOFTWARE, sizeof(MiscSoftwareProp), (char *)&MiscSoftwareProps},
|
||||
{NUM_DATA_SOFTWARE, sizeof(DataSoftwareProp), (char *)&DataSoftwareProps},
|
||||
{NUM_ELECTRONIC_BIGSTUFF, sizeof(ElectronicBigstuffProp), (char *)&ElectronicBigstuffProps},
|
||||
{NUM_FURNISHING_BIGSTUFF, sizeof(FurnishingBigstuffProp), (char *)&FurnishingBigstuffProps},
|
||||
{NUM_ONTHEWALL_BIGSTUFF, sizeof(OnthewallBigstuffProp), (char *)&OnthewallBigstuffProps},
|
||||
{NUM_LIGHT_BIGSTUFF, sizeof(LightBigstuffProp), (char *)&LightBigstuffProps},
|
||||
{NUM_LABGEAR_BIGSTUFF, sizeof(LabgearBigstuffProp), (char *)&LabgearBigstuffProps},
|
||||
{NUM_TECHNO_BIGSTUFF, sizeof(TechnoBigstuffProp), (char *)&TechnoBigstuffProps},
|
||||
{NUM_DECOR_BIGSTUFF, sizeof(DecorBigstuffProp), (char *)&DecorBigstuffProps},
|
||||
{NUM_TERRAIN_BIGSTUFF, sizeof(TerrainBigstuffProp), (char *)&TerrainBigstuffProps},
|
||||
{NUM_USELESS_SMALLSTUFF, sizeof(UselessSmallstuffProp), (char *)&UselessSmallstuffProps},
|
||||
{NUM_BROKEN_SMALLSTUFF, sizeof(BrokenSmallstuffProp), (char *)&BrokenSmallstuffProps},
|
||||
{NUM_CORPSELIKE_SMALLSTUFF, sizeof(CorpselikeSmallstuffProp), (char *)&CorpselikeSmallstuffProps},
|
||||
{NUM_GEAR_SMALLSTUFF, sizeof(GearSmallstuffProp), (char *)&GearSmallstuffProps},
|
||||
{NUM_CARDS_SMALLSTUFF, sizeof(CardsSmallstuffProp), (char *)&CardsSmallstuffProps},
|
||||
{NUM_CYBER_SMALLSTUFF, sizeof(CyberSmallstuffProp), (char *)&CyberSmallstuffProps},
|
||||
{NUM_ONTHEWALL_SMALLSTUFF, sizeof(OnthewallSmallstuffProp), (char *)&OnthewallSmallstuffProps},
|
||||
{NUM_PLOT_SMALLSTUFF, sizeof(PlotSmallstuffProp), (char *)&PlotSmallstuffProps},
|
||||
{NUM_CONTROL_FIXTURE, sizeof(ControlFixtureProp), (char *)&ControlFixtureProps},
|
||||
{NUM_RECEPTACLE_FIXTURE, sizeof(ReceptacleFixtureProp), (char *)&ReceptacleFixtureProps},
|
||||
{NUM_TERMINAL_FIXTURE, sizeof(TerminalFixtureProp), (char *)&TerminalFixtureProps},
|
||||
{NUM_PANEL_FIXTURE, sizeof(PanelFixtureProp), (char *)&PanelFixtureProps},
|
||||
{NUM_VENDING_FIXTURE, sizeof(VendingFixtureProp), (char *)&VendingFixtureProps},
|
||||
{NUM_CYBER_FIXTURE, sizeof(CyberFixtureProp), (char *)&CyberFixtureProps},
|
||||
{NUM_NORMAL_DOOR, sizeof(NormalDoorProp), (char *)&NormalDoorProps},
|
||||
{NUM_DOORWAYS_DOOR, sizeof(DoorwaysDoorProp), (char *)&DoorwaysDoorProps},
|
||||
{NUM_FORCE_DOOR, sizeof(ForceDoorProp), (char *)&ForceDoorProps},
|
||||
{NUM_ELEVATOR_DOOR, sizeof(ElevatorDoorProp), (char *)&ElevatorDoorProps},
|
||||
{NUM_SPECIAL_DOOR, sizeof(SpecialDoorProp), (char *)&SpecialDoorProps},
|
||||
{NUM_OBJECT_ANIMATING, sizeof(ObjectsAnimatingProp), (char *)&ObjectsAnimatingProps},
|
||||
{NUM_TRANSITORY_ANIMATING, sizeof(TransitoryAnimatingProp), (char *)&TransitoryAnimatingProps},
|
||||
{NUM_EXPLOSION_ANIMATING, sizeof(ExplosionAnimatingProp), (char *)&ExplosionAnimatingProps},
|
||||
{NUM_TRIGGER_TRAP, sizeof(TriggerTrapProp), (char *)&TriggerTrapProps},
|
||||
{NUM_FEEDBACKS_TRAP, sizeof(FeedbacksTrapProp), (char *)&FeedbacksTrapProps},
|
||||
{NUM_SECRET_TRAP, sizeof(SecretTrapProp), (char *)&SecretTrapProps},
|
||||
{NUM_ACTUAL_CONTAINER, sizeof(ActualContainerProp), (char *)&ActualContainerProps},
|
||||
{NUM_WASTE_CONTAINER, sizeof(WasteContainerProp), (char *)&WasteContainerProps},
|
||||
{NUM_LIQUID_CONTAINER, sizeof(LiquidContainerProp), (char *)&LiquidContainerProps},
|
||||
{NUM_MUTANT_CORPSE_CONTAINER, sizeof(MutantCorpseContainerProp), (char *)&MutantCorpseContainerProps},
|
||||
{NUM_ROBOT_CORPSE_CONTAINER, sizeof(RobotCorpseContainerProp), (char *)&RobotCorpseContainerProps},
|
||||
{NUM_CYBORG_CORPSE_CONTAINER, sizeof(CyborgCorpseContainerProp), (char *)&CyborgCorpseContainerProps},
|
||||
{NUM_OTHER_CORPSE_CONTAINER, sizeof(OtherCorpseContainerProp), (char *)&OtherCorpseContainerProps},
|
||||
{NUM_MUTANT_CRITTER, sizeof(MutantCritterProp), (char *)&MutantCritterProps},
|
||||
{NUM_ROBOT_CRITTER, sizeof(RobotCritterProp), (char *)&RobotCritterProps},
|
||||
{NUM_CYBORG_CRITTER, sizeof(CyborgCritterProp), (char *)&CyborgCritterProps},
|
||||
{NUM_CYBER_CRITTER, sizeof(CyberCritterProp), (char *)&CyberCritterProps},
|
||||
{NUM_ROBOBABE_CRITTER, sizeof(RobobabeCritterProp), (char *)&RobobabeCritterProps},
|
||||
};
|
||||
|
||||
////////////////////////////// APPLICATION-SPECIFIC FUNCTIONS
|
||||
|
||||
static int map_x, map_y;
|
||||
|
||||
void ObjInfoInit(ObjInfo *info) {
|
||||
info->type = 0;
|
||||
info->ph = -1;
|
||||
}
|
||||
|
||||
void ObjRefStateBinIteratorInit(void) { map_x = map_y = 0; }
|
||||
|
||||
uchar ObjRefStateBinIterator(ObjRefStateBin *bin) {
|
||||
if (map_y == MAP_YSIZE)
|
||||
return FALSE;
|
||||
bin->sq.x = map_x;
|
||||
bin->sq.y = map_y;
|
||||
if (++map_x == MAP_XSIZE) {
|
||||
map_x = 0;
|
||||
map_y++;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
Reference in New Issue
Block a user