Skip to content

Latest commit

 

History

History
106 lines (87 loc) · 5.22 KB

Project Structure.md

File metadata and controls

106 lines (87 loc) · 5.22 KB

Project Structure

The project structure is admittedly a little confusing and could be better.
Here's an overview:

Project root

📁 .
├── 📁 Docs                    ⇨ Documentation
│
├── 📁 Additional files        ⇨ Additional files that need to be copied to the bin folder.
├── 📁 Fo76ini
│   └── 📝 Fo76ini.sln         ⇨ Main solution. Open this.
├── 📁 Fo76ini_Updater
│   └── 📝 Fo76ini_Updater.sln ⇨ Solution for the auto-updater.
├── 📁 ObjectListView          ⇨ Extends the built-in ListView control. Used in the Mod Manager.
│
├── 📝 VERSION                 ⇨ Contains the current version.
├── 📝 What's new.md           ⇨ What's new? - Changelogs, etc.
├── 🐍 pack_tool.py            ⇨ Python script that is used to prepare and pack the release.
└── ...

Fo76ini solution

📁 ./Fo76ini
├── 📁 Controls                ⇨ Holds custom UserControls
├── 📁 Forms                   ⇨ Holds Forms and UserControls used in a specific Form
│   ├── 📁 FormMain            ⇨ The main form
│   │   └── 📁 Views           ⇨ All the views of the main form
│   ├── 📁 FormMods            ⇨ The "Mod Manager" form
│   ├── 📁 FormWelcome         ⇨ Form that opens when the tool is launched for the first time.
│   ├── 📁 FormExceptionDialog ⇨ Opened when an unhandled exception occures.
│   └── 📁 FormIniError        ⇨ Opened when the *.ini files can't be parsed.
│
├── 📁 API
│   ├── 📁 NexusMods           ⇨ Accessing the NexusMods API and storing data.
│   ├── 📁 GitHub              ⇨ Accessing the GitHub API.
│   └── 📁 BethesdaNet         ⇨ Accessing the Bethesda.net API: Primarily to retrieve the server status of Fallout 76.
│
├── 📁 Ini                     ⇨ Ini parsing and handling (load, change, save, etc.)
├── 📁 Interface               ⇨ Translation, theming, and other interface related code
├── 📁 Mods                    ⇨ Loading, saving, and manipulating mods.
├── 📁 Profiles                ⇨ Loading, saving, and editing profiles.
├── 📁 Properties              ⇨ Project settings and resources.resx
├── 📁 Resources               ⇨ Contains images, icons, fonts, text (html/rtf), etc.
├── 📁 Tweaks                  ⇨ *.ini tweaks (=game settings) sorted into subdirectories
├── 📁 Utilities               ⇨ Any class that can be used everywhere and doesn't have it's own place.
├── 📁 languages               ⇨ Translations that are downloaded by the tool through GitHub.
│
├── 📝 Configuration.cs        ⇨ Easily accessible Props for the tool's configuration.
├── 📝 Initialization.cs       ⇨ Init: Creating folders, reading configuration, etc.
├── 📝 Program.cs              ⇨ Program entry point (static void Main).
├── 📝 Shared.cs               ⇨ Containing constants, such as version, user agent, or URLs.
└── ...

Files downloaded by the tool

The tool downloads or requests information from GitHub's API for various reasons.

From GitHub master repository:

Checking for updates, "What's new", and translations:

📁 .
├── 📝 VERSION                 ⇨ Downloaded on startup to check for updates on versions prior to v1.12.4.
├── 📝 What's new.rtf          ⇨ Downloaded and displayed on versions prior to v1.11.
│
└── 📁 Fo76ini
    └── 📁 languages           ⇨ *.zip archives containing the translations.
        ├── 📝 list.iso.txt    ⇨ List of available translations for download.
        └── 🗃️ xx-XX.zip       ⇨ Translations

Using the GitHub API:

Checking for updates:

GET https://api.github.com/repos/FelisDiligens/Fallout76-QuickConfiguration/releases/latest

Compares the tag_name with the installed version.

Updates:

GET https://api.github.com/repos/FelisDiligens/Fallout76-QuickConfiguration/releases/latest

Any file that is a zip file. Downloaded and extracted by the auto-updater.

Checking for updates to translations (as of v1.11.4):

GET https://api.github.com/repos/FelisDiligens/Fallout76-QuickConfiguration/commits?path=Fo76ini%2Flanguages&page=1&per_page=1

Checks if any commit to the path ./Fo76ini/languages has happened since the last update to the translations.

From felisdiligens.github.io:

Displays felisdiligens.github.io/Fo76ini/whatsnew.html and /whatsnewdark.html in a web browser control.

The older files (What's new.html and What's new - Dark.html) are now symlinks that point to 'whatsnew.html' and 'whatsnewdark.html'