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,107 @@
|
||||
/*
|
||||
|
||||
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/>.
|
||||
|
||||
*/
|
||||
/*
|
||||
* $Source: r:/prj/cit/src/RCS/gametime.c $
|
||||
* $Revision: 1.16 $
|
||||
* $Author: minman $
|
||||
* $Date: 1994/09/11 07:42:01 $
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "gametime.h"
|
||||
#include "faketime.h"
|
||||
#include "player.h"
|
||||
#include "schedule.h"
|
||||
#include "drugs.h"
|
||||
#include "lvldata.h"
|
||||
#include "dirac.h"
|
||||
#include "framer8.h"
|
||||
|
||||
ulong last_real_time = 0;
|
||||
char reflex_remainder = 0;
|
||||
|
||||
long gNewShockTicks; // whyyyyyy
|
||||
|
||||
#define MAX_DELTAT (CIT_CYCLE / MIN_FRAME_RATE)
|
||||
#define MIN_DELTAT (CIT_CYCLE / MAX_FRAME_RATE)
|
||||
|
||||
errtype update_state(uchar time_running) {
|
||||
uchar update = TRUE;
|
||||
if (time_running) {
|
||||
ulong deltat;
|
||||
if (player_struct.drug_status[DRUG_REFLEX] > 0 && !global_fullmap->cyber) {
|
||||
// So we effectively downshift deltat by 2 to divide by 4
|
||||
// we keep the remainder around so that we don't screw up the universe badly
|
||||
deltat = *tmd_ticks + reflex_remainder - last_real_time;
|
||||
reflex_remainder = deltat & 0x3;
|
||||
deltat = deltat >> 2;
|
||||
} else
|
||||
deltat = *tmd_ticks - last_real_time;
|
||||
|
||||
if (deltat > MAX_DELTAT)
|
||||
deltat = MAX_DELTAT;
|
||||
if (deltat < MIN_DELTAT) {
|
||||
deltat = 0;
|
||||
update = FALSE;
|
||||
}
|
||||
|
||||
// update game time.
|
||||
player_struct.deltat = deltat;
|
||||
player_struct.game_time += deltat;
|
||||
}
|
||||
if (update)
|
||||
last_real_time = *tmd_ticks;
|
||||
|
||||
run_schedules();
|
||||
|
||||
return (OK);
|
||||
}
|
||||
|
||||
// static ulong time_at_suspend = 0;
|
||||
|
||||
void suspend_game_time(void) {
|
||||
// if (time_at_suspend == 0)
|
||||
// time_at_suspend = *tmd_ticks;
|
||||
}
|
||||
|
||||
void resume_game_time(void) {
|
||||
// last_real_time += *tmd_ticks - time_at_suspend;
|
||||
last_real_time = *tmd_ticks;
|
||||
// time_at_suspend = 0;
|
||||
}
|
||||
|
||||
#define MAX_PHYSICS_RUNTIME fix_make(10, 0)
|
||||
|
||||
void update_level_gametime(void) {
|
||||
ulong oldtime = level_gamedata.exit_time;
|
||||
ulong deltat = player_struct.game_time - oldtime;
|
||||
run_schedules();
|
||||
// run ai's
|
||||
// KLC ai_time_passes(&deltat);
|
||||
// KLC ai_freeze_tag();
|
||||
// run physics
|
||||
if (global_fullmap->cyber) {
|
||||
EDMS_control_Dirac_frame(PLAYER_PHYSICS, 0, 0, 0, 0);
|
||||
} else {
|
||||
EDMS_control_pelvis(PLAYER_PHYSICS, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
EDMS_soliton_vector(lg_min(MAX_PHYSICS_RUNTIME, deltat / CIT_CYCLE));
|
||||
}
|
||||
Reference in New Issue
Block a user