-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[무역 상점] 인벤토리 및 판매목록 구현 #190
Changes from all commits
028e72a
19d0673
3ddde18
c78d21a
4ef0f13
b9f754a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,4 +18,4 @@ func _update_info(): | |
|
||
func set_info(info: Dictionary): | ||
self.info = info | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
extends Control | ||
|
||
const MyItemScn = preload("res://scenes/market/my_item.tscn") | ||
|
||
@onready var inventory_container = $MarginContainer/VBoxContainer/InventoryPanel/ScrollContainer/CenterContainer/MarginContainer/GridContainer | ||
|
||
var items | ||
var grouped_items = {} | ||
|
||
func _ready(): | ||
load_items() | ||
|
||
|
||
func load_items(): | ||
items = SceneContext.user_state.inventoryState["refrigeratorStateList"] | ||
sort_inventory_by_items() | ||
|
||
for item in grouped_items.values(): | ||
for grade in item.values(): | ||
var item_scene = MyItemScn.instantiate() | ||
item_scene.set_info(grade) | ||
inventory_container.add_child(item_scene) | ||
|
||
func sort_inventory_by_items(): | ||
for item in items: | ||
var name = item["name"] | ||
var grade = item["grade"] | ||
|
||
# 이름이 존재하지 않으면 새로 추가 | ||
if not grouped_items.has(name): | ||
grouped_items[name] = {} | ||
|
||
# 등급이 존재하지 않으면 이름 하위에 새로 추가 | ||
if not grouped_items[name].has(grade): | ||
grouped_items[name][grade] = [] | ||
|
||
# 아이템을 등급 배열에 추가 | ||
grouped_items[name][grade].append(item) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
[gd_scene load_steps=4 format=3 uid="uid://81w3i6nbxjix"] | ||
|
||
[ext_resource type="Script" path="res://scenes/market/inventory.gd" id="1_xk4wq"] | ||
|
||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8vjfi"] | ||
bg_color = Color(0, 0, 0, 0) | ||
|
||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_as0cg"] | ||
bg_color = Color(0.94902, 0.694118, 0.243137, 1) | ||
|
||
[node name="Inventory" type="Control"] | ||
layout_mode = 3 | ||
anchors_preset = 15 | ||
anchor_right = 1.0 | ||
anchor_bottom = 1.0 | ||
offset_right = -1220.0 | ||
offset_bottom = -130.0 | ||
grow_horizontal = 2 | ||
grow_vertical = 2 | ||
script = ExtResource("1_xk4wq") | ||
|
||
[node name="MarginContainer" type="MarginContainer" parent="."] | ||
layout_mode = 1 | ||
anchors_preset = 15 | ||
anchor_right = 1.0 | ||
anchor_bottom = 1.0 | ||
grow_horizontal = 2 | ||
grow_vertical = 2 | ||
|
||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] | ||
layout_mode = 2 | ||
theme_override_constants/separation = 3 | ||
|
||
[node name="TitlePanel" type="Panel" parent="MarginContainer/VBoxContainer"] | ||
custom_minimum_size = Vector2(200, 70) | ||
layout_mode = 2 | ||
size_flags_horizontal = 0 | ||
theme_override_styles/panel = SubResource("StyleBoxFlat_8vjfi") | ||
|
||
[node name="TitleLabel" type="Label" parent="MarginContainer/VBoxContainer/TitlePanel"] | ||
layout_mode = 1 | ||
anchors_preset = 15 | ||
anchor_right = 1.0 | ||
anchor_bottom = 1.0 | ||
grow_horizontal = 2 | ||
grow_vertical = 2 | ||
theme_override_colors/font_color = Color(0, 0, 0, 1) | ||
theme_override_font_sizes/font_size = 40 | ||
text = "인벤토리" | ||
horizontal_alignment = 1 | ||
vertical_alignment = 1 | ||
|
||
[node name="InventoryPanel" type="Panel" parent="MarginContainer/VBoxContainer"] | ||
custom_minimum_size = Vector2(2.08165e-12, 750) | ||
layout_mode = 2 | ||
theme_override_styles/panel = SubResource("StyleBoxFlat_as0cg") | ||
|
||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/InventoryPanel"] | ||
layout_mode = 1 | ||
anchors_preset = 15 | ||
anchor_right = 1.0 | ||
anchor_bottom = 1.0 | ||
grow_horizontal = 2 | ||
grow_vertical = 2 | ||
|
||
[node name="CenterContainer" type="CenterContainer" parent="MarginContainer/VBoxContainer/InventoryPanel/ScrollContainer"] | ||
layout_mode = 2 | ||
|
||
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/InventoryPanel/ScrollContainer/CenterContainer"] | ||
layout_mode = 2 | ||
theme_override_constants/margin_left = 10 | ||
theme_override_constants/margin_top = 20 | ||
theme_override_constants/margin_right = 10 | ||
theme_override_constants/margin_bottom = 20 | ||
|
||
[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer/InventoryPanel/ScrollContainer/CenterContainer/MarginContainer"] | ||
layout_mode = 2 | ||
theme_override_constants/h_separation = 25 | ||
theme_override_constants/v_separation = 50 | ||
columns = 2 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
extends Control | ||
|
||
signal query_received | ||
|
||
const InventoryScn = preload("res://scenes/market/inventory.tscn") | ||
const SellListScn = preload("res://scenes/market/trade_inventory.tscn") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SellList |
||
|
||
@onready var inventory_container = $VBoxContainer/MarginContainer/SubMenuHBoxContainer/InventoryMarginContainer | ||
@onready var trade_inventory_container = $VBoxContainer/MarginContainer/SubMenuHBoxContainer/SellListMarginContainer | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SellList |
||
|
||
var query_executor = QueryExecutor.new() | ||
var stage_tx_mutation_executor | ||
var trade_inventory_state_executor | ||
|
||
var inventory_state | ||
|
||
func _ready(): | ||
stage_tx_mutation_executor = query_executor.stage_tx_mutation_executor | ||
trade_inventory_state_executor = query_executor.trade_inventory_state_executor | ||
add_child(stage_tx_mutation_executor) | ||
add_child(trade_inventory_state_executor) | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 띄어쓰기를 전체적으로 다 한칸씩만 하도록 해놨습니다. 파일 전체적으로 통일해주세요 |
||
load_initial_scene() | ||
|
||
func load_initial_scene(): | ||
load_inventory() | ||
|
||
query_trade_inventory_state() | ||
query_received.connect(load_trade_inventory) | ||
|
||
func load_inventory(): | ||
var inventory = InventoryScn.instantiate() | ||
inventory_container.add_child(inventory) | ||
|
||
func load_trade_inventory(): | ||
if (inventory_state != null): | ||
var trade_inventory = SellListScn.instantiate() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SellList |
||
trade_inventory_container.add_child(trade_inventory) | ||
trade_inventory.set_list(inventory_state) | ||
|
||
func props_only_query_action(query_executor): # query with no args | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아직 이름이 명확하지 않습니다. 또 따로 함수로 존재할 필요가 없어보입니다. |
||
query_executor.graphql_response.connect( | ||
func(data): | ||
inventory_state = data["data"]["tradeInventoryState"]["tradeGoods"] | ||
query_received.emit() | ||
) | ||
query_executor.run({}) | ||
|
||
func query_trade_inventory_state(): | ||
props_only_query_action( | ||
trade_inventory_state_executor | ||
) | ||
|
||
func _on_village_button_down(): | ||
get_tree().change_scene_to_file("res://scenes/village/village_view.tscn") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저희 이미 상점이 있고 여기는 무역상점이라 백엔드에선 TradeStore 라는 용어로 사용 중입니다 헷갈릴 수 있으니 네이밍 전체적으로 변경 부탁드립니다