61 Commits

Author SHA1 Message Date
Kirill 0162084e53 Refactor state management; update unlock logic and enhance signal bindings in scene 2026-09-01 23:53:05 +03:00
Kirill 2f4b6a98d8 Refactor production logic to use state amounts; update calculate_max_producible function to accept default desired amount 2026-09-01 21:29:07 +03:00
Kirill d90f8693c9 Update Godot core rules to version 4.7; refactor production logic and add entity batch processing 2026-08-31 23:51:07 +03:00
Kirill e870c96879 Add 'binds' key to state dictionary for enhanced state management 2026-08-30 22:31:24 +03:00
Kirill e531e7d9b6 Refactor item management and unlock logic; remove unused item update list and signal 2026-08-28 00:07:18 +03:00
Kirill 57cc023558 Implement item unlocking mechanism and refactor save functionality; update scene timer node 2026-08-27 23:04:56 +03:00
Kirill 23929e3651 Refactor owniverse state management; replace evolution class with state handling and update cycle logic 2026-08-25 00:26:31 +03:00
Kirill 829aadca2d Update version to 0.6.27 and increment version code to 143; refactor resource paths in scene files
Android / android (push) Successful in 30s
2026-08-20 22:58:24 +03:00
Kirill 30486616f8 Update version to 0.6.26 and increment version code to 142
Android / android (push) Successful in 30s
2026-08-20 22:55:01 +03:00
Kirill d9a2679af4 Replace pressed burger button image and update resource path in world.tscn 2026-08-20 22:54:42 +03:00
Kirill 4f57c37572 Update version to 0.6.25 and increment version code to 141; replace burger button image
Android / android (push) Successful in 30s
2026-08-20 22:45:22 +03:00
Kirill e4a0dd2d13 Add new spirituality trend indicator image
Android / android (push) Successful in 30s
2026-08-20 22:29:11 +03:00
Kirill 0a10cff0fa Refactor code structure for improved readability and maintainability 2026-08-20 22:28:03 +03:00
Kirill e4cf5bdad0 Add new button images for time adjustment in the top menu 2026-08-20 22:27:36 +03:00
Kirill 645751cd23 Add new button images for time adjustment in the top menu 2026-08-20 22:26:57 +03:00
Kirill b92a49821d Update version to 0.6.23 and increment version code to 139; add unique IDs to UI nodes
Android / android (push) Successful in 31s
2026-08-20 22:19:19 +03:00
Kirill 3a91528e95 Bump version to 0.6.22 and increment version code to 138
Android / android (push) Successful in 30s
2026-08-20 22:11:09 +03:00
Kirill 3c37be2a8e Add new PNG assets for time and speed UI components 2026-08-20 22:10:40 +03:00
Kirill 544b5f4f56 Add new time speed icons for UI 2026-08-20 22:10:22 +03:00
Kirill cc9de54d42 Bump version to 0.6.21 and increment version code to 137
Android / android (push) Successful in 31s
2026-08-20 21:55:23 +03:00
Kirill e76414ce17 Refactor code structure for improved readability and maintainability 2026-08-20 21:54:45 +03:00
Kirill 68c2b4f25d Refactor code structure for improved readability and maintainability 2026-08-20 21:54:32 +03:00
Kirill 78946f1bb4 Bump version to 0.6.20 and increment version code to 136
Android / android (push) Successful in 32s
2026-08-20 21:41:23 +03:00
Kirill 0d1671fe8f Update project icon reference in configuration file 2026-08-20 21:40:48 +03:00
Kirill ea35017aa0 Bump version to 0.6.19 and increment version code to 135
Android / android (push) Successful in 29s
2026-08-20 21:20:08 +03:00
Kirill 0db24fec60 Refactor background and starry sky layer scripts; move to new directory structure 2026-08-20 21:19:47 +03:00
Kirill b2a18c9c41 Refactor code structure for improved readability and maintainability 2026-08-20 21:19:30 +03:00
Kirill 16ec80929c Bump version to 0.6.18 and increment version code to 134; update Android workflow configuration
Android / android (push) Successful in 31s
2026-08-20 21:11:46 +03:00
Kirill 3536e25d52 Update version to 0.6.17 and increment version code to 133; enhance Android build workflow
Android / android (push) Successful in 27s
2026-08-20 21:05:22 +03:00
Kirill 935d249183 Bump version to 0.6.16 and update version code to 132
Android / android (push) Successful in 22s
2026-08-20 20:25:12 +03:00
Kirill 8cb01d77de Refactor Android build workflow to separate preparation and build steps 2026-08-20 20:24:30 +03:00
Kirill a446b7cb41 Update Global autoload reference in project configuration 2026-08-20 20:19:01 +03:00
Kirill 82681d27e1 Bump version to 0.6.15 and update version code to 131
Android / android (push) Failing after 17s
2026-08-20 20:11:39 +03:00
Kirill 777ec2907b Add new PNG assets for time and speed UI components 2026-08-20 20:09:14 +03:00
Kirill 8513bf0313 Add new PNG images for time and speed menu 2026-08-20 20:03:18 +03:00
Kirill a4019ed98c Add global.gd script with localization and CSV reading functionality 2026-08-20 19:55:20 +03:00
Kirill 4731489015 Refactor global scripts: remove Global.gd, add globals.gd with enhanced functionality 2026-08-20 19:54:50 +03:00
Kirill 711ace6678 Refactor autoload structure by moving Global and SaveManager scripts to the autoload directory 2026-08-20 19:53:49 +03:00
Kirill 89342dc614 Add Global and SaveManager scripts with localization and save/load functionality 2026-08-20 19:53:32 +03:00
Kirill 2459d15fc0 Bump version code to 130 and update version name to 0.6.14 in project configuration
Android / android (push) Successful in 18s
2026-08-20 19:43:43 +03:00
Kirill 3552a5e51d Update CI workflow to trigger on version tags and streamline APK upload process 2026-08-20 19:39:55 +03:00
Kirill 38b05eb4ef Remove redundant debug and check steps from CI workflow
Android / android (push) Successful in 25s
2026-08-19 23:09:53 +03:00
Kirill 735ab3774d Downgrade upload-artifact action version from v4 to v3 in CI workflow
Android / android (push) Successful in 50s
2026-08-19 23:04:17 +03:00
Kirill 43aaa6e28f Reorder APK upload step in CI workflow for clarity
Android / android (push) Failing after 29s
2026-08-19 23:02:21 +03:00
Kirill 544f5c466e Remove file type check for APK in CI workflow
Android / android (push) Successful in 26s
2026-08-19 22:49:18 +03:00
Kirill 0b80d2cdf6 Remove APK upload step from CI workflow and add APK check
Android / android (push) Failing after 27s
2026-08-19 22:47:52 +03:00
Kirill b82fe0f3d7 Disable package signing in export presets configuration
Android / android (push) Failing after 30s
2026-08-19 22:44:56 +03:00
Kirill 860168e4eb Fix resource IDs in owniverse_item.tscn for script and texture references
Android / android (push) Failing after 18s
2026-08-19 22:42:04 +03:00
Kirill 84c29ed064 Add Global.gd.uid file with unique identifier
Android / android (push) Failing after 18s
2026-08-19 22:36:02 +03:00
Kirill 14e4450679 Disable runnable option for Android export preset and remove ADB version check from CI workflow
Android / android (push) Failing after 18s
2026-08-19 22:26:44 +03:00
Kirill 15a4a2e953 Enhance Android CI workflow with verbose export and build checks
Android / android (push) Failing after 19s
2026-08-19 22:16:05 +03:00
Kirill 201284f3c2 Fix Android CI export
Android / android (push) Failing after 18s
2026-08-19 22:13:06 +03:00
Kirill 708740d757 Disable Gradle build for Android CI
Android / android (push) Failing after 14s
2026-08-19 22:11:43 +03:00
Kirill f82ccbedd9 Add Godot export check step to Android CI workflow
Android / android (push) Failing after 13s
2026-08-19 22:07:51 +03:00
Kirill 0db2fa0f96 yaml
Android / android (push) Failing after 14s
2026-08-19 22:04:32 +03:00
K 41de04c2e2 Update .gitea/workflows/android.yml
Android / android (push) Failing after 16s
2026-08-19 17:23:58 +00:00
K 5bb566351d Merge pull request 'Feature/evolution' (#1) from feature/evolution into main
Android / android (push) Failing after 39s
Reviewed-on: #1
2026-08-19 16:20:56 +00:00
Kirill 88bcf77aa9 Add Android CI 2026-08-19 19:18:39 +03:00
Kirill 4de9027d1e Refactor: improve code formatting and consistency in evolution logic 2026-08-18 22:37:38 +03:00
Kirill 044d193f8d Refactor: clean up unused code and improve variable initialization in evolution and entity management 2026-08-17 08:12:43 +03:00
Kirill d9cae38a11 Enhance production logic: add auto-producing entities and implement production calculations 2026-08-02 23:55:58 +03:00
237 changed files with 671 additions and 265 deletions
+9 -3
View File
@@ -1,13 +1,19 @@
---
name: Godot 4.4 Core Rules
name: Godot 4.7 Core Rules
priority: high
---
Ты — senior Godot 4.4 GDScript разработчик.
Ты — senior Godot 4.7 GDScript разработчик.
- Use Godot 4.7+ API.
- Do not use Godot 3.x syntax or APIs.
- Follow the existing project architecture and coding style.
- Do not introduce unnecessary abstractions.
- Do not modify unrelated files.
- Всегда используй Godot 4.4+ API.
- Пиши строго типизированный код (`var health: int = 100`, `: Array[Node]` и т.д.).
- Предпочитай Signals вместо проверки в _process.
- Используй @export, @export_range, @export_enum, @onready.
- Composition over deep inheritance.
- Менеджеры и автолоады выноси в отдельные singleton'ы.
+1
View File
@@ -0,0 +1 @@
- use spaces not tabs for indentation
+92
View File
@@ -0,0 +1,92 @@
name: Android
on:
push:
tags:
- "v*"
jobs:
android:
runs-on: godot
steps:
- name: Checkout
uses: actions/checkout@v4
with:
lfs: true
- name: Godot version
run: godot --version
- name: Prepare Godot
run: |
rm -rf .godot
godot \
--headless \
--path . \
--editor \
--quit \
--verbose
- name: Build APK
run: |
mkdir -p build
godot \
--headless \
--path . \
--editor \
--quit
godot \
--headless \
--path . \
--export-release "Android" \
build/app.apk
- name: Check imported resources
run: |
echo "=== PNG imports ==="
find .godot/imported -iname '*habitable*' -o -iname '*civ2*'
echo "=== PNG files ==="
ls -lh ui/4-life/habitable_planet.png
ls -lh ui/4-life/civ2.png
- name: Verify APK
run: |
test -f build/app.apk
ls -lh build/app.apk
- name: Create Release
env:
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: |
curl -f \
-X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"https://gt.owad.ru/api/v1/repos/K/owniverse/releases" \
-d "{
\"tag_name\": \"${GITHUB_REF_NAME}\",
\"name\": \"${GITHUB_REF_NAME}\",
\"body\": \"Android build ${GITHUB_REF_NAME}\"
}"
- name: Upload APK to Release
env:
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: |
RELEASE_ID=$(curl -fsS \
-H "Authorization: token ${GITEA_TOKEN}" \
"https://gt.owad.ru/api/v1/repos/K/owniverse/releases/tags/${GITHUB_REF_NAME}" \
| python3 -c 'import sys,json; print(json.load(sys.stdin)["id"])')
curl -f \
-X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-F "attachment=@build/app.apk" \
"https://gt.owad.ru/api/v1/repos/K/owniverse/releases/${RELEASE_ID}/assets?name=owniverse-${GITHUB_REF_NAME}.apk"
-1
View File
@@ -1 +0,0 @@
uid://dojk16crca3cx
-6
View File
@@ -1,6 +0,0 @@
[gd_scene format=3 uid="uid://dg15dpxiepicb"]
[ext_resource type="Texture2D" uid="uid://chxxghyul1im7" path="res://ui/border/border-2px.png" id="1_6kaf8"]
[node name="Border" type="TextureRect"]
texture = ExtResource("1_6kaf8")
+1
View File
@@ -0,0 +1 @@
uid://dy0hrqie4ritn
+8 -8
View File
@@ -21,14 +21,14 @@ LRG|0||||50||50000000||||S:300||DSN^SGRB%0.1|2|||RG|Star|||||
HRG|0||||100||10000000||||S:400.||SN^GRB%1|2|||RG|Star|||||
RSG|0||||300||1000000||||S:500||BSN^LGRB%3|2|||RG|Star|||||
RHG|0||||1000||100000||||S:600||HN^HGRB%10|2|||RG|Star|||||
DSN|0||||||0|||2|S:59.1||SNS:1&H:6.5&He:13.5&Met:11&blast:2|2|mass:15&H:6.5&HE:13.5&MET:11||||SNGRBB||||
SN|0||||||0|||9|S:99.1||LNS:1&H:8&He:50&Met:11&blast:9|2|mass:18&H:8&HE:50&MET:11||||SNGRBB||||
BSN|0||||||0||.|305|S:309.1||MGT:1&H:15&He:186&Met:15&blast:305|2|mass:21&H:15&HE:186&MET:15||||SNGRBB||||
HN|0||||||0|||9990|S:939.1||BH40:1&H:30&He:560&Met:30&blast:9990|2|mass:40&H:30&HE:560&MET:30||||SNGRBB||||
SGRB|0||||||0||0.001|31|S:149.1||BH25:1&H:0.5&He:10&Met:4&blast:31|2|mass:25&H:0.5&HE:10&MET:4||||SNGRBB||||
GRB|0||||||0||0.01|136|S:239.1||BH30:1&H:19&He:12&Met:5&blast:136|2|mass:30&H:19&HE:12&MET:5||||SNGRBB||||
LGRB|0||||||0||0.03|3446|S:669.1||BH40:1&H:68&He:18&Met:9&blast:3446|2|mass:40&H:68&HE:18&MET:9||||SNGRBB||||
HGRB|0||||||0||0.1|97342|S:1939.1||BH60:1&H:0&He:40&Met:10&blast:97342|2|mass:60&H:0&HE:40&MET:10||||SNGRBB||||
DSN|0||||||1|||2|S:59.1||SNS:1&H:6.5&He:13.5&Met:11&blast:2|2|mass:15&H:6.5&HE:13.5&MET:11||||SNGRBB||||
SN|0||||||1|||9|S:99.1||LNS:1&H:8&He:50&Met:11&blast:9|2|mass:18&H:8&HE:50&MET:11||||SNGRBB||||
BSN|0||||||1||.|305|S:309.1||MGT:1&H:15&He:186&Met:15&blast:305|2|mass:21&H:15&HE:186&MET:15||||SNGRBB||||
HN|0||||||1|||9990|S:939.1||BH40:1&H:30&He:560&Met:30&blast:9990|2|mass:40&H:30&HE:560&MET:30||||SNGRBB||||
SGRB|0||||||1||0.001|31|S:149.1||BH25:1&H:0.5&He:10&Met:4&blast:31|2|mass:25&H:0.5&HE:10&MET:4||||SNGRBB||||
GRB|0||||||1||0.01|136|S:239.1||BH30:1&H:19&He:12&Met:5&blast:136|2|mass:30&H:19&HE:12&MET:5||||SNGRBB||||
LGRB|0||||||1||0.03|3446|S:669.1||BH40:1&H:68&He:18&Met:9&blast:3446|2|mass:40&H:68&HE:18&MET:9||||SNGRBB||||
HGRB|0||||||1||0.1|97342|S:1939.1||BH60:1&H:0&He:40&Met:10&blast:97342|2|mass:60&H:0&HE:40&MET:10||||SNGRBB||||
CBD|0||||0.1||||||||||||BD||||||
WD|1|WD:1|||||||||||||||||||||
TWD|0||||0.8||||||||||||WD|Star|Degen||||
+6 -6
View File
@@ -74,7 +74,7 @@ Remove-Item -Recurse -Force '{temp_dir}'"
name="Android"
platform="Android"
runnable=true
runnable=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
@@ -98,11 +98,11 @@ script_export_mode=2
custom_template/debug=""
custom_template/release=""
gradle_build/use_gradle_build=true
gradle_build/use_gradle_build=false
gradle_build/gradle_build_directory=""
gradle_build/android_source_template=""
gradle_build/compress_native_libraries=true
gradle_build/export_format=1
gradle_build/compress_native_libraries=false
gradle_build/export_format=0
gradle_build/min_sdk=""
gradle_build/target_sdk=""
gradle_build/custom_theme_attributes={}
@@ -110,11 +110,11 @@ architectures/armeabi-v7a=false
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
version/code=129
version/code=143
version/name=""
package/unique_name="com.KIDGameProduction.Owniverse"
package/name="Owniverse"
package/signed=true
package/signed=false
package/app_category=2
package/retain_data_on_uninstall=false
package/exclude_from_recents=false
+3 -7
View File
@@ -8,24 +8,20 @@
config_version=5
[animation]
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
[application]
config/name="Owniverse"
config/version="0.6.13"
config/version="0.6.27"
run/main_scene="uid://bv384dpmvjv8o"
config/features=PackedStringArray("4.7", "Mobile")
boot_splash/show_image=false
config/icon="uid://do5teb1i7uiuw"
config/icon="uid://djiwkyk470qb2"
config/size/borderless=true
config/stretch_mode=0
[autoload]
Global="*uid://dojk16crca3cx"
Global="*uid://dy0hrqie4ritn"
SaveManager="*uid://ul0srjc4gcgg"
[display]
+78 -55
View File
@@ -1,7 +1,5 @@
extends Control
#signal produce_items(item_id: String, amount: int)
const OWNIVERSE_ITEM = preload("uid://d3xjfxwe3w16v")
const SPEED_TEXTURE_NAME_TEMPLATE = "res://ui/topmenu/time&speed/time%s.png"
@@ -75,8 +73,8 @@ var g_active_items: Dictionary = {}
var owniverse:Owniverse = Owniverse.new()
var owniverse_items: Dictionary[String, OwniverseItem] = {}
var locked_items: Array = []
var item_list_to_update: Dictionary = {}
func set_datetime(value: float):
date_time.text = str(snapped(value, 0.1))
@@ -84,25 +82,32 @@ func set_datetime(value: float):
#region Item manipulations: update and visibility
func add_to_update_list(item_id: String, amount: int) -> void:
if item_list_to_update.has(item_id):
item_list_to_update[item_id] += amount
else:
item_list_to_update[item_id] = amount
func set_owniverse_item_value() -> void:
for item_id in owniverse.items_to_update:
if owniverse_items.has(item_id):
owniverse_items[item_id].set_label(owniverse.items_to_update[item_id])
owniverse.items_to_update = {}
#func unlock_owniverse_item() -> void:
#pass
for _item_id in owniverse_items:
owniverse_items[_item_id].set_label(owniverse.state.amount[_item_id])
#endregion
func _unlock_items():
if locked_items.size() == 0: return
var _new_locked_items = []
for _item_id in locked_items:
#print(_item_id ' | ', _entity.unlock)
var _flag_to_unlock = true
for _elem in owniverse.entities[_item_id].unlock:
if owniverse.state.stats.total_amount[_elem] < owniverse.entities[_item_id].unlock[_elem]:
_flag_to_unlock = false
break
if _flag_to_unlock:
owniverse_items[_item_id].set_visible(true)
else:
_new_locked_items.append(_item_id)
locked_items = _new_locked_items
func _on_indicator_pressed(indicator_name: String, page: int = 0):
_set_description(indicator_name, page)
@@ -165,7 +170,7 @@ func _init_owniverse_items() -> bool:
item.item_activated.connect(item_activated)
owniverse_items[item_id] = item
return false
@@ -174,11 +179,8 @@ func item_activated(item: OwniverseItem) -> void:
_set_item_description(item)
if item.item_id == "S" or item.item_id == "H":
owniverse.produce(item.item_id, 100_000)
func _unlock_item(item_id: String):
owniverse_items[item_id].set_visible(true)
var _value = owniverse.produce_hs(item.item_id, 100_000)
func _check_counters(delta: float) -> Array:
var actions: Array = []
@@ -196,7 +198,7 @@ func _check_counters(delta: float) -> Array:
return actions
#region Swipe
#region Swipe and page
func _do_actions(actions: Array) -> void:
for action: String in actions:
@@ -231,41 +233,21 @@ func _input(event: InputEvent) -> void:
g_counters.swipe.value = 0
elif event is InputEventScreenTouch:
pass
#endregion
func _ready() -> void:
owniverse.init_enitities()
owniverse.load_data()
_init_owniverse_items()
owniverse.unlock_item.connect(_unlock_item)
g_counters.swipe.sec = 0.2
for pa in page_actions:
page_actions[pa].action_pressed.connect(_page_action_pressed)
page_actions[pa].page_id = pa
func _process(delta: float) -> void:
var year_delta: float = owniverse.add_time_delta(delta)
set_datetime(year_delta)
owniverse.cycle(year_delta)
var actions = _check_counters(delta)
_do_actions(actions)
_set_active_page_actions()
func _set_active_page_actions() -> void:
for pa in page_actions:
if !g_active_items.has(pa): continue
var item_id: String = g_active_items[pa].item_id
var amount = owniverse.get_available_to_produce(item_id)
page_actions[pa].set_actions(item_id, amount)
var entity: OwniverseEntity = owniverse.entities[item_id]
#var amount = owniverse.get_available_to_produce(item_id)
#var amount = owniverse.get_available_to_produce(entity)
var amount = owniverse.calculate_max_producible(entity)
#print(item_id, " : ", amount)
page_actions[pa].set_actions(item_id, amount)
func _page_action_pressed(page_id: int, action_amount: float) -> void:
@@ -278,8 +260,42 @@ func _page_action_pressed(page_id: int, action_amount: float) -> void:
owniverse.produce(item_id, action_amount)
#endregion
func _ready() -> void:
var inited_result = owniverse.init_enitities()
locked_items = inited_result.locked_items
owniverse.load_data()
_init_owniverse_items()
g_counters.swipe.sec = 0.2
for pa in page_actions:
page_actions[pa].action_pressed.connect(_page_action_pressed)
page_actions[pa].page_id = pa
func _process(delta: float) -> void:
owniverse.evolute(delta)
set_datetime(owniverse.state.year)
#owniverse.cycle(delta)
#owniverse.cycle_legacy(year_delta)
var actions = _check_counters(delta)
_do_actions(actions)
_set_active_page_actions()
func _change_speed(delta: int) -> void:
var speed: int = owniverse.change_speed(delta)
owniverse.speed = owniverse.speed + delta
var speed: int = owniverse.speed
var ind: int = 1
for icon in g_speed_icons:
if ind <= speed:
@@ -299,8 +315,15 @@ func _change_speed(delta: int) -> void:
func _on_topmenu_button_pressed(ButtonName) -> void:
print(ButtonName)
print("Debug: ", owniverse.state)
#var s: float = 1E15
#var z = 1.0
#for i in range(30):
#print(i, " | ", z, " | ", " | ", s - z)
#z *= 10
func _on_save_data() -> void:
func _on_unlock_and_save_timeout() -> void:
owniverse.save_data()
_unlock_items()

Some files were not shown because too many files have changed in this diff Show More