Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a05a5ee2a |
@@ -1,19 +1,13 @@
|
|||||||
---
|
---
|
||||||
name: Godot 4.7 Core Rules
|
name: Godot 4.4 Core Rules
|
||||||
priority: high
|
priority: high
|
||||||
---
|
---
|
||||||
|
|
||||||
Ты — senior Godot 4.7 GDScript разработчик.
|
Ты — senior Godot 4.4 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]` и т.д.).
|
- Пиши строго типизированный код (`var health: int = 100`, `: Array[Node]` и т.д.).
|
||||||
- Предпочитай Signals вместо проверки в _process.
|
- Предпочитай Signals вместо проверки в _process.
|
||||||
- Используй @export, @export_range, @export_enum, @onready.
|
- Используй @export, @export_range, @export_enum, @onready.
|
||||||
- Composition over deep inheritance.
|
- Composition over deep inheritance.
|
||||||
- Менеджеры и автолоады выноси в отдельные singleton'ы.
|
- Менеджеры и автолоады выноси в отдельные singleton'ы.
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
- use spaces not tabs for indentation
|
|
||||||
@@ -2,43 +2,39 @@ name: Android
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
branches:
|
||||||
- "v*"
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
android:
|
android:
|
||||||
runs-on: godot
|
runs-on: godot
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
lfs: true
|
|
||||||
- name: Godot version
|
- name: Godot version
|
||||||
run: godot --version
|
|
||||||
|
|
||||||
- name: Prepare Godot
|
|
||||||
run: |
|
run: |
|
||||||
rm -rf .godot
|
godot --version
|
||||||
|
|
||||||
godot \
|
|
||||||
--headless \
|
- name: Java version
|
||||||
--path . \
|
run: |
|
||||||
--editor \
|
java -version
|
||||||
--quit \
|
|
||||||
--verbose
|
|
||||||
|
- name: Android SDK
|
||||||
|
run: |
|
||||||
|
adb version
|
||||||
|
|
||||||
|
|
||||||
- name: Build APK
|
- name: Build APK
|
||||||
run: |
|
run: |
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
|
|
||||||
godot \
|
|
||||||
--headless \
|
|
||||||
--path . \
|
|
||||||
--editor \
|
|
||||||
--quit
|
|
||||||
|
|
||||||
godot \
|
godot \
|
||||||
--headless \
|
--headless \
|
||||||
--path . \
|
--path . \
|
||||||
@@ -46,47 +42,14 @@ jobs:
|
|||||||
build/app.apk
|
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
|
- name: Verify APK
|
||||||
run: |
|
run: |
|
||||||
test -f build/app.apk
|
test -f build/app.apk
|
||||||
ls -lh 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
|
- name: Upload APK
|
||||||
env:
|
uses: actions/upload-artifact@v4
|
||||||
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
with:
|
||||||
run: |
|
name: android-apk
|
||||||
RELEASE_ID=$(curl -fsS \
|
path: build/app.apk
|
||||||
-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"
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dojk16crca3cx
|
||||||
@@ -73,8 +73,8 @@ var g_active_items: Dictionary = {}
|
|||||||
|
|
||||||
var owniverse:Owniverse = Owniverse.new()
|
var owniverse:Owniverse = Owniverse.new()
|
||||||
var owniverse_items: Dictionary[String, OwniverseItem] = {}
|
var owniverse_items: Dictionary[String, OwniverseItem] = {}
|
||||||
var locked_items: Array = []
|
|
||||||
|
|
||||||
|
var item_list_to_update: Dictionary = {}
|
||||||
|
|
||||||
func set_datetime(value: float):
|
func set_datetime(value: float):
|
||||||
date_time.text = str(snapped(value, 0.1))
|
date_time.text = str(snapped(value, 0.1))
|
||||||
@@ -82,32 +82,22 @@ func set_datetime(value: float):
|
|||||||
#region Item manipulations: update and visibility
|
#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:
|
func set_owniverse_item_value() -> void:
|
||||||
for _item_id in owniverse_items:
|
for item_id in owniverse.items_to_update:
|
||||||
owniverse_items[_item_id].set_label(owniverse.state.amount[_item_id])
|
if owniverse_items.has(item_id):
|
||||||
|
owniverse_items[item_id].set_label(owniverse.items_to_update[item_id])
|
||||||
|
owniverse.items_to_update = {}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#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):
|
func _on_indicator_pressed(indicator_name: String, page: int = 0):
|
||||||
_set_description(indicator_name, page)
|
_set_description(indicator_name, page)
|
||||||
|
|
||||||
@@ -170,7 +160,7 @@ func _init_owniverse_items() -> bool:
|
|||||||
item.item_activated.connect(item_activated)
|
item.item_activated.connect(item_activated)
|
||||||
|
|
||||||
owniverse_items[item_id] = item
|
owniverse_items[item_id] = item
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
@@ -179,8 +169,11 @@ func item_activated(item: OwniverseItem) -> void:
|
|||||||
_set_item_description(item)
|
_set_item_description(item)
|
||||||
|
|
||||||
if item.item_id == "S" or item.item_id == "H":
|
if item.item_id == "S" or item.item_id == "H":
|
||||||
var _value = owniverse.produce_hs(item.item_id, 100_000)
|
owniverse.produce(item.item_id, 100_000)
|
||||||
|
|
||||||
|
func _unlock_item(item_id: String):
|
||||||
|
owniverse_items[item_id].set_visible(true)
|
||||||
|
|
||||||
|
|
||||||
func _check_counters(delta: float) -> Array:
|
func _check_counters(delta: float) -> Array:
|
||||||
var actions: Array = []
|
var actions: Array = []
|
||||||
@@ -198,7 +191,7 @@ func _check_counters(delta: float) -> Array:
|
|||||||
return actions
|
return actions
|
||||||
|
|
||||||
|
|
||||||
#region Swipe and page
|
#region Swipe
|
||||||
|
|
||||||
func _do_actions(actions: Array) -> void:
|
func _do_actions(actions: Array) -> void:
|
||||||
for action: String in actions:
|
for action: String in actions:
|
||||||
@@ -233,21 +226,41 @@ func _input(event: InputEvent) -> void:
|
|||||||
g_counters.swipe.value = 0
|
g_counters.swipe.value = 0
|
||||||
elif event is InputEventScreenTouch:
|
elif event is InputEventScreenTouch:
|
||||||
pass
|
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:
|
func _set_active_page_actions() -> void:
|
||||||
for pa in page_actions:
|
for pa in page_actions:
|
||||||
if !g_active_items.has(pa): continue
|
if !g_active_items.has(pa): continue
|
||||||
|
|
||||||
var item_id: String = g_active_items[pa].item_id
|
var item_id: String = g_active_items[pa].item_id
|
||||||
var entity: OwniverseEntity = owniverse.entities[item_id]
|
var amount = owniverse.get_available_to_produce(item_id)
|
||||||
|
page_actions[pa].set_actions(item_id, amount)
|
||||||
#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:
|
func _page_action_pressed(page_id: int, action_amount: float) -> void:
|
||||||
@@ -260,42 +273,8 @@ func _page_action_pressed(page_id: int, action_amount: float) -> void:
|
|||||||
owniverse.produce(item_id, action_amount)
|
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:
|
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
|
var ind: int = 1
|
||||||
for icon in g_speed_icons:
|
for icon in g_speed_icons:
|
||||||
if ind <= speed:
|
if ind <= speed:
|
||||||
@@ -315,7 +294,7 @@ func _change_speed(delta: int) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _on_topmenu_button_pressed(ButtonName) -> void:
|
func _on_topmenu_button_pressed(ButtonName) -> void:
|
||||||
print("Debug: ", owniverse.state)
|
print(ButtonName)
|
||||||
#var s: float = 1E15
|
#var s: float = 1E15
|
||||||
#var z = 1.0
|
#var z = 1.0
|
||||||
#for i in range(30):
|
#for i in range(30):
|
||||||
@@ -323,7 +302,5 @@ func _on_topmenu_button_pressed(ButtonName) -> void:
|
|||||||
#z *= 10
|
#z *= 10
|
||||||
|
|
||||||
|
|
||||||
func _on_unlock_and_save_timeout() -> void:
|
func _on_save_data() -> void:
|
||||||
owniverse.save_data()
|
owniverse.save_data()
|
||||||
|
|
||||||
_unlock_items()
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user