diff --git a/common.mk b/common.mk index 8cf5c6f..6865ceb 100644 --- a/common.mk +++ b/common.mk @@ -50,8 +50,11 @@ $(OUT)/%.o: %.c %.h $(DEPS) $(CC) $(CFLAGS) $(CXXFLAGS) -c -o $@ $< %.mo: %.po +ifneq ($(shell uname), AmigaOS) msgfmt -c -o $@ $< +endif # cleaning everything that can be automatically recreated with "make". clean: $(RM) $(OBJS) $(PROG) $(LOCALE_MO) + diff --git a/makefile.os4 b/makefile.os4 new file mode 100644 index 0000000..478a25f --- /dev/null +++ b/makefile.os4 @@ -0,0 +1,78 @@ +PROG = tbftss +CC = gcc-11 +PREFIX ?= /usr +BIN_DIR ?= $(PREFIX)/bin +DATA_DIR ?= data +LOCALE_DIR = locale +ICON_DIR = $(PREFIX)/share/icons/hicolor +DESKTOP_DIR = $(PREFIX)/share/applications + +DESTDIR ?= +INST_BIN_DIR = $(DESTDIR)$(BIN_DIR) +INST_DATA_DIR = $(DESTDIR)$(DATA_DIR) +INST_LOCALE_DIR = $(DESTDIR)$(LOCALE_DIR) +INST_ICON_DIR = $(DESTDIR)$(ICON_DIR) +INST_DESKTOP_DIR = $(DESTDIR)$(DESKTOP_DIR) + +SEARCHPATH += src/plat/os4 +_OBJS += os4Init.o + +include common.mk + +CXXFLAGS += -DVERSION=$(VERSION) -DREVISION=$(REVISION) -DDATA_DIR=\"$(DATA_DIR)\" -DLOCALE_DIR=\"$(LOCALE_DIR)\" -D__USE_INLINE__ +CXXFLAGS += -pedantic +CXXFLAGS += -g -lefence +CXXFLAGS += -Wall -Wempty-body -Werror -Wstrict-prototypes -Werror=maybe-uninitialized -Warray-bounds +# CXXFLAGS += -gstabs + +LDFLAGS += -lauto -lSDL2_image -lSDL2_ttf -lft2 -ltiff -lwebp -lpng -ljpeg -lz -lm +LDFLAGS += -lSDL2_mixer -lmikmod -lmodplug -lFLAC -lsmpeg2 -lvorbisfile -lvorbis -logg +LDFLAGS += -lSDL2 -lpthread -athread=native -lstdc++ +# LDFLAGS += -gstabs + +# linking the program. +$(PROG): $(OBJS) + $(CC) -o $@ $(OBJS) $(LDFLAGS) + +install: + mkdir -p $(INST_BIN_DIR) + install -m 0755 $(PROG) $(INST_BIN_DIR) + mkdir -p $(INST_DATA_DIR) + cp -r data $(INST_DATA_DIR) + cp -r gfx $(INST_DATA_DIR) + cp -r manual $(INST_DATA_DIR) + cp -r music $(INST_DATA_DIR) + cp -r sound $(INST_DATA_DIR) + mkdir -p $(INST_ICON_DIR)/16x16/apps + mkdir -p $(INST_ICON_DIR)/32x32/apps + mkdir -p $(INST_ICON_DIR)/64x64/apps + mkdir -p $(INST_ICON_DIR)/128x128/apps + cp -p icons/$(PROG)-16x16.png $(INST_ICON_DIR)/16x16/apps/$(PROG).png + cp -p icons/$(PROG)-32x32.png $(INST_ICON_DIR)/32x32/apps/$(PROG).png + cp -p icons/$(PROG)-64x64.png $(INST_ICON_DIR)/64x64/apps/$(PROG).png + cp -p icons/$(PROG)-128x128.png $(INST_ICON_DIR)/128x128/apps/$(PROG).png + mkdir -p $(INST_DESKTOP_DIR) + cp -p icons/$(PROG).desktop $(INST_DESKTOP_DIR) + + @for f in $(LOCALE_MO); do \ + lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \ + mkdir -p $(INST_LOCALE_DIR)/$$lang/LC_MESSAGES; \ + cp -v $$f $(INST_LOCALE_DIR)/$$lang/LC_MESSAGES/$(PROG).mo; \ + done + +uninstall: + $(RM) $(BIN_DIR)/$(PROG) + $(RM) -rf $(DATA_DIR) + $(RM) $(ICON_DIR)/16x16/apps/$(PROG).png + $(RM) $(ICON_DIR)/32x32/apps/$(PROG).png + $(RM) $(ICON_DIR)/64x64/apps/$(PROG).png + $(RM) $(ICON_DIR)/128x128/apps/$(PROG).png + $(RM) $(DESKTOP_DIR)/$(PROG).desktop + + @for f in $(LOCALE_MO); do \ + lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \ + $(RM) -v $(LOCALE_DIR)/$$lang/LC_MESSAGES/$(PROG).mo; \ + done + +.PHONY: dist + diff --git a/src/game/trophies.c b/src/game/trophies.c index 0e802e0..34200bd 100644 --- a/src/game/trophies.c +++ b/src/game/trophies.c @@ -426,7 +426,7 @@ void awardStatsTrophies(void) void awardCampaignTrophies(void) { - char trophyId[MAX_NAME_LENGTH]; + char trophyId[MAX_NAME_LENGTH * 2]; char name[MAX_NAME_LENGTH]; int i, len; StarSystem *starSystem; @@ -533,3 +533,4 @@ static void setSparkleColor(Trophy *t) break; } } + diff --git a/src/plat/os4/os4Init.c b/src/plat/os4/os4Init.c new file mode 100644 index 0000000..c05ede2 --- /dev/null +++ b/src/plat/os4/os4Init.c @@ -0,0 +1,101 @@ +/* +Copyright (C) 2015-2019,2022 Parallel Realities + +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 2 +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, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include +#include +#include +#include + +#include +#include + +#include "../../common.h" + +#include "os4Init.h" + +#define VSTRING "tbftss 1.5.1r1 (13.08.2022)" +#define VERSTAG "\0$VER: " VSTRING +static CONST_STRPTR stack USED = "$STACK:102400"; +static CONST_STRPTR version USED = VERSTAG; + +extern App app; +extern Dev dev; + +void createSaveFolder(void) +{ + // char *dir; + // int i; + + BPTR savesPathLock = Lock("PROGDIR:saves", SHARED_LOCK); + if (!savesPathLock) + { + SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Saves folder not found. I am going to create it."); + // mkpath("PROGDIR:saves"); + if (mkdir("PROGDIR:saves", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0 && errno != EEXIST) + { + SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "Failed to create save dir."); + return; + } + } + else { + UnLock(savesPathLock); + } + + // for (i = 0 ; i < MAX_SAVE_SLOTS ; i++) + // { + // dir = buildFormattedString("saves/%d", i); + + // mkpath(dir); + + // free(dir); + // } + // app.saveDir = "saves"; + STRNCPY(app.saveDir, "saves", MAX_FILENAME_LENGTH); + + // char *userHome; + // char dir[MAX_FILENAME_LENGTH]; + + // userHome = getenv("HOME"); + + // if (!userHome) + // { + // SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "Unable to determine user save folder. Will save to current dir."); + // return; + // } + + // SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "User home = %s", userHome); + + // sprintf(dir, "%s/.local/share/tbftss", userHome); + // if (mkdir(dir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0 && errno != EEXIST) + // { + // SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "Failed to create save dir '%s'. Will save to current dir.", dir); + // return; + // } + + // STRNCPY(app.saveDir, dir, MAX_FILENAME_LENGTH); +} + +void createScreenshotFolder(void) +{ + mkdir("/tmp/tbftss", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + + dev.screenshotFolder = "/tmp/tbftss"; +} + diff --git a/src/plat/os4/os4Init.h b/src/plat/os4/os4Init.h new file mode 100755 index 0000000..19aa6a9 --- /dev/null +++ b/src/plat/os4/os4Init.h @@ -0,0 +1,22 @@ +/* +Copyright (C) 2015-2019,2022 Parallel Realities + +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 2 +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, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +void createScreenshotFolder(void); +void createSaveFolder(void);