Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/detect-missing-translations.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

# Extract all keys from English CSV files (first field, skip empty lines and header)
en_keys=$(grep -h "^[^,]" text/en/*.csv 2>/dev/null | grep -v "^\"keys\"" | cut -d',' -f1 | sed 's/"//g' | grep -v "^$" | sort -u)

# Get list of language directories (excluding en)
lang_dirs=$(find text/* -maxdepth 0 -type d ! -name en 2>/dev/null)

# Check each key in each language
for key in $en_keys; do
for lang_dir in $lang_dirs; do
lang=$(basename "$lang_dir")
# Search for the key at the start of a line in CSV files (with or without quotes)
if ! grep -h "^\"*$key\"*," "$lang_dir"/*.csv 2>/dev/null | grep -q .; then
echo "Missing in $lang: $key"
fi
done
done
10 changes: 0 additions & 10 deletions .github/workflows/placeholder.yml

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021 qrrk
Copyright (c) 2021-present qrrk

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,31 @@

**Catapult** is a cross-platform launcher and content manager for [Cataclysm: Dark Days Ahead](https://github.com/CleverRaven/Cataclysm-DDA) and [Cataclysm: Bright Nights](https://github.com/cataclysmbnteam/Cataclysm-BN). It is in part inspired by earlier versions of [Rémy Roy's launcher](https://github.com/remyroy/CDDA-Game-Launcher).

[**Download latest release**](https://github.com/qrrk/Catapult/releases/latest) | [**See all releases**](https://github.com/qrrk/Catapult/releases)

<table>
<tr><th colspan="2">Releases</th></tr>
<tr>
<td>Latest</td>
<td><a href="https://github.com/qrrk/Catapult/releases/latest"><img src="https://img.shields.io/github/v/release/qrrk/Catapult" alt="Latest Release"></a></td>
</tr>
<tr>
<td>All</td>
<td><a href="https://github.com/qrrk/Catapult/releases"><img src="https://img.shields.io/github/downloads/qrrk/Catapult/total" alt="All Releases"></a></td>
</tr>
</table>

<table>
<tr><th>Development builds</th></tr>
<tr>
<td>
<a href="https://github.com/qrrk/Catapult/actions/workflows/export-master.yml"><img src="https://github.com/qrrk/Catapult/actions/workflows/export-master.yml/badge.svg" alt="CI Status"></a>
<br>
ℹ️ Need GitHub account to download<br>
⚠️ May be unstable; not recommended for everyday use
</td>
</tr>
</table>
<br>


![Catapult UI](./.github/catapult_ui.gif)
Expand Down
48 changes: 48 additions & 0 deletions doc/dev/node-naming.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Node Naming

This convention is motivated by the preferred way of accessing UI nodes from scripts, which is by **scene-unique names** using the `%` shorthand, for example: `%InstallBtn`, `%BuildsList`, `%UpdateSwitch`.

UI node names consist of the main part describing their function and a suffix loosely indicating what kind of element they are (but usually not the exact class).

## Suffix Reference

### Interactive Controls
- `Button` or `Btn` - Button, IconButton, etc.
- `Switch` - CheckBox, CheckBox in ButtonGroup (radio), CheckButton
- `List` - OptionButton, ItemList
- `Field` - LineEdit, SpinBox, TextEdit

### Display Elements
- `Label` - Label, short RichTextLabel (1-2 lines)
- `Text` or `Info` - Multi-line RichTextLabel (info blocks, logs)
- `Icon` - TextureRect, TextureButton used as icons

### Containers
- `Layout`, `Area`, `Group`, `Box` - Containers that group and arrange UI nodes (Panel, TabContainer, HBox/VBox, etc.). Use whichever reads best in context but prefer this order when going from higher to lower hierarchy levels: `Layout` → `Area` → `Group` → `Box`.
- `Panel` - Alternative for Panel/PanelContainer when semantically appropriate.

### Dialogs
- `Dialog` or `Dlg` - FileDialog, ConfirmationDialog, AcceptDialog, custom dialogs

## Guidelines

1. **Purpose over type** - Describe what it does, not what it is
- ✓ `%RefreshBuildsBtn`, `%GamesList`
- ✗ `%Button1`, `%OptionButton`

2. **Be specific in large scenes** - Names must be completely unique across the entire scene
- ✓ `%DeleteModsBtn`, `%DeleteInstallBtn`, `%DeleteSoundBtn`, `%DeleteBackupBtn`
- ✗ `%DeleteBtn` (ambiguous when all in same scene)

3. **Consistent suffixes** - Always use the same suffix for the same type
- Buttons: `%PlayBtn`, `%RefreshBtn`, `%InstallBtn`
- Switches: `%UpdateSwitch`, `%ShowStockSwitch`
- Lists: `%BuildsList`, `%GamesList`

4. **Readable purpose** - Avoid abbreviations except well-known ones
- ✓ `%ExperimentalSwitch`, `%NumReleasesField`
- ✗ `%ExperSwitch`, `%NumRelsFld`

## Exceptions

- Nodes that serve a purely cosmetic purpose and aren't likely to ever be accessed from scripts (separators, spacers) do not have to follow this convention.
96 changes: 0 additions & 96 deletions fonts/licenses/AdobeSource.txt

This file was deleted.

8 changes: 8 additions & 0 deletions icons/tex_stop.tres
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[gd_resource type="DPITexture" script_class="SVGTexture" load_steps=2 format=3 uid="uid://cuf7472h7y6cy"]

[ext_resource type="Script" uid="uid://c1wwv5d56m6r" path="res://scripts/svg_texture.gd" id="1_dblyh"]

[resource]
_source = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\"><path fill=\"#f55\" d=\"M16.971 0h-9.942l-7.029 7.029v9.941l7.029 7.03h9.941l7.03-7.029v-9.942l-7.029-7.029zm.932 11.667c-.127.328-1.695 3.888-2.096 4.786-.42.941-1.239 1.881-2.751 1.881h-2.627c-1.592-.001-2.429-.945-2.429-2.597v-7.208c0-.956 1.317-.908 1.317-.044v3.16c0 .26.477.259.477 0v-5.078c0-.982 1.472-.957 1.472 0v4.795c0 .264.442.252.442-.005v-5.628c0-.957 1.458-.984 1.458 0l.001 5.692c0 .254.459.261.459 0v-4.78c0-.905 1.596-.933 1.596 0v5.417c0 .331.327.384.45.131.118-.24.605-1.315.613-1.327.489-1.029 2.127-.404 1.618.805z\"/></svg>"
script = ExtResource("1_dblyh")
metadata/_custom_type_script = "uid://c1wwv5d56m6r"
Loading