experiments
This commit is contained in:
@@ -7,8 +7,19 @@ set(CMAKE_C_STANDARD 23)
|
|||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(SDL2 REQUIRED sdl2)
|
pkg_check_modules(SDL2 REQUIRED sdl2)
|
||||||
|
|
||||||
|
# Allow setting the target platform manually
|
||||||
|
if (NOT DEFINED TARGET_PLATFORM)
|
||||||
|
if (WIN32)
|
||||||
|
set(TARGET_PLATFORM windows)
|
||||||
|
elseif (UNIX)
|
||||||
|
set(TARGET_PLATFORM linux)
|
||||||
|
else ()
|
||||||
|
message(FATAL_ERROR "Unsupported platform. Please set TARGET_PLATFORM manually.")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
add_executable(factorygame
|
|
||||||
|
set(SOURCE_FILES
|
||||||
tiles/tile.c
|
tiles/tile.c
|
||||||
tiles/tile.h
|
tiles/tile.h
|
||||||
util/font.c
|
util/font.c
|
||||||
@@ -36,6 +47,43 @@ add_executable(factorygame
|
|||||||
tiles/miner.h
|
tiles/miner.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_executable(factorygame ${SOURCE_FILES})
|
||||||
|
|
||||||
|
|
||||||
|
message(STATUS "Target platform: ${TARGET_PLATFORM}")
|
||||||
|
|
||||||
|
# Detect build type and configure SDL2 paths accordingly
|
||||||
|
if (TARGET_PLATFORM STREQUAL "windows")
|
||||||
|
find_package(SDL2 REQUIRED)
|
||||||
|
find_package(SDL2_ttf REQUIRED)
|
||||||
|
include_directories(${SDL2_INCLUDE_DIRS})
|
||||||
|
link_directories(${SDL2_LIBRARY_DIRS})
|
||||||
|
add_definitions(${SDL2_CFLAGS_OTHER})
|
||||||
|
|
||||||
|
elseif (TARGET_PLATFORM STREQUAL "mingw")
|
||||||
|
# Cross-compile dynamically linked Windows build
|
||||||
|
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
||||||
|
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
||||||
|
find_package(SDL2 REQUIRED)
|
||||||
|
find_package(SDL2_ttf REQUIRED)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
|
||||||
|
target_link_libraries(factorygame mingw32 SDL2main SDL2 SDL2_ttf SDL2_image m)
|
||||||
|
include_directories(${SDL2_INCLUDE_DIRS})
|
||||||
|
link_directories(${SDL2_LIBRARY_DIRS})
|
||||||
|
add_definitions(${SDL2_CFLAGS_OTHER})
|
||||||
|
|
||||||
|
elseif (TARGET_PLATFORM STREQUAL "linux")
|
||||||
|
pkg_check_modules(SDL2 REQUIRED sdl2)
|
||||||
|
pkg_check_modules(SDL2_TTF REQUIRED SDL2_ttf)
|
||||||
|
pkg_check_modules(SDL2_IMAGE REQUIRED SDL2_image)
|
||||||
|
target_link_libraries(factorygame SDL2 SDL2_ttf SDL2_image m)
|
||||||
|
include_directories(${SDL2_INCLUDE_DIRS})
|
||||||
|
add_definitions(${SDL2_CFLAGS_OTHER})
|
||||||
|
|
||||||
|
else ()
|
||||||
|
message(FATAL_ERROR "Unsupported TARGET_PLATFORM: ${TARGET_PLATFORM}")
|
||||||
|
endif ()
|
||||||
|
|
||||||
# Define the path to the assets folder
|
# Define the path to the assets folder
|
||||||
set(ASSETS_SOURCE_DIR "${CMAKE_SOURCE_DIR}/assets")
|
set(ASSETS_SOURCE_DIR "${CMAKE_SOURCE_DIR}/assets")
|
||||||
set(ASSETS_BINARY_DIR "${CMAKE_BINARY_DIR}/assets")
|
set(ASSETS_BINARY_DIR "${CMAKE_BINARY_DIR}/assets")
|
||||||
@@ -49,6 +97,3 @@ add_custom_target(copy_assets ALL
|
|||||||
|
|
||||||
# Make sure factorygame depends on the assets being copied
|
# Make sure factorygame depends on the assets being copied
|
||||||
add_dependencies(factorygame copy_assets)
|
add_dependencies(factorygame copy_assets)
|
||||||
|
|
||||||
|
|
||||||
target_link_libraries(factorygame SDL2 SDL2_ttf SDL2_image m)
|
|
@@ -113,11 +113,11 @@ void initPlayer(Player *plr) {
|
|||||||
plr->rect.h = TILE_SIZE;
|
plr->rect.h = TILE_SIZE;
|
||||||
|
|
||||||
for (ItemType ui = 1; ui < tileTypeIndex; ui++) {
|
for (ItemType ui = 1; ui < tileTypeIndex; ui++) {
|
||||||
plr->inventory.slotCounts[ui] = 65535;
|
plr->inventory.slotCounts[ui] = 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ItemType ui = ITEMREGISTRY_SIZE / 2; ui < itemRegistryIndex; ui++) {
|
for (ItemType ui = ITEMREGISTRY_SIZE / 2; ui < itemRegistryIndex; ui++) {
|
||||||
plr->inventory.slotCounts[ui] = 65535;
|
plr->inventory.slotCounts[ui] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
hudTexture = SDL_CreateTexture(mainRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, screenRect.w,
|
hudTexture = SDL_CreateTexture(mainRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, screenRect.w,
|
||||||
|
@@ -35,9 +35,7 @@ void updateFurnace(Tile *tile) {
|
|||||||
audioData.synthVoices[tile->audioCh].frequency = 200;
|
audioData.synthVoices[tile->audioCh].frequency = 200;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tile->audioCh < NUM_SYNTH_VOICES) {
|
++audioData.synthVoices[tile->audioCh].frequency;
|
||||||
printf("frq: %d\n", ++audioData.synthVoices[tile->audioCh].frequency);
|
|
||||||
}
|
|
||||||
if (audioData.synthVoices[tile->audioCh].volume < 255) {
|
if (audioData.synthVoices[tile->audioCh].volume < 255) {
|
||||||
audioData.synthVoices[tile->audioCh].volume++;
|
audioData.synthVoices[tile->audioCh].volume++;
|
||||||
}
|
}
|
||||||
|
10
util/audio.c
10
util/audio.c
@@ -58,8 +58,8 @@ void audio_callback(void *userdata, Uint8 *stream, int len) {
|
|||||||
|
|
||||||
MidiEvent *ev = &midiEvents[midiChannel][nextMidiEvent[midiChannel]];
|
MidiEvent *ev = &midiEvents[midiChannel][nextMidiEvent[midiChannel]];
|
||||||
|
|
||||||
printf("Event at %f, %s, note: %d, velocity: %d\n", ev->timeSec, ev->type == MIDI_NOTE_ON ? "ON" : "OFF",
|
// printf("Event at %f, %s, note: %d, velocity: %d\n", ev->timeSec, ev->type == MIDI_NOTE_ON ? "ON" : "OFF",
|
||||||
ev->note, ev->velocity);
|
// ev->note, ev->velocity);
|
||||||
|
|
||||||
uint16_t freq = (uint16_t)(440.0f * powf(2.0f, (ev->note - 69) / 12.0f));
|
uint16_t freq = (uint16_t)(440.0f * powf(2.0f, (ev->note - 69) / 12.0f));
|
||||||
uint8_t midiVoiceIndex = NUM_SYNTH_VOICES - midiChannel - 1;
|
uint8_t midiVoiceIndex = NUM_SYNTH_VOICES - midiChannel - 1;
|
||||||
@@ -69,12 +69,12 @@ void audio_callback(void *userdata, Uint8 *stream, int len) {
|
|||||||
v->frequency = freq;
|
v->frequency = freq;
|
||||||
v->volume = ev->velocity * 2;
|
v->volume = ev->velocity * 2;
|
||||||
v->smoothedAmp = 0;
|
v->smoothedAmp = 0;
|
||||||
printf("Playing voice %d at freq %d hz, volume %d\n", midiVoiceIndex, v->frequency,
|
// printf("Playing voice %d at freq %d hz, volume %d\n", midiVoiceIndex, v->frequency,
|
||||||
v->volume);
|
// v->volume);
|
||||||
} else if (ev->type == MIDI_NOTE_OFF || ev->velocity == 0) {
|
} else if (ev->type == MIDI_NOTE_OFF || ev->velocity == 0) {
|
||||||
// Note Off
|
// Note Off
|
||||||
v->volume = 0;
|
v->volume = 0;
|
||||||
printf("Stopping voice %d at freq %d hz, volume %d\n", midiVoiceIndex, v->frequency, v->volume);
|
// printf("Stopping voice %d at freq %d hz, volume %d\n", midiVoiceIndex, v->frequency, v->volume);
|
||||||
} else if ((ev->type & 0xF0) == MIDI_PROGRAM_CHANGE) {
|
} else if ((ev->type & 0xF0) == MIDI_PROGRAM_CHANGE) {
|
||||||
if (ev->note == 0) {
|
if (ev->note == 0) {
|
||||||
v->waveform = resolvePatch(ev->note);
|
v->waveform = resolvePatch(ev->note);
|
||||||
|
Reference in New Issue
Block a user