Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0162084e53 | |||
| 2f4b6a98d8 | |||
| d90f8693c9 | |||
| e870c96879 | |||
| e531e7d9b6 | |||
| 57cc023558 | |||
| 23929e3651 | |||
| 829aadca2d | |||
| 30486616f8 | |||
| d9a2679af4 | |||
| 4f57c37572 | |||
| e4a0dd2d13 | |||
| 0a10cff0fa | |||
| e4cf5bdad0 | |||
| 645751cd23 | |||
| b92a49821d | |||
| 3a91528e95 | |||
| 3c37be2a8e | |||
| 544b5f4f56 | |||
| cc9de54d42 | |||
| e76414ce17 | |||
| 68c2b4f25d | |||
| 78946f1bb4 | |||
| 0d1671fe8f | |||
| ea35017aa0 | |||
| 0db24fec60 | |||
| b2a18c9c41 | |||
| 16ec80929c | |||
| 3536e25d52 | |||
| 935d249183 | |||
| 8cb01d77de | |||
| a446b7cb41 | |||
| 82681d27e1 | |||
| 777ec2907b | |||
| 8513bf0313 |
@@ -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'ы.
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
- use spaces not tabs for indentation
|
||||
@@ -12,20 +12,50 @@ jobs:
|
||||
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
|
||||
|
||||
@@ -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
-1
@@ -110,7 +110,7 @@ architectures/armeabi-v7a=false
|
||||
architectures/arm64-v8a=true
|
||||
architectures/x86=false
|
||||
architectures/x86_64=false
|
||||
version/code=130
|
||||
version/code=143
|
||||
version/name=""
|
||||
package/unique_name="com.KIDGameProduction.Owniverse"
|
||||
package/name="Owniverse"
|
||||
|
||||
+3
-7
@@ -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.14"
|
||||
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]
|
||||
|
||||
@@ -73,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))
|
||||
@@ -82,22 +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 = {}
|
||||
|
||||
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)
|
||||
|
||||
@@ -160,7 +170,7 @@ func _init_owniverse_items() -> bool:
|
||||
item.item_activated.connect(item_activated)
|
||||
|
||||
owniverse_items[item_id] = item
|
||||
|
||||
|
||||
return false
|
||||
|
||||
|
||||
@@ -169,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 = []
|
||||
@@ -191,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:
|
||||
@@ -226,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:
|
||||
@@ -273,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:
|
||||
@@ -294,7 +315,7 @@ 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):
|
||||
@@ -302,5 +323,7 @@ func _on_topmenu_button_pressed(ButtonName) -> void:
|
||||
#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
Reference in New Issue
Block a user