mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-19 22:01:14 +00:00
Merge branch 'master' into android
This commit is contained in:
commit
7d0016e9a3
8
.github/workflows/ci.yml
vendored
8
.github/workflows/ci.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
|||||||
- { name: 'msys2 mingw32', os: 'windows-latest', generator: 'Ninja', dx5: false, config: false, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw32', msys-env: 'mingw-w64-i686', shell: 'msys2 {0}' }
|
- { name: 'msys2 mingw32', os: 'windows-latest', generator: 'Ninja', dx5: false, config: false, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw32', msys-env: 'mingw-w64-i686', shell: 'msys2 {0}' }
|
||||||
- { name: 'msys2 mingw64', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw64', msys-env: 'mingw-w64-x86_64', shell: 'msys2 {0}' }
|
- { name: 'msys2 mingw64', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw64', msys-env: 'mingw-w64-x86_64', shell: 'msys2 {0}' }
|
||||||
- { name: 'macOS', os: 'macos-latest', generator: 'Ninja', dx5: false, config: true, brew: true, werror: true, clang-tidy: false }
|
- { name: 'macOS', os: 'macos-latest', generator: 'Ninja', dx5: false, config: true, brew: true, werror: true, clang-tidy: false }
|
||||||
- { name: 'iOS', os: 'macos-15', generator: 'Xcode', dx5: false, config: false, brew: true, werror: true, clang-tidy: false, cmake-args: '-DCMAKE_SYSTEM_NAME=iOS' }
|
- { name: 'iOS', os: 'macos-15', generator: 'Xcode', dx5: false, config: false, brew: true, werror: true, clang-tidy: false, cmake-args: '-DCMAKE_SYSTEM_NAME=iOS', ios: true }
|
||||||
- { name: 'Emscripten', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, emsdk: true, werror: true, clang-tidy: false, cmake-wrapper: 'emcmake' }
|
- { name: 'Emscripten', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, emsdk: true, werror: true, clang-tidy: false, cmake-wrapper: 'emcmake' }
|
||||||
- { name: 'Nintendo 3DS', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, n3ds: true, werror: true, clang-tidy: false, container: 'devkitpro/devkitarm:latest', cmake-args: '-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake' }
|
- { name: 'Nintendo 3DS', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, n3ds: true, werror: true, clang-tidy: false, container: 'devkitpro/devkitarm:latest', cmake-args: '-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake' }
|
||||||
- { name: 'Xbox One', os: 'windows-latest', generator: 'Visual Studio 17 2022', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64', cmake-args: '-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0', xbox-one: true}
|
- { name: 'Xbox One', os: 'windows-latest', generator: 'Visual Studio 17 2022', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64', cmake-args: '-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0', xbox-one: true}
|
||||||
@ -96,6 +96,12 @@ jobs:
|
|||||||
brew update
|
brew update
|
||||||
brew install cmake ninja llvm qt6
|
brew install cmake ninja llvm qt6
|
||||||
echo "LLVM_ROOT=$(brew --prefix llvm)/bin" >> $GITHUB_ENV
|
echo "LLVM_ROOT=$(brew --prefix llvm)/bin" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Use latest Xcode
|
||||||
|
if: ${{ matrix.ios }}
|
||||||
|
uses: maxim-lobanov/setup-xcode@v1.6.0
|
||||||
|
with:
|
||||||
|
xcode-version: latest-stable
|
||||||
|
|
||||||
- name: Setup Emscripten
|
- name: Setup Emscripten
|
||||||
uses: mymindstorm/setup-emsdk@master
|
uses: mymindstorm/setup-emsdk@master
|
||||||
|
|||||||
@ -7,12 +7,9 @@
|
|||||||
DECOMP_SIZE_ASSERT(CDialog, 0x60)
|
DECOMP_SIZE_ASSERT(CDialog, 0x60)
|
||||||
DECOMP_SIZE_ASSERT(CAboutDialog, 0x60)
|
DECOMP_SIZE_ASSERT(CAboutDialog, 0x60)
|
||||||
|
|
||||||
// FIXME: disable dialog resizing
|
|
||||||
|
|
||||||
// FUNCTION: CONFIG 0x00403c20
|
// FUNCTION: CONFIG 0x00403c20
|
||||||
CAboutDialog::CAboutDialog() : QDialog()
|
CAboutDialog::CAboutDialog() : QDialog()
|
||||||
{
|
{
|
||||||
m_ui = new Ui::AboutDialog;
|
m_ui = new Ui::AboutDialog;
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
layout()->setSizeConstraint(QLayout::SetFixedSize);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -505,14 +505,15 @@ void CMainDialog::SelectDataPathDialog()
|
|||||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
||||||
);
|
);
|
||||||
|
|
||||||
QDir data_dir = QDir(data_path);
|
if (!data_path.isEmpty()) {
|
||||||
|
QDir data_dir = QDir(data_path);
|
||||||
if (data_dir.exists()) {
|
if (data_dir.exists()) {
|
||||||
currentConfigApp->m_cd_path = data_dir.absolutePath().toStdString();
|
currentConfigApp->m_cd_path = data_dir.absolutePath().toStdString();
|
||||||
data_dir.cd(QString("DATA"));
|
data_dir.cd(QString("DATA"));
|
||||||
data_dir.cd(QString("disk"));
|
data_dir.cd(QString("disk"));
|
||||||
currentConfigApp->m_base_path = data_dir.absolutePath().toStdString();
|
currentConfigApp->m_base_path = data_dir.absolutePath().toStdString();
|
||||||
m_modified = true;
|
m_modified = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
UpdateInterface();
|
UpdateInterface();
|
||||||
}
|
}
|
||||||
@ -527,11 +528,12 @@ void CMainDialog::SelectSavePathDialog()
|
|||||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
||||||
);
|
);
|
||||||
|
|
||||||
QDir save_dir = QDir(save_path);
|
if (!save_path.isEmpty()) {
|
||||||
|
QDir save_dir = QDir(save_path);
|
||||||
if (save_dir.exists()) {
|
if (save_dir.exists()) {
|
||||||
currentConfigApp->m_save_path = save_dir.absolutePath().toStdString();
|
currentConfigApp->m_save_path = save_dir.absolutePath().toStdString();
|
||||||
m_modified = true;
|
m_modified = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
UpdateInterface();
|
UpdateInterface();
|
||||||
}
|
}
|
||||||
@ -547,13 +549,11 @@ void CMainDialog::DataPathEdited()
|
|||||||
currentConfigApp->m_base_path = data_dir.absolutePath().toStdString();
|
currentConfigApp->m_base_path = data_dir.absolutePath().toStdString();
|
||||||
m_modified = true;
|
m_modified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateInterface();
|
UpdateInterface();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainDialog::SavePathEdited()
|
void CMainDialog::SavePathEdited()
|
||||||
{
|
{
|
||||||
|
|
||||||
QDir save_dir = QDir(m_ui->savePath->text());
|
QDir save_dir = QDir(m_ui->savePath->text());
|
||||||
|
|
||||||
if (save_dir.exists()) {
|
if (save_dir.exists()) {
|
||||||
@ -606,7 +606,7 @@ void CMainDialog::SelectTexturePathDialog()
|
|||||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
|
||||||
);
|
);
|
||||||
|
|
||||||
if (data_path.exists(texture_path)) {
|
if (!texture_path.isEmpty() && data_path.exists(texture_path)) {
|
||||||
texture_path = data_path.relativeFilePath(texture_path);
|
texture_path = data_path.relativeFilePath(texture_path);
|
||||||
texture_path.prepend(QDir::separator());
|
texture_path.prepend(QDir::separator());
|
||||||
currentConfigApp->m_texture_path = texture_path.toStdString();
|
currentConfigApp->m_texture_path = texture_path.toStdString();
|
||||||
@ -623,7 +623,7 @@ void CMainDialog::TexturePathEdited()
|
|||||||
if (texture_path.startsWith(QDir::separator())) {
|
if (texture_path.startsWith(QDir::separator())) {
|
||||||
texture_path.remove(0, 1);
|
texture_path.remove(0, 1);
|
||||||
}
|
}
|
||||||
if (data_path.exists(texture_path)) {
|
if (data_path.exists(data_path.absoluteFilePath(texture_path))) {
|
||||||
texture_path = data_path.relativeFilePath(texture_path);
|
texture_path = data_path.relativeFilePath(texture_path);
|
||||||
texture_path.prepend(QDir::separator());
|
texture_path.prepend(QDir::separator());
|
||||||
currentConfigApp->m_texture_path = texture_path.toStdString();
|
currentConfigApp->m_texture_path = texture_path.toStdString();
|
||||||
|
|||||||
@ -14,6 +14,9 @@
|
|||||||
<string>About Configure LEGO© Island</string>
|
<string>About Configure LEGO© Island</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0">
|
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0">
|
||||||
|
<property name="sizeConstraint">
|
||||||
|
<enum>QLayout::SizeConstraint::SetFixedSize</enum>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="houseIcon">
|
<widget class="QLabel" name="houseIcon">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -36,14 +39,14 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="configureLabel">
|
<widget class="QLabel" name="configureLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Configure LEGO Island Version 1.0</string>
|
<string>Configure LEGO Island Version 2.0</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="copyrightLabel">
|
<widget class="QLabel" name="copyrightLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Copyright © 1997 mindscape</string>
|
<string>Copyright © 2025</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -53,7 +56,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::StandardButton::Ok</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@ -1405,12 +1405,12 @@ SDL_AppResult IsleApp::ParseArguments(int argc, char** argv)
|
|||||||
consumed = 1;
|
consumed = 1;
|
||||||
}
|
}
|
||||||
else if (strcmp(argv[i], "--help") == 0) {
|
else if (strcmp(argv[i], "--help") == 0) {
|
||||||
DisplayArgumentHelp();
|
DisplayArgumentHelp(argv[0]);
|
||||||
return SDL_APP_SUCCESS;
|
return SDL_APP_SUCCESS;
|
||||||
}
|
}
|
||||||
if (consumed <= 0) {
|
if (consumed <= 0) {
|
||||||
SDL_Log("Invalid argument(s): %s", argv[i]);
|
SDL_Log("Invalid argument(s): %s", argv[i]);
|
||||||
DisplayArgumentHelp();
|
DisplayArgumentHelp(argv[0]);
|
||||||
return SDL_APP_FAILURE;
|
return SDL_APP_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1418,9 +1418,9 @@ SDL_AppResult IsleApp::ParseArguments(int argc, char** argv)
|
|||||||
return SDL_APP_CONTINUE;
|
return SDL_APP_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IsleApp::DisplayArgumentHelp()
|
void IsleApp::DisplayArgumentHelp(const char* p_execName)
|
||||||
{
|
{
|
||||||
SDL_Log("Usage: isle [options]");
|
SDL_Log("Usage: %s [options]", p_execName);
|
||||||
SDL_Log("Options:");
|
SDL_Log("Options:");
|
||||||
SDL_Log(" --ini <path> Set custom path to .ini config");
|
SDL_Log(" --ini <path> Set custom path to .ini config");
|
||||||
#ifdef ISLE_DEBUG
|
#ifdef ISLE_DEBUG
|
||||||
|
|||||||
@ -99,7 +99,7 @@ class IsleApp {
|
|||||||
const CursorBitmap* m_cursorCurrentBitmap;
|
const CursorBitmap* m_cursorCurrentBitmap;
|
||||||
char* m_mediaPath;
|
char* m_mediaPath;
|
||||||
MxFloat m_cursorSensitivity;
|
MxFloat m_cursorSensitivity;
|
||||||
void DisplayArgumentHelp();
|
void DisplayArgumentHelp(const char* p_execName);
|
||||||
|
|
||||||
char* m_iniPath;
|
char* m_iniPath;
|
||||||
MxFloat m_maxLod;
|
MxFloat m_maxLod;
|
||||||
|
|||||||
@ -68,10 +68,10 @@ class DebugViewer {
|
|||||||
static void InsideBuildingManager()
|
static void InsideBuildingManager()
|
||||||
{
|
{
|
||||||
auto buildingManager = Lego()->GetBuildingManager();
|
auto buildingManager = Lego()->GetBuildingManager();
|
||||||
ImGui::Text("nextVariant: %d", buildingManager->m_nextVariant);
|
ImGui::Text("nextVariant: %u", buildingManager->m_nextVariant);
|
||||||
ImGui::Text("m_boundariesDetermined: %d", buildingManager->m_boundariesDetermined);
|
ImGui::Text("m_boundariesDetermined: %d", buildingManager->m_boundariesDetermined);
|
||||||
ImGui::Text("m_hideAfterAnimation: %d", buildingManager->m_hideAfterAnimation);
|
ImGui::Text("m_hideAfterAnimation: %d", buildingManager->m_hideAfterAnimation);
|
||||||
ImGui::Text("#Animated Entries", buildingManager->m_numEntries);
|
ImGui::Text("#Animated Entries: %d", buildingManager->m_numEntries);
|
||||||
if (buildingManager->m_numEntries) {
|
if (buildingManager->m_numEntries) {
|
||||||
if (ImGui::BeginTable("Animated Entries", 6, ImGuiTableFlags_Borders)) {
|
if (ImGui::BeginTable("Animated Entries", 6, ImGuiTableFlags_Borders)) {
|
||||||
ImGui::TableSetupColumn("ROI Name");
|
ImGui::TableSetupColumn("ROI Name");
|
||||||
|
|||||||
@ -15,7 +15,7 @@ if(ISLE_BUILD_APP)
|
|||||||
"${CMAKE_CURRENT_BINARY_DIR}/isle/Info.plist"
|
"${CMAKE_CURRENT_BINARY_DIR}/isle/Info.plist"
|
||||||
@ONLY
|
@ONLY
|
||||||
)
|
)
|
||||||
set(RESOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/isle/LaunchScreen.storyboard" "${CMAKE_CURRENT_SOURCE_DIR}/isle/Assets.xcassets")
|
set(RESOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/isle/Assets.xcassets")
|
||||||
target_sources(${ISLE_TARGET_NAME} PRIVATE ${RESOURCE_FILES})
|
target_sources(${ISLE_TARGET_NAME} PRIVATE ${RESOURCE_FILES})
|
||||||
set_source_files_properties(${RESOURCE_FILES}
|
set_source_files_properties(${RESOURCE_FILES}
|
||||||
TARGET_DIRECTORY isle
|
TARGET_DIRECTORY isle
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>@MACOSX_BUNDLE_BUNDLE_VERSION@</string>
|
<string>@MACOSX_BUNDLE_BUNDLE_VERSION@</string>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string/>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>CSResourcesFileMapped</key>
|
<key>CSResourcesFileMapped</key>
|
||||||
|
|||||||
@ -1,48 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="24093.7" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
|
||||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
|
||||||
<dependencies>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24053.1"/>
|
|
||||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--View Controller-->
|
|
||||||
<scene sceneID="EHf-IW-A2E">
|
|
||||||
<objects>
|
|
||||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
|
||||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
|
|
||||||
<rect key="frame" x="0.0" y="832" width="393" height="0.0"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
||||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
|
||||||
<rect key="frame" x="0.0" y="285" width="393" height="0.0"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
|
||||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
|
||||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
|
||||||
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
|
|
||||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
|
||||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="53" y="375"/>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
</document>
|
|
||||||
Loading…
Reference in New Issue
Block a user