├── .gitattributes
├── .gitignore
├── LICENSE.md
├── README.md
├── addons
└── simple_card_pile_ui
│ ├── card_dropzone.gd
│ ├── card_pile_ui.gd
│ ├── card_pile_ui_debugger.gd
│ ├── card_ui.gd
│ ├── card_ui.tscn
│ ├── card_ui_data.gd
│ ├── card_ui_icon.png
│ ├── card_ui_icon.png.import
│ ├── plugin.cfg
│ └── simple_card_pile_ui.gd
├── assets
├── 1x1_#ffffffff.png
├── 1x1_#ffffffff.png.import
├── card_attack.png
├── card_attack.png.import
├── card_back.png
├── card_back.png.import
├── card_big_attack.png
├── card_big_attack.png.import
├── card_block.png
├── card_block.png.import
├── card_clubs_02.png
├── card_clubs_02.png.import
├── card_clubs_03.png
├── card_clubs_03.png.import
├── card_clubs_04.png
├── card_clubs_04.png.import
├── card_clubs_05.png
├── card_clubs_05.png.import
├── card_clubs_06.png
├── card_clubs_06.png.import
├── card_clubs_07.png
├── card_clubs_07.png.import
├── card_clubs_08.png
├── card_clubs_08.png.import
├── card_clubs_09.png
├── card_clubs_09.png.import
├── card_clubs_10.png
├── card_clubs_10.png.import
├── card_clubs_A.png
├── card_clubs_A.png.import
├── card_clubs_J.png
├── card_clubs_J.png.import
├── card_clubs_K.png
├── card_clubs_K.png.import
├── card_clubs_Q.png
├── card_clubs_Q.png.import
├── card_diamonds_02.png
├── card_diamonds_02.png.import
├── card_diamonds_03.png
├── card_diamonds_03.png.import
├── card_diamonds_04.png
├── card_diamonds_04.png.import
├── card_diamonds_05.png
├── card_diamonds_05.png.import
├── card_diamonds_06.png
├── card_diamonds_06.png.import
├── card_diamonds_07.png
├── card_diamonds_07.png.import
├── card_diamonds_08.png
├── card_diamonds_08.png.import
├── card_diamonds_09.png
├── card_diamonds_09.png.import
├── card_diamonds_10.png
├── card_diamonds_10.png.import
├── card_diamonds_A.png
├── card_diamonds_A.png.import
├── card_diamonds_J.png
├── card_diamonds_J.png.import
├── card_diamonds_K.png
├── card_diamonds_K.png.import
├── card_diamonds_Q.png
├── card_diamonds_Q.png.import
├── card_dice.png
├── card_dice.png.import
├── card_empty.png
├── card_empty.png.import
├── card_hearts_02.png
├── card_hearts_02.png.import
├── card_hearts_03.png
├── card_hearts_03.png.import
├── card_hearts_04.png
├── card_hearts_04.png.import
├── card_hearts_05.png
├── card_hearts_05.png.import
├── card_hearts_06.png
├── card_hearts_06.png.import
├── card_hearts_07.png
├── card_hearts_07.png.import
├── card_hearts_08.png
├── card_hearts_08.png.import
├── card_hearts_09.png
├── card_hearts_09.png.import
├── card_hearts_10.png
├── card_hearts_10.png.import
├── card_hearts_A.png
├── card_hearts_A.png.import
├── card_hearts_J.png
├── card_hearts_J.png.import
├── card_hearts_K.png
├── card_hearts_K.png.import
├── card_hearts_Q.png
├── card_hearts_Q.png.import
├── card_joker_black.png
├── card_joker_black.png.import
├── card_joker_red.png
├── card_joker_red.png.import
├── card_shake.png
├── card_shake.png.import
├── card_spades_02.png
├── card_spades_02.png.import
├── card_spades_03.png
├── card_spades_03.png.import
├── card_spades_04.png
├── card_spades_04.png.import
├── card_spades_05.png
├── card_spades_05.png.import
├── card_spades_06.png
├── card_spades_06.png.import
├── card_spades_07.png
├── card_spades_07.png.import
├── card_spades_08.png
├── card_spades_08.png.import
├── card_spades_09.png
├── card_spades_09.png.import
├── card_spades_10.png
├── card_spades_10.png.import
├── card_spades_A.png
├── card_spades_A.png.import
├── card_spades_J.png
├── card_spades_J.png.import
├── card_spades_K.png
├── card_spades_K.png.import
├── card_spades_Q.png
├── card_spades_Q.png.import
├── enemy_bee.png
├── enemy_bee.png.import
├── enemy_crab.png
├── enemy_crab.png.import
├── screenshot.png
├── screenshot.png.import
├── screenshot2.png
├── screenshot2.png.import
├── white-circle.png
└── white-circle.png.import
├── example
├── example.gd
├── example.tscn
├── example__card_collection.json
├── example__card_data.gd
├── example__card_database.json
├── example__card_ui.gd
├── example__card_ui.tscn
├── example__dropzone__discard.gd
└── example__dropzone__play_by_suit.gd
├── example_2
├── example.gd
├── example.tscn
├── example__card_collection.json
├── example__card_data.gd
├── example__card_data__attack.gd
├── example__card_data__attack__big_axe.gd
├── example__card_data__block.gd
├── example__card_data__shake.gd
├── example__card_database.json
├── example__card_ui.gd
├── example__card_ui.tscn
├── example__dropzone__enemy.gd
├── example__dropzone__non-attack.gd
└── example__dropzone__upgrade.gd
├── icon.svg
├── icon.svg.import
└── project.godot
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize EOL for all files that Git considers text files.
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Godot 4+ specific ignores
4 | .godot/
5 |
6 | # Godot-specific ignores
7 | .import/
8 | export.cfg
9 | export_presets.cfg
10 |
11 | # Imported translations (automatically generated from CSV files)
12 | *.translation
13 |
14 | # Mono-specific ignores
15 | .mono/
16 | data_*/
17 | mono_crash.*.json
18 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Andrew Vickerman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Simple CardPileUI
2 |
3 | This plugin provides a flexible and customizable card pile user interface for the Godot game engine. It is designed to handle various card-related functionalities including drawing, discarding, and managing different piles.
4 |
5 | 
6 |
7 | 
8 |
9 | ## Table of Contents
10 |
11 | - [Features](#features)
12 | - [Installation](#installation)
13 | - [Getting Started](#getting-started)
14 | - [Concepts](#concepts)
15 | - [Documentation](#documentation)
16 | - [CardPileUI Properties](#card-pile-ui-properties)
17 | - [CardPileUI Methods](#card-pile-ui-methods)
18 | - [CardPileUI Signals](#card-pile-ui-signals)
19 | - [CardDropzone Methods](#card-dropzone-methods)
20 | - [CardDropzone Properties](#card-dropzone-properties)
21 | - [Thanks](#thanks)
22 | - [Changelog](#change-log)
23 |
24 |
25 |
26 | ## Features:
27 | - ⚙️ **Configurable Parameters** : Easily customize the behavior of the card pile UI using exported parameters, such as card speed, maximum hand size, display and more.
28 | - 📂 **Simple JSON Loading**: Load card data from a JSON file to populate the card pile.
29 | - 🗃️ **Intuitive Pile Management**: Manage different card piles, including draw, hand, discard.
30 | - 🎉 **Fun UI Elements**: Card interaction is snappy, responsive, and fun out-of-the box, allowing you to skip the boring setup and get started with your game.
31 |
32 |
33 | ## Installation
34 |
35 | 1. Download latest release
36 | 2. Unpack the addons/simple_card_pile_ui folder into your /addons folder within the Godot project
37 | 3. Enable this addon within the Godot settings: Project > Project Settings > Plugins
38 |
39 |
40 | ## Getting Started
41 |
42 | 1. Create a script extending `CardUIData` that describes any custom properties your card will need. You can utlize inheritance here as needed.
43 | 2. Create a JSON database of your card information ([example](#json-database)).
44 | 3. Create a JSON collection of your cards ([example](#json-collection)).
45 | 4. Create a new scene with root type `CardUI` - this is the object that displays in game. This object must have 2 TextureRect as children named `Frontface` and `Backface`. It will warn you if configured incorrectly.
46 | 5. Add a `CardPileUI` node to your game scene and configure its settings.
47 | 6. Begin building your game with the provided methods and signals.
48 |
49 |
50 | ## Concepts
51 | **Card Pile UI** - this is the manager for all cards in a collection.
52 |
53 | **Card UI Data** - this represents any custom data that your cards use.
54 |
55 | **Card UI** - this is the in-game representation of your card data, this holds and displays **Card UI Data**
56 |
57 | **Card Dropzone** - this is a designated space where if a player drops a card something occurs. It can also stack cards, removing them from the standard draw/hand/discard piles.
58 |
59 | **Draw Pile** - this is a pile containing cards that a player draws from during the game.
60 |
61 | **Hand Pile** - this is a pile containing cards currently held by a player.
62 |
63 | **Discard Pile** - this is a pile containing cards that have been discarded during the game.
64 |
65 | **Card Removal from Game**, this occurs when a card is permanently removed from play
66 |
67 |
68 | ## Documentation
69 |
70 |
71 | ### CardPileUI Properties
72 |
73 | | Type | Name | Default | Description
74 | |-|-|-|-
75 | | *Top Level* |-|-|-
76 | | String | json_card_database_path | null | Specifies the file path for the JSON database containing card information
77 | | String | json_card_collection_path | null | Defines the file path for the JSON file containing the card collection
78 | | PackedScene | extended_card_ui | null | A PackedScene for your extended `CardUI` scene.
79 | | *Pile Positions* |-|-|-
80 | | Vector2 | draw_pile_position | Vector2(20, 460) | Determines the position of the draw pile on the game screen.
81 | | Vector2 | hand_pile_position | Vector2(630, 460) | Determines the position of the hand pile on the game screen.
82 | | Vector2 | discard_pile_position | Vector2(1250, 460) | Determines the position of the discard pile on the game screen.
83 | | *Pile displays* |-|-|-
84 | | int | stack_display_gap | 8 | Sets the gap between displayed cards in a stack.
85 | | int | max_stack_display | 6 | Defines the maximum number of cards displayed in a stack.
86 | | *Cards* |-|-|-
87 | | float | card_speed | 0.1 | Sets the speed at which cards move within the game.
88 | | *Draw Pile* |-|-|-
89 | | bool | click_draw_pile_to_draw | true | Clicking the draw pile will trigger the `draw` method
90 | | bool | cant_draw_at_hand_limit | true | If hand is at max capacity, then the `draw` method is ignored. Otherwise cards that are drawn are immediately discarded
91 | | bool | shuffle_discard_on_empty_draw | true | Enables automatic shuffling of the discard pile into the draw pile when the draw pile is empty.
92 | | CardPileUI.PilesCardLayouts | draw_pile_layout | CardPileUI.PilesCardLayouts.up | Determines which direction the pile stacks
93 | | *Hand Pile* |-|-|-
94 | | bool | hand_enabled | true | Enables or disables the hand pile functionality.
95 | | bool | hand_face_up | true | Determines whether cards in the hand pile are face up or face down.
96 | | int | max_hand_size | 10 | Sets the maximum size of the hand. If exceeded, additional cards are immediately discarded.
97 | | int | max_hand_spread | 700 | Specifies the maximum spread distance of cards in the hand.
98 | | int | card_ui_hover_distance | 30 | Defines the distance at which the card UI responds to hover actions.
99 | | Curve | hand_rotation_curve | null | A curve for hand rotation. This works best as a 2-point line, rising linearly from -Y to +Y.
100 | | Curve | hand_vertical_curve | null | A curve for vertical hand movement. This works best as a 3-point line, easing in/out from 0 to Y to 0
101 | | *Discard Pile* |-|-|-
102 | | bool | discard_face_up | true | Determines whether cards in the discard pile are face up or face down.
103 | | CardPileUI.PilesCardLayouts | discard_pile_layout | CardPileUI.PilesCardLayouts.up | Determines which direction the pile stacks
104 |
105 |
106 | ### CardPileUI Methods
107 |
108 | | Return | Name | Description |
109 | |---------|------------------------------------------|------------------------------------------------------------|
110 | | void | create_card_in_dropzone(nice_name : String, dropzone : CardDropzone) | Creates a new instance of the named card in the given dropzone|
111 | | void | create_card_in_pile(nice_name : String, pile_to_add_to : Piles) | Creates a new instance of the named card in the given pile |
112 | | void | discard_at(index : int) | Perform a typical "discard" action, moving card from the hand to the discard pile|
113 | | void | draw(amount : int = 1) | Perform a typical "draw" action, moving cards from the draw pile to the hand|
114 | | bool | hand_is_at_max_capacity() | Checks if hand is at max_capacity (any more cards added to it will be discarded)|
115 | | CardDropzone | get_card_dropzone(card : CardUI ) | Returns the current dropzone of a given card
116 | | CardUI | get_card_in_pile_at(pile : Piles, index : int) | Returns a piles card at a given index|
117 | | Array[CardUI] | get_cards_in_pile(pile : Piles) | Returns an array of cards from the specified pile|
118 | | int | get_card_pile_size(pile : Piles) | Returns the number of cards in a given pile|
119 | | void | remove_card_from_game(card : CardUI) | Removes the specified card from the game|
120 | | void | reset() | Resets all cards to the collection's initial state |
121 | | void | set_card_dropzone(card : CardUI, dropzone : CardDropzone) | Moves the specified card to the designated CardDropzone|
122 | | void | set_card_pile(card : CardUI, pile : Piles) | Moves the specified card to the designated pile|
123 | | void | sort_hand(sort_func : Callable) | Sort the hand using a custom function|
124 |
125 |
126 | ## CardPileUI Signals
127 |
128 | | Signal | Description |
129 | |-|-|
130 | | draw_pile_updated | Indicates that the draw pile has been updated |
131 | | hand_pile_updated | Indicates that the hand pile has been updated |
132 | | discard_pile_updated | Indicates that the discard pile has been updated |
133 | | card_removed_from_dropzone(dropzone : CardDropzone, card: CardUI) | Signals the removal of a card from the specified CardDropzone|
134 | | card_added_to_dropzone(dropzone : CardDropzone, card: CardUI) | Signals the addition of a card to the specified CardDropzone|
135 | | card_hovered(card: CardUI) | Indicates when a card is being hovered over |
136 | | card_unhovered(card: CardUI) | Indicates when a card is no longer being hovered over |
137 | | card_clicked(card: CardUI) | Signals a click event on a card |
138 | | card_dropped(card: CardUI) | Signals when a clicked card has been dropped |
139 | | card_removed_from_game(card: CardUI) | Signals the removal of a card from the overall game |
140 |
141 | ---
142 |
143 |
144 | ### CardDropzone Properties
145 | | Type | Name | Default | Description
146 | |-|-|-|-
147 | | CardPileUI | card_pile_ui | null |Path to the dropzone's managing CardPileUI node |
148 | | bool | card_ui_face_up | true | Indicates if piled cards should be face up |
149 | | int | stack_display_gap | 8 | Sets the gap between displayed cards in a stack.
150 | | int | max_stack_display | 6 | Defines the maximum number of cards displayed in a stack.
151 | | CardPileUI.PilesCardLayouts | discard_pile_layout | CardPileUI.PilesCardLayouts.up | Determines which direction the pile stacks
152 |
153 |
154 | ### CardDropzone Methods
155 | | Return | Name | Description |
156 | |-|-|-
157 | | bool | can_drop_card(card_ui : CardUI) | This determines if a card can be dropped on this dropzone. Note - this is only automatically checked when dropping a card, not programatically moving one.
158 | | void | card_ui_dropped(card_ui : CardUI) | This triggers when a card has been added or dropped on this dropzone.
159 | | CardUI | get_card_at(index : int) | Returns the card at index
160 | | Array[CardUI] | get_held_cards() | Returns an array of all held cards
161 | | CardUI | get_top_card() | Returns the top card, which is the same thing as the last one in the array
162 | | int | get_total_held_cards() | Returns the total number of cards piled here
163 | | bool | is_holding(card : CardUI) | Returns true if this card is piled here
164 |
165 |
166 | ### Card Database JSON
167 | The Card Database serves as the foundation for all card data in your game.
168 |
169 | Minimally viable card database:
170 | ```
171 | [
172 | {
173 | "nice_name": "My Card",
174 | "texture_path": "res://path/to/card_front.png",
175 | "backface_texture_path": "res://path/to/card_back.png",
176 | "resource_script_path": "res://path/to/card_data.gd"
177 | }
178 | ]
179 | ```
180 |
181 | | Name | Description |
182 | |-|-
183 | | nice_name | A unique name for this card
184 | | texture_path | Filepath to the card's front texture
185 | | backface_texture_path | Filepath to the card's back texture
186 | | resource_script_path | Filepath to the card's resource script. If you don't need any custom functionality, you can point this to `res://addons/simple_card_pile_ui/card_ui_data.gd`
187 | | * | You can add more data as needed
188 |
189 |
190 |
191 | ### Card Collection JSON
192 | This represents the cards that begin in the draw pile.
193 |
194 | Example:
195 | ```
196 | [ "My Card", "My Card", "My Other Card", "My Other Card" ]
197 | ```
198 |
199 | ## To Do List
200 | - Add support for multiple hands to use the same card pile
201 | - Add more shuffle methods
202 | - Add more sort methods
203 | - Document new properties/methods into the read me
204 | - Add different icons for dropzones/debugger
205 | - Add different layout options for dropzones
206 |
207 |
208 | ## Thanks to
209 | - https://andrewvickerman.com
210 | - https://www.kenney.nl
211 | - https://linktr.ee/bramwellgames
212 | - https://www.reddit.com/r/godot
213 |
214 | ---
215 |
216 |
217 |
218 | ## Changelog
219 |
220 | ### 1.1.0 (2024-02-02)
221 | - Updates CardUI to work better
222 |
223 | ### 1.0.1 (2024-02-01)
224 | - Removes lerp when clicking a card
225 | - Fixes dropzone top card hover triggering when a card is clicked
226 | - Adds layout directions to piles and dropzones
227 |
228 | ### 1.0.0 (2024-01-31)
229 | - Initial release
230 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_dropzone.gd:
--------------------------------------------------------------------------------
1 | class_name CardDropzone extends Control
2 |
3 | @export var card_pile_ui : CardPileUI
4 | @export var stack_display_gap := 8
5 | @export var max_stack_display := 6
6 | @export var card_ui_face_up := true
7 | @export var can_drag_top_card := true
8 | @export var held_card_direction := true
9 | @export var layout : CardPileUI.PilesCardLayouts = CardPileUI.PilesCardLayouts.up
10 |
11 | var _held_cards := []
12 |
13 | func card_ui_dropped(card_ui : CardUI):
14 | if card_pile_ui:
15 | card_pile_ui.set_card_dropzone(card_ui, self)
16 |
17 | func can_drop_card(card_ui : CardUI):
18 | return visible
19 |
20 | func get_top_card():
21 | if _held_cards.size() > 0:
22 | return _held_cards[_held_cards.size() - 1]
23 | return null
24 |
25 | func get_card_at(index):
26 | if _held_cards.size() > index:
27 | return _held_cards[index]
28 | return null
29 |
30 | func get_total_held_cards():
31 | return _held_cards.size()
32 |
33 | func is_holding(card_ui):
34 | return _held_cards.find(card_ui) != -1
35 |
36 | func get_held_cards():
37 | return _held_cards.duplicate() # duplicate to allow the user to mess with the array without messing with this one!!!
38 |
39 | func add_card(card_ui):
40 | _held_cards.push_back(card_ui)
41 | #_update_target_positions()
42 |
43 | func remove_card(card_ui):
44 | _held_cards = _held_cards.filter(func(c): return c != card_ui)
45 | #_update_target_positions()
46 |
47 | func _update_target_positions():
48 | for i in _held_cards.size():
49 | var card_ui = _held_cards[i]
50 | var target_pos = position
51 | if layout == CardPileUI.PilesCardLayouts.up:
52 | if i <= max_stack_display:
53 | target_pos.y -= i * stack_display_gap
54 | else:
55 | target_pos.y -= stack_display_gap * max_stack_display
56 | elif layout == CardPileUI.PilesCardLayouts.down:
57 | if i <= max_stack_display:
58 | target_pos.y += i * stack_display_gap
59 | else:
60 | target_pos.y += stack_display_gap * max_stack_display
61 | elif layout == CardPileUI.PilesCardLayouts.right:
62 | if i <= max_stack_display:
63 | target_pos.x += i * stack_display_gap
64 | else:
65 | target_pos.x += stack_display_gap * max_stack_display
66 | elif layout == CardPileUI.PilesCardLayouts.left:
67 | if i <= max_stack_display:
68 | target_pos.x -= i * stack_display_gap
69 | else:
70 | target_pos.x -= stack_display_gap * max_stack_display
71 | if card_ui_face_up:
72 | card_ui.set_direction(Vector2.UP)
73 | else:
74 | card_ui.set_direction(Vector2.DOWN)
75 | if card_ui.is_clicked:
76 | card_ui.z_index = 3000 + i
77 | else:
78 | card_ui.z_index = i
79 | card_ui.move_to_front() # must also do this to account for INVISIBLE INTERACTION ORDER
80 | card_ui.target_position = target_pos
81 |
82 | func _process(_delta):
83 | _update_target_positions()
84 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_pile_ui.gd:
--------------------------------------------------------------------------------
1 | class_name CardPileUI extends Control
2 |
3 | signal draw_pile_updated
4 | signal hand_pile_updated
5 | signal discard_pile_updated
6 | signal card_removed_from_dropzone(dropzone : CardDropzone, card: CardUI)
7 | signal card_added_to_dropzone(dropzone : CardDropzone, card: CardUI)
8 | signal card_hovered(card: CardUI)
9 | signal card_unhovered(card: CardUI)
10 | signal card_clicked(card: CardUI)
11 | signal card_dropped(card: CardUI)
12 | signal card_removed_from_game(card: CardUI)
13 |
14 | enum Piles {
15 | draw_pile,
16 | hand_pile,
17 | discard_pile
18 | }
19 |
20 | enum PilesCardLayouts {
21 | up,
22 | left,
23 | right,
24 | down
25 | }
26 |
27 | @export_file("*.json") var json_card_database_path : String
28 | @export_file("*.json") var json_card_collection_path : String
29 | @export var extended_card_ui : PackedScene
30 |
31 | @export_group("Pile Positions")
32 | @export var draw_pile_position = Vector2(20, 460)
33 | @export var hand_pile_position = Vector2(630, 460)
34 | @export var discard_pile_position = Vector2(1250, 460)
35 |
36 | @export_group("Pile Displays")
37 | @export var stack_display_gap := 8
38 | @export var max_stack_display := 6
39 |
40 |
41 | @export_group("Cards")
42 | @export var card_return_speed := 0.15
43 |
44 | @export_group("Draw Pile")
45 | @export var click_draw_pile_to_draw := true
46 | @export var cant_draw_at_hand_limit := true
47 | @export var shuffle_discard_on_empty_draw := true
48 | @export var draw_pile_layout := PilesCardLayouts.up
49 |
50 | @export_group("Hand Pile")
51 | @export var hand_enabled := true
52 | @export var hand_face_up := true
53 | @export var max_hand_size := 10 # if any more cards are added to the hand, they are immediately discarded
54 | @export var max_hand_spread := 700
55 | @export var card_ui_hover_distance := 30
56 | @export var drag_when_clicked := true
57 | ## This works best as a 2-point linear rise from -X to +X
58 | @export var hand_rotation_curve : Curve
59 | ## This works best as a 3-point ease in/out from 0 to X to 0
60 | @export var hand_vertical_curve : Curve
61 | #@export var drag_sort_enabled := true this would be nice to have, but based on how dragging works I'm not 100% sure how to handle it, possibly disable mouse input on the card being dragged?
62 |
63 | @export_group("Discard Pile")
64 | @export var discard_face_up := true
65 | @export var discard_pile_layout := PilesCardLayouts.up
66 |
67 |
68 | var card_database := [] # an array of JSON `Card` data
69 | var card_collection := [] # an array of JSON `Card` data
70 |
71 | var _draw_pile := [] # an array of `CardUI`s
72 | var _hand_pile := [] # an array of `CardUI`s
73 | var _discard_pile := [] # an array of `CardUI`s
74 |
75 |
76 | var spread_curve := Curve.new()
77 |
78 |
79 |
80 | # this is really the only way we should move cards between piles
81 | func set_card_pile(card : CardUI, pile : Piles):
82 | _maybe_remove_card_from_any_piles(card)
83 | _maybe_remove_card_from_any_dropzones(card)
84 | if pile == Piles.discard_pile:
85 | _discard_pile.push_back(card)
86 | emit_signal("discard_pile_updated")
87 | if pile == Piles.hand_pile:
88 | _hand_pile.push_back(card)
89 | emit_signal("hand_pile_updated")
90 | if pile == Piles.draw_pile:
91 | _draw_pile.push_back(card)
92 | emit_signal("draw_pile_updated")
93 | reset_target_positions()
94 |
95 | func set_card_dropzone(card : CardUI, dropzone : CardDropzone):
96 | _maybe_remove_card_from_any_piles(card)
97 | _maybe_remove_card_from_any_dropzones(card)
98 | dropzone.add_card(card)
99 | emit_signal("card_added_to_dropzone", dropzone, card)
100 | reset_target_positions()
101 |
102 | func remove_card_from_game(card : CardUI):
103 | _maybe_remove_card_from_any_piles(card)
104 | _maybe_remove_card_from_any_dropzones(card)
105 | emit_signal("card_removed_from_game", card)
106 | card.queue_free()
107 | reset_target_positions()
108 |
109 | func is_hand_enabled():
110 | return hand_enabled
111 |
112 | func get_cards_in_pile(pile : Piles):
113 | if pile == Piles.discard_pile:
114 | return _discard_pile.duplicate() # duplicating these so the end user can manipulate the returned array without touching the originals (like doing a forEach remove)
115 | elif pile == Piles.hand_pile:
116 | return _hand_pile.duplicate()
117 | elif pile == Piles.draw_pile:
118 | return _draw_pile.duplicate()
119 | return []
120 |
121 | func get_card_in_pile_at(pile : Piles, index : int):
122 | if pile == Piles.discard_pile and _discard_pile.size() > index:
123 | return _discard_pile[index]
124 | elif pile == Piles.draw_pile and _draw_pile.size() > index:
125 | return _draw_pile[index]
126 | elif pile == Piles.hand_pile and _hand_pile.size() > index:
127 | return _hand_pile[index]
128 | return null
129 |
130 | func get_card_pile_size(pile : Piles):
131 | if pile == Piles.discard_pile:
132 | return _discard_pile.size()
133 | elif pile == Piles.hand_pile:
134 | return _hand_pile.size()
135 | elif pile == Piles.draw_pile:
136 | return _draw_pile.size()
137 | return 0
138 |
139 |
140 |
141 | func _maybe_remove_card_from_any_piles(card : CardUI):
142 | if _hand_pile.find(card) != -1:
143 | _hand_pile.erase(card)
144 | emit_signal("hand_pile_updated")
145 | elif _draw_pile.find(card) != -1:
146 | _draw_pile.erase(card)
147 | emit_signal("draw_pile_updated")
148 | elif _discard_pile.find(card) != -1:
149 | _discard_pile.erase(card)
150 | emit_signal("discard_pile_updated")
151 |
152 |
153 |
154 | func create_card_in_dropzone(nice_name : String, dropzone : CardDropzone):
155 | var card_ui = _create_card_ui(_get_card_data_by_nice_name(nice_name))
156 | card_ui.position = dropzone.position
157 | set_card_dropzone(card_ui, dropzone)
158 |
159 | func create_card_in_pile(nice_name : String, pile_to_add_to : Piles):
160 | var card_ui = _create_card_ui(_get_card_data_by_nice_name(nice_name))
161 | if pile_to_add_to == Piles.hand_pile:
162 | card_ui.position = hand_pile_position
163 | if pile_to_add_to == Piles.discard_pile:
164 | card_ui.position = discard_pile_position
165 | if pile_to_add_to == Piles.draw_pile:
166 | card_ui.position = draw_pile_position
167 | set_card_pile(card_ui, pile_to_add_to)
168 |
169 |
170 | func _maybe_remove_card_from_any_dropzones(card : CardUI):
171 | var all_dropzones := []
172 | _get_dropzones(get_tree().get_root(), "CardDropzone", all_dropzones)
173 | for dropzone in all_dropzones:
174 | if dropzone.is_holding(card):
175 | dropzone.remove_card(card)
176 | emit_signal("card_removed_from_dropzone", dropzone, card)
177 |
178 | func get_card_dropzone(card : CardUI):
179 | var all_dropzones := []
180 | _get_dropzones(get_tree().get_root(), "CardDropzone", all_dropzones)
181 | for dropzone in all_dropzones:
182 | if dropzone.is_holding(card):
183 | return dropzone
184 | return null
185 |
186 |
187 | func _get_dropzones(node: Node, className : String, result : Array) -> void:
188 | if node is CardDropzone:
189 | result.push_back(node)
190 | for child in node.get_children():
191 | _get_dropzones(child, className, result)
192 |
193 |
194 | func load_json_path():
195 | card_database = _load_json_cards_from_path(json_card_database_path)
196 | card_collection = _load_json_cards_from_path(json_card_collection_path)
197 |
198 | func _load_json_cards_from_path(path : String):
199 | var found = []
200 | if path:
201 | var json_as_text = FileAccess.get_file_as_string(path)
202 | var json_as_dict = JSON.parse_string(json_as_text)
203 | if json_as_dict:
204 | for c in json_as_dict:
205 | found.push_back(c)
206 | return found
207 |
208 | func reset():
209 | _reset_card_collection()
210 |
211 | func _reset_card_collection():
212 | for child in get_children():
213 | _maybe_remove_card_from_any_piles(child)
214 | _maybe_remove_card_from_any_dropzones(child)
215 | remove_card_from_game(child)
216 | for nice_name in card_collection:
217 | var card_data = _get_card_data_by_nice_name(nice_name)
218 | var card_ui = _create_card_ui(card_data)
219 | _draw_pile.push_back(card_ui)
220 | _draw_pile.shuffle()
221 | _set_draw_pile_target_positions(true)
222 | emit_signal("draw_pile_updated")
223 | emit_signal("hand_pile_updated")
224 | emit_signal("discard_pile_updated")
225 |
226 | func _ready():
227 | size = Vector2.ZERO
228 | spread_curve.add_point(Vector2(0, -1), 0, 0, Curve.TANGENT_LINEAR, Curve.TANGENT_LINEAR)
229 | spread_curve.add_point(Vector2(1, 1), 0, 0, Curve.TANGENT_LINEAR, Curve.TANGENT_LINEAR)
230 | load_json_path()
231 | _reset_card_collection()
232 | reset_target_positions()
233 |
234 | func reset_target_positions():
235 | _set_draw_pile_target_positions()
236 | _set_hand_pile_target_positions()
237 | _set_discard_pile_target_positions()
238 |
239 | func _set_draw_pile_target_positions(instantly_move = false):
240 | for i in _draw_pile.size():
241 | var card_ui = _draw_pile[i]
242 | var target_pos = draw_pile_position
243 | if draw_pile_layout == CardPileUI.PilesCardLayouts.up:
244 | if i <= max_stack_display:
245 | target_pos.y -= i * stack_display_gap
246 | else:
247 | target_pos.y -= stack_display_gap * max_stack_display
248 | elif draw_pile_layout == CardPileUI.PilesCardLayouts.down:
249 | if i <= max_stack_display:
250 | target_pos.y += i * stack_display_gap
251 | else:
252 | target_pos.y += stack_display_gap * max_stack_display
253 | elif draw_pile_layout == CardPileUI.PilesCardLayouts.right:
254 | if i <= max_stack_display:
255 | target_pos.x += i * stack_display_gap
256 | else:
257 | target_pos.x += stack_display_gap * max_stack_display
258 | elif draw_pile_layout == CardPileUI.PilesCardLayouts.left:
259 | if i <= max_stack_display:
260 | target_pos.x -= i * stack_display_gap
261 | else:
262 | target_pos.x -= stack_display_gap * max_stack_display
263 | card_ui.z_index = i
264 | card_ui.rotation = 0
265 | card_ui.target_position = target_pos
266 | card_ui.set_direction(Vector2.DOWN)
267 | if instantly_move:
268 | card_ui.position = target_pos
269 |
270 | func _set_hand_pile_target_positions():
271 | for i in _hand_pile.size():
272 | var card_ui = _hand_pile[i]
273 | card_ui.move_to_front()
274 | var hand_ratio = 0.5
275 | if _hand_pile.size() > 1:
276 | hand_ratio = float(i) / float(_hand_pile.size() - 1)
277 | var target_pos = hand_pile_position
278 | var card_spacing = max_hand_spread / (_hand_pile.size() + 1)
279 | target_pos.x += (i + 1) * card_spacing - max_hand_spread / 2.0
280 | if hand_vertical_curve:
281 | target_pos.y -= hand_vertical_curve.sample(hand_ratio)
282 | if hand_rotation_curve:
283 | card_ui.rotation = deg_to_rad(hand_rotation_curve.sample(hand_ratio))
284 | if hand_face_up:
285 | card_ui.set_direction(Vector2.UP)
286 | else:
287 | card_ui.set_direction(Vector2.DOWN)
288 | card_ui.target_position = target_pos
289 | while _hand_pile.size() > max_hand_size:
290 | set_card_pile(_hand_pile[_hand_pile.size() - 1], Piles.discard_pile)
291 | _reset_hand_pile_z_index()
292 |
293 | func _set_discard_pile_target_positions():
294 | for i in _discard_pile.size():
295 | var card_ui = _discard_pile[i]
296 | var target_pos = discard_pile_position
297 | if discard_pile_layout == CardPileUI.PilesCardLayouts.up:
298 | if i <= max_stack_display:
299 | target_pos.y -= i * stack_display_gap
300 | else:
301 | target_pos.y -= stack_display_gap * max_stack_display
302 | elif draw_pile_layout == CardPileUI.PilesCardLayouts.down:
303 | if i <= max_stack_display:
304 | target_pos.y += i * stack_display_gap
305 | else:
306 | target_pos.y += stack_display_gap * max_stack_display
307 | elif discard_pile_layout == CardPileUI.PilesCardLayouts.right:
308 | if i <= max_stack_display:
309 | target_pos.x += i * stack_display_gap
310 | else:
311 | target_pos.x += stack_display_gap * max_stack_display
312 | elif discard_pile_layout == CardPileUI.PilesCardLayouts.left:
313 | if i <= max_stack_display:
314 | target_pos.x -= i * stack_display_gap
315 | else:
316 | target_pos.x -= stack_display_gap * max_stack_display
317 | if discard_face_up:
318 | card_ui.set_direction(Vector2.UP)
319 | else:
320 | card_ui.set_direction(Vector2.DOWN)
321 | card_ui.z_index = i
322 | card_ui.rotation = 0
323 | card_ui.target_position = target_pos
324 |
325 | # called by CardUI
326 | func reset_card_ui_z_index():
327 | for i in _draw_pile.size():
328 | var card_ui = _draw_pile[i]
329 | card_ui.z_index = i
330 | for i in _discard_pile.size():
331 | var card_ui = _discard_pile[i]
332 | card_ui.z_index = i
333 | _reset_hand_pile_z_index()
334 |
335 | func _reset_hand_pile_z_index():
336 | for i in _hand_pile.size():
337 | var card_ui = _hand_pile[i]
338 | card_ui.z_index = 1000 + i
339 | card_ui.move_to_front()
340 | if card_ui.mouse_is_hovering:
341 | card_ui.z_index = 2000 + i
342 | if card_ui.is_clicked:
343 | card_ui.z_index = 3000 + i
344 |
345 |
346 | func is_card_ui_in_hand(card_ui):
347 | return _hand_pile.filter(func(c): return c == card_ui).size()
348 |
349 | func is_any_card_ui_clicked():
350 | for card_ui in _hand_pile:
351 | if card_ui.is_clicked:
352 | return true
353 | var all_dropzones := []
354 | _get_dropzones(get_tree().get_root(), "CardDropzone", all_dropzones)
355 | for dropzone in all_dropzones:
356 | for card in dropzone.get_held_cards():
357 | if card.is_clicked:
358 | return true
359 | return false
360 |
361 | #public function to try and draw a card
362 | func draw(num_cards := 1):
363 | for i in num_cards:
364 | if _hand_pile.size() >= max_hand_size and cant_draw_at_hand_limit:
365 | continue
366 | if _draw_pile.size():
367 | set_card_pile(_draw_pile[_draw_pile.size() - 1], Piles.hand_pile)
368 | elif shuffle_discard_on_empty_draw and _discard_pile.size():
369 | var dupe_discard = _discard_pile.duplicate()
370 | for c in dupe_discard: # you can't remove things from the thing you loop!!
371 | set_card_pile(c, Piles.draw_pile)
372 | _draw_pile.shuffle()
373 | set_card_pile(_draw_pile[_draw_pile.size() - 1], Piles.hand_pile)
374 | reset_target_positions()
375 |
376 | func hand_is_at_max_capacity():
377 | return _hand_pile.size() >= max_hand_size
378 |
379 | func sort_hand(sort_func):
380 | _hand_pile.sort_custom(sort_func)
381 | reset_target_positions()
382 |
383 | func _create_card_ui(json_data : Dictionary):
384 | var card_ui = extended_card_ui.instantiate()
385 | card_ui.frontface_texture = json_data.texture_path
386 | card_ui.backface_texture = json_data.backface_texture_path
387 | card_ui.return_speed = card_return_speed
388 | card_ui.hover_distance = card_ui_hover_distance
389 | card_ui.drag_when_clicked = drag_when_clicked
390 |
391 | card_ui.card_data = ResourceLoader.load(json_data.resource_script_path).new()
392 | for key in json_data.keys():
393 | if key != "texture_path" and key != "backface_texture_path" and key != "resource_script_path":
394 | card_ui.card_data[key] = json_data[key]
395 | card_ui.connect("card_hovered", func(c_ui): emit_signal("card_hovered", c_ui))
396 | card_ui.connect("card_unhovered", func(c_ui): emit_signal("card_unhovered", c_ui))
397 | card_ui.connect("card_clicked", func(c_ui): emit_signal("card_clicked", c_ui))
398 | card_ui.connect("card_dropped", func(c_ui): emit_signal("card_dropped", c_ui))
399 | add_child(card_ui)
400 | return card_ui
401 |
402 |
403 | func _get_card_data_by_nice_name(nice_name : String):
404 | for json_data in card_database:
405 | if json_data.nice_name == nice_name:
406 | return json_data
407 | return null
408 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_pile_ui_debugger.gd:
--------------------------------------------------------------------------------
1 | class_name CardPileUIDebugger extends RichTextLabel
2 |
3 | @export var card_pile_ui : CardPileUI
4 |
5 |
6 | func _ready():
7 | text += "Signal Debugger:\n"
8 | card_pile_ui.connect("draw_pile_updated", func(): text += "Draw Pile Updated\n")
9 | card_pile_ui.connect("hand_pile_updated", func(): text += "Hand Pile Updated\n")
10 | card_pile_ui.connect("discard_pile_updated", func(): text += "Discard Pile Updated\n")
11 | card_pile_ui.connect("card_removed_from_dropzone", func(_dropzone, _card): text += "Card Removed From Dropzone\n")
12 | card_pile_ui.connect("card_added_to_dropzone", func(_dropzone, _card): text += "Card Added To Dropzone\n")
13 | card_pile_ui.connect("card_hovered", func(card): text += "%s hovered\n" % card.card_data.nice_name)
14 | card_pile_ui.connect("card_unhovered", func(card): text += "%s unhovered\n" % card.card_data.nice_name)
15 | card_pile_ui.connect("card_clicked", func(card): text += "%s clicked\n" % card.card_data.nice_name)
16 | card_pile_ui.connect("card_dropped", func(card): text += "%s dropped\n" % card.card_data.nice_name)
17 | card_pile_ui.connect("card_removed_from_game", func(card): text += "%s removed from game\n" % card.card_data.nice_name)
18 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_ui.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name CardUI extends Control
3 |
4 |
5 | signal card_hovered(card: CardUI)
6 | signal card_unhovered(card: CardUI)
7 | signal card_clicked(card: CardUI)
8 | signal card_dropped(card: CardUI)
9 |
10 |
11 | @onready var frontface = $Frontface
12 | @onready var backface = $Backface
13 |
14 |
15 | @export var card_data : CardUIData
16 |
17 |
18 | var frontface_texture : String
19 | var backface_texture : String
20 | var is_clicked := false
21 | var mouse_is_hovering := false
22 | var target_position := Vector2.ZERO
23 | var return_speed := 0.2
24 | var hover_distance := 10
25 | var drag_when_clicked := true
26 |
27 | func get_class(): return "CardUI"
28 | func is_class(name): return name == "CardUI"
29 |
30 |
31 | func set_direction(card_is_facing : Vector2):
32 | backface.visible = card_is_facing == Vector2.DOWN
33 | frontface.visible = card_is_facing == Vector2.UP
34 |
35 | func set_disabled(val : bool):
36 | if val:
37 | mouse_is_hovering = false
38 | is_clicked = false
39 | rotation = 0
40 | var parent = get_parent()
41 | if parent is CardPileUI:
42 | parent.reset_card_ui_z_index()
43 |
44 | func _ready():
45 | if Engine.is_editor_hint():
46 | set_disabled(true)
47 | update_configuration_warnings()
48 | return
49 | connect("mouse_entered", _on_mouse_enter)
50 | connect("mouse_exited", _on_mouse_exited)
51 | connect("gui_input", _on_gui_input)
52 | if frontface_texture:
53 | frontface.texture = load(frontface_texture)
54 | backface.texture = load(backface_texture)
55 | custom_minimum_size = frontface.texture.get_size()
56 | pivot_offset = frontface.texture.get_size() / 2
57 | mouse_filter = Control.MOUSE_FILTER_PASS
58 |
59 |
60 |
61 | func _card_can_be_interacted_with():
62 | var parent = get_parent()
63 | var valid = false
64 | if parent is CardPileUI:
65 | # check for cards in hand
66 | if parent.is_card_ui_in_hand(self):
67 | valid = parent.is_hand_enabled() and not parent.is_any_card_ui_clicked()
68 | # check for cards in dropzone
69 | var dropzone = parent.get_card_dropzone(self)
70 | if dropzone:
71 | valid = dropzone.get_top_card() == self and not parent.is_any_card_ui_clicked()
72 | return valid
73 |
74 |
75 |
76 | func _on_mouse_enter():
77 | #check if is hovering should be turned on
78 | if _card_can_be_interacted_with():
79 | mouse_is_hovering = true
80 | target_position.y -= hover_distance
81 | var parent = get_parent()
82 | parent.reset_card_ui_z_index()
83 | emit_signal("card_hovered", self)
84 |
85 |
86 | func _on_mouse_exited():
87 | if is_clicked:
88 | return
89 | if mouse_is_hovering:
90 | mouse_is_hovering = false
91 | target_position.y += hover_distance
92 | var parent = get_parent()
93 | if parent is CardPileUI:
94 | parent.reset_card_ui_z_index()
95 | emit_signal("card_unhovered", self)
96 |
97 | func _on_gui_input(event):
98 | if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
99 | if event.pressed:
100 | var parent = get_parent()
101 |
102 | if _card_can_be_interacted_with():
103 | is_clicked = true
104 | rotation = 0
105 | parent.reset_card_ui_z_index()
106 | emit_signal("card_clicked", self)
107 |
108 | if parent is CardPileUI and parent.get_card_pile_size(CardPileUI.Piles.draw_pile) > 0 and parent.is_hand_enabled() and parent.get_cards_in_pile(CardPileUI.Piles.draw_pile).find(self) != -1 and not parent.is_any_card_ui_clicked() and parent.click_draw_pile_to_draw:
109 | parent.draw(1)
110 | else:
111 | #event released
112 | if is_clicked:
113 | is_clicked = false
114 | mouse_is_hovering = false
115 | rotation = 0
116 | var parent = get_parent()
117 | if parent is CardPileUI and parent.is_card_ui_in_hand(self):
118 | parent.call_deferred("reset_target_positions")
119 | var all_dropzones := []
120 | get_dropzones(get_tree().get_root(), "CardDropzone", all_dropzones)
121 | for dropzone in all_dropzones:
122 | if dropzone.get_global_rect().has_point(get_global_mouse_position()):
123 | if dropzone.can_drop_card(self):
124 | dropzone.card_ui_dropped(self)
125 | break
126 | emit_signal("card_dropped", self)
127 | emit_signal("card_unhovered", self)
128 |
129 |
130 | func get_dropzones(node: Node, className : String, result : Array) -> void:
131 | if node is CardDropzone:
132 | result.push_back(node)
133 | for child in node.get_children():
134 | get_dropzones(child, className, result)
135 |
136 | func _process(_delta):
137 | if is_clicked and drag_when_clicked:
138 | target_position = get_global_mouse_position() - custom_minimum_size * 0.5
139 | if is_clicked:
140 | position = target_position
141 | elif position != target_position:
142 | position = lerp(position, target_position, return_speed)
143 |
144 | if Engine.is_editor_hint() and last_child_count != get_child_count():
145 | update_configuration_warnings()
146 | last_child_count = get_child_count()
147 |
148 | var last_child_count = 0
149 |
150 | func _get_configuration_warnings():
151 | if get_child_count() != 2:
152 | return [ "This node must have 2 TextureRect as children, one named `Frontface` and one named `Backface`." ]
153 | for child in get_children():
154 | if not child is TextureRect or (child.name != "Frontface" and child.name != "Backface"):
155 | return [ "This node must have 2 TextureRect as children, one named `Frontface` and one named `Backface`." ]
156 | return []
157 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_ui.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://dnt4pku64ytnl"]
2 |
3 | [ext_resource type="Script" path="res://addons/simple_card_pile_ui/card_ui.gd" id="1_v1sf0"]
4 |
5 | [node name="CardUI" type="Control"]
6 | layout_mode = 3
7 | anchors_preset = 0
8 | script = ExtResource("1_v1sf0")
9 |
10 | [node name="BackFaceTextureRect" type="TextureRect" parent="."]
11 | layout_mode = 0
12 | offset_right = 40.0
13 | offset_bottom = 40.0
14 |
15 | [node name="FrontFaceTextureRect" type="TextureRect" parent="."]
16 | layout_mode = 0
17 | offset_right = 40.0
18 | offset_bottom = 40.0
19 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_ui_data.gd:
--------------------------------------------------------------------------------
1 | class_name CardUIData extends Resource
2 |
3 | signal card_data_updated
4 |
5 | @export var nice_name : String
6 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_ui_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/addons/simple_card_pile_ui/card_ui_icon.png
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/card_ui_icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dh2yamaj2pa53"
6 | path="res://.godot/imported/card_ui_icon.png-9b01b3f460b27fe737719056aa1431a0.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/simple_card_pile_ui/card_ui_icon.png"
14 | dest_files=["res://.godot/imported/card_ui_icon.png-9b01b3f460b27fe737719056aa1431a0.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/plugin.cfg:
--------------------------------------------------------------------------------
1 | [plugin]
2 |
3 | name="Simple Card Pile UI"
4 | description="This plugin provides a flexible and customizable card pile user interface. It is designed to handle various card-related functionalities, including drawing, discarding, and managing different piles."
5 | author="Andrew Vickerman"
6 | version="1.0.0"
7 | script="simple_card_pile_ui.gd"
8 |
--------------------------------------------------------------------------------
/addons/simple_card_pile_ui/simple_card_pile_ui.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name SimpleCardPileUI extends EditorPlugin
3 |
4 |
5 | func _enter_tree():
6 | add_custom_type("CardPileUI", "Control", preload("card_pile_ui.gd"), preload("card_ui_icon.png"))
7 | add_custom_type("CardUI", "Control", preload("card_ui.gd"), preload("card_ui_icon.png"))
8 | add_custom_type("CardDropzone", "Control", preload("card_dropzone.gd"), preload("card_ui_icon.png"))
9 | add_custom_type("CardPileUIDebugger", "RichTextLabel", preload("card_pile_ui_debugger.gd"), preload("card_ui_icon.png"))
10 |
11 | func _exit_tree():
12 | remove_custom_type("CardPileUI")
13 | remove_custom_type("CardUI")
14 | remove_custom_type("CardDropzone")
15 | remove_custom_type("CardPileUIDebugger")
16 |
--------------------------------------------------------------------------------
/assets/1x1_#ffffffff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/1x1_#ffffffff.png
--------------------------------------------------------------------------------
/assets/1x1_#ffffffff.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bpjxsk1mxfl77"
6 | path="res://.godot/imported/1x1_#ffffffff.png-3a5aac1c3762f3193d97fae13fc0c089.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/1x1_#ffffffff.png"
14 | dest_files=["res://.godot/imported/1x1_#ffffffff.png-3a5aac1c3762f3193d97fae13fc0c089.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_attack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_attack.png
--------------------------------------------------------------------------------
/assets/card_attack.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://g3plv60jpgat"
6 | path="res://.godot/imported/card_attack.png-cb0f49138611862f8939755a480ba1f8.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_attack.png"
14 | dest_files=["res://.godot/imported/card_attack.png-cb0f49138611862f8939755a480ba1f8.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_back.png
--------------------------------------------------------------------------------
/assets/card_back.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ben7qqx34vpkq"
6 | path="res://.godot/imported/card_back.png-0c0960486df04582101fdd48c0179ad0.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_back.png"
14 | dest_files=["res://.godot/imported/card_back.png-0c0960486df04582101fdd48c0179ad0.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_big_attack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_big_attack.png
--------------------------------------------------------------------------------
/assets/card_big_attack.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://m8absnv7g1ov"
6 | path="res://.godot/imported/card_big_attack.png-c57fafaac9c74f67b56c45dabc78bc53.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_big_attack.png"
14 | dest_files=["res://.godot/imported/card_big_attack.png-c57fafaac9c74f67b56c45dabc78bc53.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_block.png
--------------------------------------------------------------------------------
/assets/card_block.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cyvu066pyl46k"
6 | path="res://.godot/imported/card_block.png-3538422bd7f8aa186a31ecf2179b7a6b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_block.png"
14 | dest_files=["res://.godot/imported/card_block.png-3538422bd7f8aa186a31ecf2179b7a6b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_02.png
--------------------------------------------------------------------------------
/assets/card_clubs_02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dp7k4aq6freb1"
6 | path="res://.godot/imported/card_clubs_02.png-f7e7912344bdacb42ba54c64f25123c0.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_02.png"
14 | dest_files=["res://.godot/imported/card_clubs_02.png-f7e7912344bdacb42ba54c64f25123c0.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_03.png
--------------------------------------------------------------------------------
/assets/card_clubs_03.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bsyuykjb3pwi8"
6 | path="res://.godot/imported/card_clubs_03.png-932a095a00a3882412cf8654595ee790.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_03.png"
14 | dest_files=["res://.godot/imported/card_clubs_03.png-932a095a00a3882412cf8654595ee790.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_04.png
--------------------------------------------------------------------------------
/assets/card_clubs_04.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://brey3bptk8jqp"
6 | path="res://.godot/imported/card_clubs_04.png-23be1f6fcf8f1e3bb5b26fd4a960640b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_04.png"
14 | dest_files=["res://.godot/imported/card_clubs_04.png-23be1f6fcf8f1e3bb5b26fd4a960640b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_05.png
--------------------------------------------------------------------------------
/assets/card_clubs_05.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dpvawj4br78kw"
6 | path="res://.godot/imported/card_clubs_05.png-d3d0d6e0f41b846bc384230746d0b5fb.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_05.png"
14 | dest_files=["res://.godot/imported/card_clubs_05.png-d3d0d6e0f41b846bc384230746d0b5fb.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_06.png
--------------------------------------------------------------------------------
/assets/card_clubs_06.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://gp5cb8rlaqfh"
6 | path="res://.godot/imported/card_clubs_06.png-7eebe307d65b9e1199f869a6ea234ac9.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_06.png"
14 | dest_files=["res://.godot/imported/card_clubs_06.png-7eebe307d65b9e1199f869a6ea234ac9.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_07.png
--------------------------------------------------------------------------------
/assets/card_clubs_07.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cmfpp08onmr3f"
6 | path="res://.godot/imported/card_clubs_07.png-4798cfeb4d0ffff8cbde7dd6e503cf00.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_07.png"
14 | dest_files=["res://.godot/imported/card_clubs_07.png-4798cfeb4d0ffff8cbde7dd6e503cf00.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_08.png
--------------------------------------------------------------------------------
/assets/card_clubs_08.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cpqrs26sonrd6"
6 | path="res://.godot/imported/card_clubs_08.png-edd102153d094bbae6d2b6b3c1b09c38.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_08.png"
14 | dest_files=["res://.godot/imported/card_clubs_08.png-edd102153d094bbae6d2b6b3c1b09c38.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_09.png
--------------------------------------------------------------------------------
/assets/card_clubs_09.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c7y401rfqdier"
6 | path="res://.godot/imported/card_clubs_09.png-75d1d017444a383560230339f7ff29a4.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_09.png"
14 | dest_files=["res://.godot/imported/card_clubs_09.png-75d1d017444a383560230339f7ff29a4.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_10.png
--------------------------------------------------------------------------------
/assets/card_clubs_10.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cpy8t134teu4p"
6 | path="res://.godot/imported/card_clubs_10.png-cf498ce1450d98c5c352313919d4d978.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_10.png"
14 | dest_files=["res://.godot/imported/card_clubs_10.png-cf498ce1450d98c5c352313919d4d978.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_A.png
--------------------------------------------------------------------------------
/assets/card_clubs_A.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bnpfq6edp6cmm"
6 | path="res://.godot/imported/card_clubs_A.png-7d68d0e1d1a625a650a45db141755e65.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_A.png"
14 | dest_files=["res://.godot/imported/card_clubs_A.png-7d68d0e1d1a625a650a45db141755e65.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_J.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_J.png
--------------------------------------------------------------------------------
/assets/card_clubs_J.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cybxhtuja4i43"
6 | path="res://.godot/imported/card_clubs_J.png-221b9eb66ae593e89a7b9c00b9d169f0.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_J.png"
14 | dest_files=["res://.godot/imported/card_clubs_J.png-221b9eb66ae593e89a7b9c00b9d169f0.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_K.png
--------------------------------------------------------------------------------
/assets/card_clubs_K.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b0ew7f3xqqh66"
6 | path="res://.godot/imported/card_clubs_K.png-98c22be449579ed06bc9d47a6450003c.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_K.png"
14 | dest_files=["res://.godot/imported/card_clubs_K.png-98c22be449579ed06bc9d47a6450003c.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_clubs_Q.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_clubs_Q.png
--------------------------------------------------------------------------------
/assets/card_clubs_Q.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://fqo4m6j1iual"
6 | path="res://.godot/imported/card_clubs_Q.png-144620a69444f159e3c40a323d2fbb62.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_clubs_Q.png"
14 | dest_files=["res://.godot/imported/card_clubs_Q.png-144620a69444f159e3c40a323d2fbb62.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_02.png
--------------------------------------------------------------------------------
/assets/card_diamonds_02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bfvuxorhfa1hj"
6 | path="res://.godot/imported/card_diamonds_02.png-67e246de8a0926190abb3ee5959da052.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_02.png"
14 | dest_files=["res://.godot/imported/card_diamonds_02.png-67e246de8a0926190abb3ee5959da052.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_03.png
--------------------------------------------------------------------------------
/assets/card_diamonds_03.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://di6sepq3ufshl"
6 | path="res://.godot/imported/card_diamonds_03.png-8fcb0dfa798c9b7cc1303c184f7d557e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_03.png"
14 | dest_files=["res://.godot/imported/card_diamonds_03.png-8fcb0dfa798c9b7cc1303c184f7d557e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_04.png
--------------------------------------------------------------------------------
/assets/card_diamonds_04.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://7hhnfbq3xtlh"
6 | path="res://.godot/imported/card_diamonds_04.png-d60a605de67f4af557d8646040fa258e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_04.png"
14 | dest_files=["res://.godot/imported/card_diamonds_04.png-d60a605de67f4af557d8646040fa258e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_05.png
--------------------------------------------------------------------------------
/assets/card_diamonds_05.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dhr56ee4vcvvr"
6 | path="res://.godot/imported/card_diamonds_05.png-77e6fa6338a6c1059fcc444bf07652a2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_05.png"
14 | dest_files=["res://.godot/imported/card_diamonds_05.png-77e6fa6338a6c1059fcc444bf07652a2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_06.png
--------------------------------------------------------------------------------
/assets/card_diamonds_06.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c46v3udeblhjy"
6 | path="res://.godot/imported/card_diamonds_06.png-e933108f9d74c2930b1d8464fbab43ed.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_06.png"
14 | dest_files=["res://.godot/imported/card_diamonds_06.png-e933108f9d74c2930b1d8464fbab43ed.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_07.png
--------------------------------------------------------------------------------
/assets/card_diamonds_07.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://chv2dpkjbxc3v"
6 | path="res://.godot/imported/card_diamonds_07.png-39cb2341a1fb0e3e16e8352d33bdf7f2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_07.png"
14 | dest_files=["res://.godot/imported/card_diamonds_07.png-39cb2341a1fb0e3e16e8352d33bdf7f2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_08.png
--------------------------------------------------------------------------------
/assets/card_diamonds_08.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c0cu5oyjpivad"
6 | path="res://.godot/imported/card_diamonds_08.png-f5b20cafa6c51cec1e14ddda49041ada.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_08.png"
14 | dest_files=["res://.godot/imported/card_diamonds_08.png-f5b20cafa6c51cec1e14ddda49041ada.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_09.png
--------------------------------------------------------------------------------
/assets/card_diamonds_09.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://db7fs5jl3qmnj"
6 | path="res://.godot/imported/card_diamonds_09.png-e67c2a52005c1764ac42c8eceefb83cd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_09.png"
14 | dest_files=["res://.godot/imported/card_diamonds_09.png-e67c2a52005c1764ac42c8eceefb83cd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_10.png
--------------------------------------------------------------------------------
/assets/card_diamonds_10.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cfabty114gh4o"
6 | path="res://.godot/imported/card_diamonds_10.png-4f0ef1b31e13119a4a946d5e3f2cdf28.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_10.png"
14 | dest_files=["res://.godot/imported/card_diamonds_10.png-4f0ef1b31e13119a4a946d5e3f2cdf28.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_A.png
--------------------------------------------------------------------------------
/assets/card_diamonds_A.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b7bqw6bmwwqwt"
6 | path="res://.godot/imported/card_diamonds_A.png-9a79efcd859c3810f1f4f959ea07f3af.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_A.png"
14 | dest_files=["res://.godot/imported/card_diamonds_A.png-9a79efcd859c3810f1f4f959ea07f3af.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_J.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_J.png
--------------------------------------------------------------------------------
/assets/card_diamonds_J.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://lf3sksndvnlm"
6 | path="res://.godot/imported/card_diamonds_J.png-cc7a84031088e9aa148fd662ae7c417f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_J.png"
14 | dest_files=["res://.godot/imported/card_diamonds_J.png-cc7a84031088e9aa148fd662ae7c417f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_K.png
--------------------------------------------------------------------------------
/assets/card_diamonds_K.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cn2btcv7e1n3q"
6 | path="res://.godot/imported/card_diamonds_K.png-372481e1a49c1884eb569b6bbc454b8e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_K.png"
14 | dest_files=["res://.godot/imported/card_diamonds_K.png-372481e1a49c1884eb569b6bbc454b8e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_diamonds_Q.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_diamonds_Q.png
--------------------------------------------------------------------------------
/assets/card_diamonds_Q.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cvel7y5gltnlf"
6 | path="res://.godot/imported/card_diamonds_Q.png-59d1f1413481036877126768bd685ecd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_diamonds_Q.png"
14 | dest_files=["res://.godot/imported/card_diamonds_Q.png-59d1f1413481036877126768bd685ecd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_dice.png
--------------------------------------------------------------------------------
/assets/card_dice.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cq0cx77chfhhh"
6 | path="res://.godot/imported/card_dice.png-d122fe29ed5f0f01586a97c4c40a27a2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_dice.png"
14 | dest_files=["res://.godot/imported/card_dice.png-d122fe29ed5f0f01586a97c4c40a27a2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_empty.png
--------------------------------------------------------------------------------
/assets/card_empty.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cq38tr3k0do84"
6 | path="res://.godot/imported/card_empty.png-3049baf30ce61330376c19c761e61678.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_empty.png"
14 | dest_files=["res://.godot/imported/card_empty.png-3049baf30ce61330376c19c761e61678.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_02.png
--------------------------------------------------------------------------------
/assets/card_hearts_02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://geqncfoon11s"
6 | path="res://.godot/imported/card_hearts_02.png-7843f1496800b78cd2603888b184c003.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_02.png"
14 | dest_files=["res://.godot/imported/card_hearts_02.png-7843f1496800b78cd2603888b184c003.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_03.png
--------------------------------------------------------------------------------
/assets/card_hearts_03.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dtp4bjyp0l2et"
6 | path="res://.godot/imported/card_hearts_03.png-4d7f1e7bb3ba34bfefca812d708841c3.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_03.png"
14 | dest_files=["res://.godot/imported/card_hearts_03.png-4d7f1e7bb3ba34bfefca812d708841c3.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_04.png
--------------------------------------------------------------------------------
/assets/card_hearts_04.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c1sixwc1p8wrt"
6 | path="res://.godot/imported/card_hearts_04.png-cd4e074db26cc066415d64c02a586d9c.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_04.png"
14 | dest_files=["res://.godot/imported/card_hearts_04.png-cd4e074db26cc066415d64c02a586d9c.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_05.png
--------------------------------------------------------------------------------
/assets/card_hearts_05.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c7by8kfclgl80"
6 | path="res://.godot/imported/card_hearts_05.png-3b357bb96dc98e0c277ab513e981f928.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_05.png"
14 | dest_files=["res://.godot/imported/card_hearts_05.png-3b357bb96dc98e0c277ab513e981f928.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_06.png
--------------------------------------------------------------------------------
/assets/card_hearts_06.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://lbofed7ofi7a"
6 | path="res://.godot/imported/card_hearts_06.png-94c2506b380595215a475c334e1da61a.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_06.png"
14 | dest_files=["res://.godot/imported/card_hearts_06.png-94c2506b380595215a475c334e1da61a.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_07.png
--------------------------------------------------------------------------------
/assets/card_hearts_07.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cyiddpi0k8k3m"
6 | path="res://.godot/imported/card_hearts_07.png-46bc950bd3d640111148fc2f5a32e1d3.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_07.png"
14 | dest_files=["res://.godot/imported/card_hearts_07.png-46bc950bd3d640111148fc2f5a32e1d3.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_08.png
--------------------------------------------------------------------------------
/assets/card_hearts_08.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://3pixcdd5n4ug"
6 | path="res://.godot/imported/card_hearts_08.png-138c965ec20060348e61c8490fa74760.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_08.png"
14 | dest_files=["res://.godot/imported/card_hearts_08.png-138c965ec20060348e61c8490fa74760.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_09.png
--------------------------------------------------------------------------------
/assets/card_hearts_09.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cjaxajdln8woc"
6 | path="res://.godot/imported/card_hearts_09.png-71c920f8c67245dfe13486c79c8d4871.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_09.png"
14 | dest_files=["res://.godot/imported/card_hearts_09.png-71c920f8c67245dfe13486c79c8d4871.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_10.png
--------------------------------------------------------------------------------
/assets/card_hearts_10.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dqbwad67phhcd"
6 | path="res://.godot/imported/card_hearts_10.png-b4b00f9c5e5e678e3e436db22fb8731d.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_10.png"
14 | dest_files=["res://.godot/imported/card_hearts_10.png-b4b00f9c5e5e678e3e436db22fb8731d.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_A.png
--------------------------------------------------------------------------------
/assets/card_hearts_A.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bmlkpjefre0of"
6 | path="res://.godot/imported/card_hearts_A.png-42644245f87f4f14cdd3ebe8d47760fe.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_A.png"
14 | dest_files=["res://.godot/imported/card_hearts_A.png-42644245f87f4f14cdd3ebe8d47760fe.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_J.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_J.png
--------------------------------------------------------------------------------
/assets/card_hearts_J.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dlak7rd3gjnrk"
6 | path="res://.godot/imported/card_hearts_J.png-c2aca0eaa5bdc05219609269a984c51d.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_J.png"
14 | dest_files=["res://.godot/imported/card_hearts_J.png-c2aca0eaa5bdc05219609269a984c51d.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_K.png
--------------------------------------------------------------------------------
/assets/card_hearts_K.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b7tcxyqqgi7px"
6 | path="res://.godot/imported/card_hearts_K.png-4b00682bd6c3f545fb7dbcdbd3cf77b2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_K.png"
14 | dest_files=["res://.godot/imported/card_hearts_K.png-4b00682bd6c3f545fb7dbcdbd3cf77b2.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_hearts_Q.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_hearts_Q.png
--------------------------------------------------------------------------------
/assets/card_hearts_Q.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ctsvrv8taorh8"
6 | path="res://.godot/imported/card_hearts_Q.png-f69feb6e90d80453ba35e7cb89b799da.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_hearts_Q.png"
14 | dest_files=["res://.godot/imported/card_hearts_Q.png-f69feb6e90d80453ba35e7cb89b799da.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_joker_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_joker_black.png
--------------------------------------------------------------------------------
/assets/card_joker_black.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://43b4ohx3sjjq"
6 | path="res://.godot/imported/card_joker_black.png-a35feb0c97ffc25f6fd6435589302c5d.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_joker_black.png"
14 | dest_files=["res://.godot/imported/card_joker_black.png-a35feb0c97ffc25f6fd6435589302c5d.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_joker_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_joker_red.png
--------------------------------------------------------------------------------
/assets/card_joker_red.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://vplv17m7ygvk"
6 | path="res://.godot/imported/card_joker_red.png-37fe52b9abd4780adb41d9dcbf9cf0d3.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_joker_red.png"
14 | dest_files=["res://.godot/imported/card_joker_red.png-37fe52b9abd4780adb41d9dcbf9cf0d3.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_shake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_shake.png
--------------------------------------------------------------------------------
/assets/card_shake.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cm23e3dq3t4nw"
6 | path="res://.godot/imported/card_shake.png-2819e7acc8dba81871894dff8e33a286.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_shake.png"
14 | dest_files=["res://.godot/imported/card_shake.png-2819e7acc8dba81871894dff8e33a286.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_02.png
--------------------------------------------------------------------------------
/assets/card_spades_02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://8a1mahvwl7gd"
6 | path="res://.godot/imported/card_spades_02.png-227d6f63c000c365bacc0e30b10b13d1.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_02.png"
14 | dest_files=["res://.godot/imported/card_spades_02.png-227d6f63c000c365bacc0e30b10b13d1.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_03.png
--------------------------------------------------------------------------------
/assets/card_spades_03.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dkdcvyxq87wdf"
6 | path="res://.godot/imported/card_spades_03.png-6d204f7d055393a97fa839f071478e4e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_03.png"
14 | dest_files=["res://.godot/imported/card_spades_03.png-6d204f7d055393a97fa839f071478e4e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_04.png
--------------------------------------------------------------------------------
/assets/card_spades_04.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bxtpeo40s3a1q"
6 | path="res://.godot/imported/card_spades_04.png-cf9740c3af0630ce84ed736da13e3d90.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_04.png"
14 | dest_files=["res://.godot/imported/card_spades_04.png-cf9740c3af0630ce84ed736da13e3d90.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_05.png
--------------------------------------------------------------------------------
/assets/card_spades_05.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b5i8eiypjnfes"
6 | path="res://.godot/imported/card_spades_05.png-f5dd49a3f3537405a82bd12263f0c939.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_05.png"
14 | dest_files=["res://.godot/imported/card_spades_05.png-f5dd49a3f3537405a82bd12263f0c939.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_06.png
--------------------------------------------------------------------------------
/assets/card_spades_06.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://d0g18xr85ye7k"
6 | path="res://.godot/imported/card_spades_06.png-4fb18bb7358273dc22316fe7045a9fa9.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_06.png"
14 | dest_files=["res://.godot/imported/card_spades_06.png-4fb18bb7358273dc22316fe7045a9fa9.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_07.png
--------------------------------------------------------------------------------
/assets/card_spades_07.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c14u0cj7uwxr3"
6 | path="res://.godot/imported/card_spades_07.png-2b79e4f5f1fe8d59ffb2c469aabc3a41.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_07.png"
14 | dest_files=["res://.godot/imported/card_spades_07.png-2b79e4f5f1fe8d59ffb2c469aabc3a41.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_08.png
--------------------------------------------------------------------------------
/assets/card_spades_08.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dapp141vtr1ed"
6 | path="res://.godot/imported/card_spades_08.png-b7a2d769fde02285cfaa6fa948911462.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_08.png"
14 | dest_files=["res://.godot/imported/card_spades_08.png-b7a2d769fde02285cfaa6fa948911462.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_09.png
--------------------------------------------------------------------------------
/assets/card_spades_09.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cx6fo1dadk474"
6 | path="res://.godot/imported/card_spades_09.png-872699fb14021d606b382f2ab9f3ec48.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_09.png"
14 | dest_files=["res://.godot/imported/card_spades_09.png-872699fb14021d606b382f2ab9f3ec48.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_10.png
--------------------------------------------------------------------------------
/assets/card_spades_10.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://brw4qegdveku0"
6 | path="res://.godot/imported/card_spades_10.png-dea7897a535dba98b8c47de1916a4f74.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_10.png"
14 | dest_files=["res://.godot/imported/card_spades_10.png-dea7897a535dba98b8c47de1916a4f74.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_A.png
--------------------------------------------------------------------------------
/assets/card_spades_A.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cevijt3lotxgr"
6 | path="res://.godot/imported/card_spades_A.png-f276ff5bc921cdf126bd4588f1898dae.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_A.png"
14 | dest_files=["res://.godot/imported/card_spades_A.png-f276ff5bc921cdf126bd4588f1898dae.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_J.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_J.png
--------------------------------------------------------------------------------
/assets/card_spades_J.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://xh8e0ojhffga"
6 | path="res://.godot/imported/card_spades_J.png-f840432ad940c56ce380863d91cc3e96.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_J.png"
14 | dest_files=["res://.godot/imported/card_spades_J.png-f840432ad940c56ce380863d91cc3e96.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_K.png
--------------------------------------------------------------------------------
/assets/card_spades_K.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c1sxfx5c3qhpb"
6 | path="res://.godot/imported/card_spades_K.png-9f1a65f03f5118894c92df51489213bd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_K.png"
14 | dest_files=["res://.godot/imported/card_spades_K.png-9f1a65f03f5118894c92df51489213bd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/card_spades_Q.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/card_spades_Q.png
--------------------------------------------------------------------------------
/assets/card_spades_Q.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cwi8go8begyxn"
6 | path="res://.godot/imported/card_spades_Q.png-9993621d0d1af7fd49dc669c6312c220.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/card_spades_Q.png"
14 | dest_files=["res://.godot/imported/card_spades_Q.png-9993621d0d1af7fd49dc669c6312c220.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/enemy_bee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/enemy_bee.png
--------------------------------------------------------------------------------
/assets/enemy_bee.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://3sjbqh1m34dc"
6 | path="res://.godot/imported/enemy_bee.png-b4b2f45334d1fc6aecde862ed56e0e7d.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/enemy_bee.png"
14 | dest_files=["res://.godot/imported/enemy_bee.png-b4b2f45334d1fc6aecde862ed56e0e7d.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/enemy_crab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/enemy_crab.png
--------------------------------------------------------------------------------
/assets/enemy_crab.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b0ymf1fwfgbss"
6 | path="res://.godot/imported/enemy_crab.png-3e1c205deb759b509e1b4467dbd96643.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/enemy_crab.png"
14 | dest_files=["res://.godot/imported/enemy_crab.png-3e1c205deb759b509e1b4467dbd96643.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/screenshot.png
--------------------------------------------------------------------------------
/assets/screenshot.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://hx6odmeo6kck"
6 | path="res://.godot/imported/screenshot.png-0641788eeab620cdb024093014ee1cbd.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/screenshot.png"
14 | dest_files=["res://.godot/imported/screenshot.png-0641788eeab620cdb024093014ee1cbd.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/screenshot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/screenshot2.png
--------------------------------------------------------------------------------
/assets/screenshot2.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cuul14yo1ki3y"
6 | path="res://.godot/imported/screenshot2.png-c7b0beb16b74c482d0420c6850ae9e18.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/screenshot2.png"
14 | dest_files=["res://.godot/imported/screenshot2.png-c7b0beb16b74c482d0420c6850ae9e18.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/assets/white-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/insideout-andrew/simple-card-pile-ui/e9f52b0b3485fb83dd8072fe8098e820d5b90236/assets/white-circle.png
--------------------------------------------------------------------------------
/assets/white-circle.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bddymiv4rv8kw"
6 | path="res://.godot/imported/white-circle.png-21cb030b7b2f9ee56f41470823aada71.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://assets/white-circle.png"
14 | dest_files=["res://.godot/imported/white-circle.png-21cb030b7b2f9ee56f41470823aada71.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/example/example.gd:
--------------------------------------------------------------------------------
1 | extends Node2D
2 |
3 |
4 | @onready var card_pile_ui := $CardPileUI
5 | @onready var dropzones := [
6 | $CardDropzone_Clubs,
7 | $CardDropzone_Diamonds,
8 | $CardDropzone_Hearts,
9 | $CardDropzone_Spades,
10 | ]
11 |
12 |
13 | func _ready():
14 | randomize()
15 |
16 |
17 | func _get_rand_joker():
18 | return "Black Joker" if randi_range(0, 1) else "Red Joker"
19 |
20 |
21 | func _on_draw_button_pressed():
22 | card_pile_ui.draw(1)
23 |
24 |
25 | func _on_draw_3_button_pressed():
26 | card_pile_ui.draw(3)
27 |
28 |
29 | func _on_sort_button_pressed():
30 | card_pile_ui.sort_hand(func(a, b):
31 | if a.card_data.suit == b.card_data.suit:
32 | return a.card_data.value < b.card_data.value
33 | else:
34 | return a.card_data.suit < b.card_data.suit
35 | )
36 |
37 |
38 | func _on_discard_random_button_pressed():
39 | var hand_pile_size = card_pile_ui.get_card_pile_size(CardPileUI.Piles.hand_pile)
40 | if hand_pile_size:
41 | var random_card_in_hand = card_pile_ui.get_card_in_pile_at(CardPileUI.Piles.hand_pile, randi() % hand_pile_size)
42 | card_pile_ui.set_card_pile(random_card_in_hand, CardPileUI.Piles.discard_pile)
43 |
44 |
45 | func _on_add_joker_to_hand_button_pressed():
46 | card_pile_ui.create_card_in_pile(_get_rand_joker(), CardPileUI.Piles.hand_pile)
47 |
48 |
49 | func _on_add_joker_to_discard_button_pressed():
50 | card_pile_ui.create_card_in_pile(_get_rand_joker(), CardPileUI.Piles.discard_pile)
51 |
52 |
53 | func _on_random_discard_to_hand_button_pressed():
54 | var discard_pile_size = card_pile_ui.get_card_pile_size(CardPileUI.Piles.discard_pile)
55 | if discard_pile_size:
56 | var random_card_in_discard = card_pile_ui.get_card_in_pile_at(CardPileUI.Piles.discard_pile, randi() % discard_pile_size)
57 | card_pile_ui.set_card_pile(random_card_in_discard, CardPileUI.Piles.hand_pile)
58 |
59 |
60 | func _on_reset_button_pressed():
61 | card_pile_ui.reset()
62 |
63 |
64 | func _on_discard_hand_button_pressed():
65 | for card_ui in card_pile_ui.get_cards_in_pile(CardPileUI.Piles.hand_pile):
66 | card_pile_ui.set_card_pile(card_ui, CardPileUI.Piles.discard_pile)
67 |
68 |
69 | func _on_add_joker_to_dropzones_button_pressed():
70 | for dropzone in dropzones:
71 | card_pile_ui.create_card_in_dropzone(_get_rand_joker(), dropzone)
72 |
73 |
74 |
75 | func _on_move_from_dropzone_to_pile_button_pressed():
76 | for dropzone in dropzones:
77 | var top_card_in_dropzone = dropzone.get_top_card()
78 | if top_card_in_dropzone:
79 | card_pile_ui.set_card_pile(top_card_in_dropzone, CardPileUI.Piles.discard_pile)
80 |
81 |
82 | func _on_move_club_to_diamonds_pressed():
83 | var clubs_dropzone = dropzones[0]
84 | var top_card_in_dropzone = clubs_dropzone.get_top_card()
85 | if top_card_in_dropzone:
86 | var diamonds_dropzone = dropzones[1]
87 | card_pile_ui.set_card_dropzone(top_card_in_dropzone, diamonds_dropzone)
88 |
89 |
90 | func _on_remove_rand_card_in_hand_from_game_pressed():
91 | var hand_pile_size = card_pile_ui.get_card_pile_size(CardPileUI.Piles.hand_pile)
92 | if hand_pile_size:
93 | var random_card_in_hand = card_pile_ui.get_card_in_pile_at(CardPileUI.Piles.hand_pile, randi() % hand_pile_size)
94 | card_pile_ui.remove_card_from_game(random_card_in_hand)
95 |
--------------------------------------------------------------------------------
/example/example.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=11 format=3 uid="uid://bayw73ve8ui7r"]
2 |
3 | [ext_resource type="Script" path="res://example/example.gd" id="1_0dn0o"]
4 | [ext_resource type="Script" path="res://addons/simple_card_pile_ui/card_pile_ui_debugger.gd" id="2_7gbt2"]
5 | [ext_resource type="Script" path="res://example/example__dropzone__discard.gd" id="3_7f8qk"]
6 | [ext_resource type="Script" path="res://addons/simple_card_pile_ui/card_pile_ui.gd" id="3_axm7s"]
7 | [ext_resource type="Script" path="res://example/example__dropzone__play_by_suit.gd" id="4_cyr6y"]
8 | [ext_resource type="Texture2D" uid="uid://bpjxsk1mxfl77" path="res://assets/1x1_#ffffffff.png" id="4_eyd4o"]
9 | [ext_resource type="PackedScene" uid="uid://bs2vgjwuarxm5" path="res://example/example__card_ui.tscn" id="6_df1s4"]
10 |
11 | [sub_resource type="Theme" id="Theme_oqbkv"]
12 | Button/font_sizes/font_size = 12
13 | RichTextLabel/font_sizes/normal_font_size = 12
14 |
15 | [sub_resource type="Curve" id="Curve_ayyaa"]
16 | min_value = -15.0
17 | max_value = 15.0
18 | _data = [Vector2(0, -15), 0.0, 30.0, 0, 1, Vector2(1, 15), 30.0, 0.0, 1, 0]
19 | point_count = 2
20 |
21 | [sub_resource type="Curve" id="Curve_afhc1"]
22 | max_value = 50.0
23 | _data = [Vector2(0, 0), 0.0, 60.0, 0, 0, Vector2(0.5, 40), 0.0, 0.0, 0, 0, Vector2(1, 0), -60.0, 0.0, 0, 0]
24 | point_count = 3
25 |
26 | [node name="Example" type="Node2D"]
27 | script = ExtResource("1_0dn0o")
28 |
29 | [node name="Buttons" type="Control" parent="."]
30 | layout_mode = 3
31 | anchors_preset = 0
32 | theme = SubResource("Theme_oqbkv")
33 |
34 | [node name="HBoxContainer" type="GridContainer" parent="Buttons"]
35 | layout_mode = 2
36 | offset_left = 8.0
37 | offset_top = 24.0
38 | offset_right = 452.0
39 | offset_bottom = 265.0
40 | columns = 2
41 | metadata/_edit_group_ = true
42 |
43 | [node name="DrawButton" type="Button" parent="Buttons/HBoxContainer"]
44 | layout_mode = 2
45 | text = "Draw"
46 |
47 | [node name="Draw3Button" type="Button" parent="Buttons/HBoxContainer"]
48 | layout_mode = 2
49 | text = "Draw 3"
50 |
51 | [node name="SortButton" type="Button" parent="Buttons/HBoxContainer"]
52 | layout_mode = 2
53 | text = "Sort Hand"
54 |
55 | [node name="DiscardRandomButton" type="Button" parent="Buttons/HBoxContainer"]
56 | layout_mode = 2
57 | text = "Discard Random"
58 |
59 | [node name="DiscardHandButton" type="Button" parent="Buttons/HBoxContainer"]
60 | layout_mode = 2
61 | text = "Discard Hand"
62 |
63 | [node name="AddJokerToHandButton" type="Button" parent="Buttons/HBoxContainer"]
64 | layout_mode = 2
65 | text = "Add Joker To Hand"
66 |
67 | [node name="AddJokerToDiscardButton" type="Button" parent="Buttons/HBoxContainer"]
68 | layout_mode = 2
69 | text = "Add Joker To Discard"
70 |
71 | [node name="RandomDiscardToHandButton" type="Button" parent="Buttons/HBoxContainer"]
72 | layout_mode = 2
73 | text = "Return Random Discard
74 | To Hand"
75 |
76 | [node name="AddJokerToDropzonesButton" type="Button" parent="Buttons/HBoxContainer"]
77 | layout_mode = 2
78 | text = "Add Joker To Dropzones"
79 |
80 | [node name="MoveFromDropzoneToPileButton" type="Button" parent="Buttons/HBoxContainer"]
81 | layout_mode = 2
82 | text = "Discard Top Card
83 | of all Dropzones"
84 |
85 | [node name="MoveClubToDiamonds" type="Button" parent="Buttons/HBoxContainer"]
86 | layout_mode = 2
87 | text = "Move Top Club Dropzone
88 | to Diamonds"
89 |
90 | [node name="RemoveRandCardInHandFromGame" type="Button" parent="Buttons/HBoxContainer"]
91 | layout_mode = 2
92 | text = "Remove Random Card
93 | In Hand From Game"
94 |
95 | [node name="ResetButton" type="Button" parent="Buttons/HBoxContainer"]
96 | layout_mode = 2
97 | text = "Reset"
98 |
99 | [node name="CardPileUIDebugger" type="RichTextLabel" parent="Buttons" node_paths=PackedStringArray("card_pile_ui")]
100 | layout_mode = 2
101 | offset_left = 8.0
102 | offset_top = 296.0
103 | offset_right = 312.0
104 | offset_bottom = 392.0
105 | scroll_following = true
106 | script = ExtResource("2_7gbt2")
107 | card_pile_ui = NodePath("../../CardPileUI")
108 |
109 | [node name="CardDropzone_Discard" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
110 | layout_mode = 3
111 | anchors_preset = 0
112 | offset_left = 1250.0
113 | offset_top = 460.0
114 | offset_right = 1418.0
115 | offset_bottom = 700.0
116 | script = ExtResource("3_7f8qk")
117 | card_pile_ui = NodePath("../CardPileUI")
118 | can_drag_top_card = false
119 | metadata/_edit_group_ = true
120 |
121 | [node name="TextureRect" type="TextureRect" parent="CardDropzone_Discard"]
122 | modulate = Color(0.137255, 0.137255, 0.137255, 1)
123 | layout_mode = 1
124 | anchors_preset = 15
125 | anchor_right = 1.0
126 | anchor_bottom = 1.0
127 | grow_horizontal = 2
128 | grow_vertical = 2
129 | texture = ExtResource("4_eyd4o")
130 |
131 | [node name="DiscardLabel" type="Label" parent="CardDropzone_Discard"]
132 | layout_mode = 0
133 | offset_left = 2.0
134 | offset_top = -81.0
135 | offset_right = 168.0
136 | offset_bottom = -58.0
137 | text = "Discard"
138 | horizontal_alignment = 1
139 |
140 | [node name="CardDropzone_Diamonds" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
141 | layout_mode = 3
142 | anchors_preset = 0
143 | offset_left = 776.0
144 | offset_top = 108.0
145 | offset_right = 944.0
146 | offset_bottom = 348.0
147 | script = ExtResource("4_cyr6y")
148 | accept_suit = "D"
149 | card_pile_ui = NodePath("../CardPileUI")
150 | metadata/_edit_group_ = true
151 |
152 | [node name="TextureRect" type="TextureRect" parent="CardDropzone_Diamonds"]
153 | modulate = Color(0.137255, 0.137255, 0.137255, 1)
154 | layout_mode = 1
155 | anchors_preset = 15
156 | anchor_right = 1.0
157 | anchor_bottom = 1.0
158 | grow_horizontal = 2
159 | grow_vertical = 2
160 | texture = ExtResource("4_eyd4o")
161 |
162 | [node name="DiamondsLabel" type="Label" parent="CardDropzone_Diamonds"]
163 | layout_mode = 0
164 | offset_top = -80.0
165 | offset_right = 166.0
166 | offset_bottom = -57.0
167 | text = "Diamonds Dropzone"
168 | horizontal_alignment = 1
169 |
170 | [node name="CardDropzone_Hearts" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
171 | layout_mode = 3
172 | anchors_preset = 0
173 | offset_left = 992.0
174 | offset_top = 108.0
175 | offset_right = 1160.0
176 | offset_bottom = 348.0
177 | script = ExtResource("4_cyr6y")
178 | accept_suit = "H"
179 | card_pile_ui = NodePath("../CardPileUI")
180 | metadata/_edit_group_ = true
181 |
182 | [node name="TextureRect" type="TextureRect" parent="CardDropzone_Hearts"]
183 | modulate = Color(0.137255, 0.137255, 0.137255, 1)
184 | layout_mode = 1
185 | anchors_preset = 15
186 | anchor_right = 1.0
187 | anchor_bottom = 1.0
188 | grow_horizontal = 2
189 | grow_vertical = 2
190 | texture = ExtResource("4_eyd4o")
191 |
192 | [node name="HeartsLabel" type="Label" parent="CardDropzone_Hearts"]
193 | layout_mode = 0
194 | offset_left = -1.0
195 | offset_top = -80.0
196 | offset_right = 164.0
197 | offset_bottom = -57.0
198 | text = "Hearts Dropzone"
199 | horizontal_alignment = 1
200 |
201 | [node name="CardDropzone_Clubs" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
202 | layout_mode = 3
203 | anchors_preset = 0
204 | offset_left = 560.0
205 | offset_top = 108.0
206 | offset_right = 728.0
207 | offset_bottom = 348.0
208 | script = ExtResource("4_cyr6y")
209 | accept_suit = "C"
210 | card_pile_ui = NodePath("../CardPileUI")
211 | layout = 1
212 | metadata/_edit_group_ = true
213 |
214 | [node name="TextureRect" type="TextureRect" parent="CardDropzone_Clubs"]
215 | modulate = Color(0.137255, 0.137255, 0.137255, 1)
216 | layout_mode = 1
217 | anchors_preset = 15
218 | anchor_right = 1.0
219 | anchor_bottom = 1.0
220 | grow_horizontal = 2
221 | grow_vertical = 2
222 | texture = ExtResource("4_eyd4o")
223 |
224 | [node name="ClubsLabel" type="Label" parent="CardDropzone_Clubs"]
225 | layout_mode = 0
226 | offset_left = -1.0
227 | offset_top = -81.0
228 | offset_right = 167.0
229 | offset_bottom = -58.0
230 | text = "Clubs Dropzone"
231 | horizontal_alignment = 1
232 |
233 | [node name="CardDropzone_Spades" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
234 | layout_mode = 3
235 | anchors_preset = 0
236 | offset_left = 1208.0
237 | offset_top = 104.0
238 | offset_right = 1376.0
239 | offset_bottom = 344.0
240 | script = ExtResource("4_cyr6y")
241 | accept_suit = "S"
242 | card_pile_ui = NodePath("../CardPileUI")
243 | layout = 2
244 | metadata/_edit_group_ = true
245 |
246 | [node name="TextureRect" type="TextureRect" parent="CardDropzone_Spades"]
247 | modulate = Color(0.137255, 0.137255, 0.137255, 1)
248 | layout_mode = 1
249 | anchors_preset = 15
250 | anchor_right = 1.0
251 | anchor_bottom = 1.0
252 | grow_horizontal = 2
253 | grow_vertical = 2
254 | texture = ExtResource("4_eyd4o")
255 |
256 | [node name="SpadesLabel" type="Label" parent="CardDropzone_Spades"]
257 | layout_mode = 0
258 | offset_left = -2.0
259 | offset_top = -80.0
260 | offset_right = 166.0
261 | offset_bottom = -57.0
262 | text = "Spades Dropzone"
263 | horizontal_alignment = 1
264 |
265 | [node name="CardPileUI" type="Control" parent="."]
266 | layout_mode = 3
267 | anchors_preset = 0
268 | script = ExtResource("3_axm7s")
269 | json_card_database_path = "res://example/example__card_database.json"
270 | json_card_collection_path = "res://example/example__card_collection.json"
271 | extended_card_ui = ExtResource("6_df1s4")
272 | draw_pile_layout = 2
273 | max_hand_size = 7
274 | hand_rotation_curve = SubResource("Curve_ayyaa")
275 | hand_vertical_curve = SubResource("Curve_afhc1")
276 |
277 | [connection signal="pressed" from="Buttons/HBoxContainer/DrawButton" to="." method="_on_draw_button_pressed"]
278 | [connection signal="pressed" from="Buttons/HBoxContainer/Draw3Button" to="." method="_on_draw_3_button_pressed"]
279 | [connection signal="pressed" from="Buttons/HBoxContainer/SortButton" to="." method="_on_sort_button_pressed"]
280 | [connection signal="pressed" from="Buttons/HBoxContainer/DiscardRandomButton" to="." method="_on_discard_random_button_pressed"]
281 | [connection signal="pressed" from="Buttons/HBoxContainer/DiscardHandButton" to="." method="_on_discard_hand_button_pressed"]
282 | [connection signal="pressed" from="Buttons/HBoxContainer/AddJokerToHandButton" to="." method="_on_add_joker_to_hand_button_pressed"]
283 | [connection signal="pressed" from="Buttons/HBoxContainer/AddJokerToDiscardButton" to="." method="_on_add_joker_to_discard_button_pressed"]
284 | [connection signal="pressed" from="Buttons/HBoxContainer/RandomDiscardToHandButton" to="." method="_on_random_discard_to_hand_button_pressed"]
285 | [connection signal="pressed" from="Buttons/HBoxContainer/AddJokerToDropzonesButton" to="." method="_on_add_joker_to_dropzones_button_pressed"]
286 | [connection signal="pressed" from="Buttons/HBoxContainer/MoveFromDropzoneToPileButton" to="." method="_on_move_from_dropzone_to_pile_button_pressed"]
287 | [connection signal="pressed" from="Buttons/HBoxContainer/MoveClubToDiamonds" to="." method="_on_move_club_to_diamonds_pressed"]
288 | [connection signal="pressed" from="Buttons/HBoxContainer/RemoveRandCardInHandFromGame" to="." method="_on_remove_rand_card_in_hand_from_game_pressed"]
289 | [connection signal="pressed" from="Buttons/HBoxContainer/ResetButton" to="." method="_on_reset_button_pressed"]
290 |
--------------------------------------------------------------------------------
/example/example__card_collection.json:
--------------------------------------------------------------------------------
1 | [
2 | "2 of Hearts",
3 | "3 of Hearts",
4 | "4 of Hearts",
5 | "5 of Hearts",
6 | "6 of Hearts",
7 | "7 of Hearts",
8 | "8 of Hearts",
9 | "9 of Hearts",
10 | "10 of Hearts",
11 | "Jack of Hearts",
12 | "Queen of Hearts",
13 | "King of Hearts",
14 | "Ace of Hearts",
15 | "2 of Diamonds",
16 | "3 of Diamonds",
17 | "4 of Diamonds",
18 | "5 of Diamonds",
19 | "6 of Diamonds",
20 | "7 of Diamonds",
21 | "8 of Diamonds",
22 | "9 of Diamonds",
23 | "10 of Diamonds",
24 | "Jack of Diamonds",
25 | "Queen of Diamonds",
26 | "King of Diamonds",
27 | "Ace of Diamonds",
28 | "2 of Clubs",
29 | "3 of Clubs",
30 | "4 of Clubs",
31 | "5 of Clubs",
32 | "6 of Clubs",
33 | "7 of Clubs",
34 | "8 of Clubs",
35 | "9 of Clubs",
36 | "10 of Clubs",
37 | "Jack of Clubs",
38 | "Queen of Clubs",
39 | "King of Clubs",
40 | "Ace of Clubs",
41 | "2 of Spades",
42 | "3 of Spades",
43 | "4 of Spades",
44 | "5 of Spades",
45 | "6 of Spades",
46 | "7 of Spades",
47 | "8 of Spades",
48 | "9 of Spades",
49 | "10 of Spades",
50 | "Jack of Spades",
51 | "Queen of Spades",
52 | "King of Spades",
53 | "Ace of Spades",
54 | ]
55 |
--------------------------------------------------------------------------------
/example/example__card_data.gd:
--------------------------------------------------------------------------------
1 | extends CardUIData
2 |
3 | @export var suit : String
4 | @export var value : int
5 |
--------------------------------------------------------------------------------
/example/example__card_database.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "nice_name": "Black Joker",
4 | "texture_path": "res://assets/card_joker_black.png",
5 | "backface_texture_path": "res://assets/card_back.png",
6 | "resource_script_path": "res://example/example__card_data.gd",
7 | "value": 0,
8 | "suit": ""
9 | },
10 | {
11 | "nice_name": "Red Joker",
12 | "texture_path": "res://assets/card_joker_red.png",
13 | "backface_texture_path": "res://assets/card_back.png",
14 | "resource_script_path": "res://example/example__card_data.gd",
15 | "value": 0,
16 | "suit": ""
17 | },
18 | {
19 | "nice_name": "2 of Hearts",
20 | "texture_path": "res://assets/card_hearts_02.png",
21 | "backface_texture_path": "res://assets/card_back.png",
22 | "resource_script_path": "res://example/example__card_data.gd",
23 | "value": 2,
24 | "suit": "H"
25 | },
26 | {
27 | "nice_name": "3 of Hearts",
28 | "texture_path": "res://assets/card_hearts_03.png",
29 | "backface_texture_path": "res://assets/card_back.png",
30 | "resource_script_path": "res://example/example__card_data.gd",
31 | "value": 3,
32 | "suit": "H"
33 | },
34 | {
35 | "nice_name": "4 of Hearts",
36 | "texture_path": "res://assets/card_hearts_04.png",
37 | "backface_texture_path": "res://assets/card_back.png",
38 | "resource_script_path": "res://example/example__card_data.gd",
39 | "value": 4,
40 | "suit": "H"
41 | },
42 | {
43 | "nice_name": "5 of Hearts",
44 | "texture_path": "res://assets/card_hearts_05.png",
45 | "backface_texture_path": "res://assets/card_back.png",
46 | "resource_script_path": "res://example/example__card_data.gd",
47 | "value": 5,
48 | "suit": "H"
49 | },
50 | {
51 | "nice_name": "6 of Hearts",
52 | "texture_path": "res://assets/card_hearts_06.png",
53 | "backface_texture_path": "res://assets/card_back.png",
54 | "resource_script_path": "res://example/example__card_data.gd",
55 | "value": 6,
56 | "suit": "H"
57 | },
58 | {
59 | "nice_name": "7 of Hearts",
60 | "texture_path": "res://assets/card_hearts_07.png",
61 | "backface_texture_path": "res://assets/card_back.png",
62 | "resource_script_path": "res://example/example__card_data.gd",
63 | "value": 7,
64 | "suit": "H"
65 | },
66 | {
67 | "nice_name": "8 of Hearts",
68 | "texture_path": "res://assets/card_hearts_08.png",
69 | "backface_texture_path": "res://assets/card_back.png",
70 | "resource_script_path": "res://example/example__card_data.gd",
71 | "value": 8,
72 | "suit": "H"
73 | },
74 | {
75 | "nice_name": "9 of Hearts",
76 | "texture_path": "res://assets/card_hearts_09.png",
77 | "backface_texture_path": "res://assets/card_back.png",
78 | "resource_script_path": "res://example/example__card_data.gd",
79 | "value": 9,
80 | "suit": "H"
81 | },
82 | {
83 | "nice_name": "10 of Hearts",
84 | "texture_path": "res://assets/card_hearts_10.png",
85 | "backface_texture_path": "res://assets/card_back.png",
86 | "resource_script_path": "res://example/example__card_data.gd",
87 | "value": 10,
88 | "suit": "H"
89 | },
90 | {
91 | "nice_name": "Jack of Hearts",
92 | "texture_path": "res://assets/card_hearts_J.png",
93 | "backface_texture_path": "res://assets/card_back.png",
94 | "resource_script_path": "res://example/example__card_data.gd",
95 | "value": 11,
96 | "suit": "H"
97 | },
98 | {
99 | "nice_name": "Queen of Hearts",
100 | "texture_path": "res://assets/card_hearts_Q.png",
101 | "backface_texture_path": "res://assets/card_back.png",
102 | "resource_script_path": "res://example/example__card_data.gd",
103 | "value": 12,
104 | "suit": "H"
105 | },
106 | {
107 | "nice_name": "King of Hearts",
108 | "texture_path": "res://assets/card_hearts_K.png",
109 | "backface_texture_path": "res://assets/card_back.png",
110 | "resource_script_path": "res://example/example__card_data.gd",
111 | "value": 13,
112 | "suit": "H"
113 | },
114 | {
115 | "nice_name": "Ace of Hearts",
116 | "texture_path": "res://assets/card_hearts_A.png",
117 | "backface_texture_path": "res://assets/card_back.png",
118 | "resource_script_path": "res://example/example__card_data.gd",
119 | "value": 14,
120 | "suit": "H"
121 | },
122 | {
123 | "nice_name": "2 of Diamonds",
124 | "texture_path": "res://assets/card_diamonds_02.png",
125 | "backface_texture_path": "res://assets/card_back.png",
126 | "resource_script_path": "res://example/example__card_data.gd",
127 | "value": 2,
128 | "suit": "D"
129 | },
130 | {
131 | "nice_name": "3 of Diamonds",
132 | "texture_path": "res://assets/card_diamonds_03.png",
133 | "backface_texture_path": "res://assets/card_back.png",
134 | "resource_script_path": "res://example/example__card_data.gd",
135 | "value": 3,
136 | "suit": "D"
137 | },
138 | {
139 | "nice_name": "4 of Diamonds",
140 | "texture_path": "res://assets/card_diamonds_04.png",
141 | "backface_texture_path": "res://assets/card_back.png",
142 | "resource_script_path": "res://example/example__card_data.gd",
143 | "value": 4,
144 | "suit": "D"
145 | },
146 | {
147 | "nice_name": "5 of Diamonds",
148 | "texture_path": "res://assets/card_diamonds_05.png",
149 | "backface_texture_path": "res://assets/card_back.png",
150 | "resource_script_path": "res://example/example__card_data.gd",
151 | "value": 5,
152 | "suit": "D"
153 | },
154 | {
155 | "nice_name": "6 of Diamonds",
156 | "texture_path": "res://assets/card_diamonds_06.png",
157 | "backface_texture_path": "res://assets/card_back.png",
158 | "resource_script_path": "res://example/example__card_data.gd",
159 | "value": 6,
160 | "suit": "D"
161 | },
162 | {
163 | "nice_name": "7 of Diamonds",
164 | "texture_path": "res://assets/card_diamonds_07.png",
165 | "backface_texture_path": "res://assets/card_back.png",
166 | "resource_script_path": "res://example/example__card_data.gd",
167 | "value": 7,
168 | "suit": "D"
169 | },
170 | {
171 | "nice_name": "8 of Diamonds",
172 | "texture_path": "res://assets/card_diamonds_08.png",
173 | "backface_texture_path": "res://assets/card_back.png",
174 | "resource_script_path": "res://example/example__card_data.gd",
175 | "value": 8,
176 | "suit": "D"
177 | },
178 | {
179 | "nice_name": "9 of Diamonds",
180 | "texture_path": "res://assets/card_diamonds_09.png",
181 | "backface_texture_path": "res://assets/card_back.png",
182 | "resource_script_path": "res://example/example__card_data.gd",
183 | "value": 9,
184 | "suit": "D"
185 | },
186 | {
187 | "nice_name": "10 of Diamonds",
188 | "texture_path": "res://assets/card_diamonds_10.png",
189 | "backface_texture_path": "res://assets/card_back.png",
190 | "resource_script_path": "res://example/example__card_data.gd",
191 | "value": 10,
192 | "suit": "D"
193 | },
194 | {
195 | "nice_name": "Jack of Diamonds",
196 | "texture_path": "res://assets/card_diamonds_J.png",
197 | "backface_texture_path": "res://assets/card_back.png",
198 | "resource_script_path": "res://example/example__card_data.gd",
199 | "value": 11,
200 | "suit": "D"
201 | },
202 | {
203 | "nice_name": "Queen of Diamonds",
204 | "texture_path": "res://assets/card_diamonds_Q.png",
205 | "backface_texture_path": "res://assets/card_back.png",
206 | "resource_script_path": "res://example/example__card_data.gd",
207 | "value": 12,
208 | "suit": "D"
209 | },
210 | {
211 | "nice_name": "King of Diamonds",
212 | "texture_path": "res://assets/card_diamonds_K.png",
213 | "backface_texture_path": "res://assets/card_back.png",
214 | "resource_script_path": "res://example/example__card_data.gd",
215 | "value": 13,
216 | "suit": "D"
217 | },
218 | {
219 | "nice_name": "Ace of Diamonds",
220 | "texture_path": "res://assets/card_diamonds_A.png",
221 | "backface_texture_path": "res://assets/card_back.png",
222 | "resource_script_path": "res://example/example__card_data.gd",
223 | "value": 14,
224 | "suit": "D"
225 | },
226 | {
227 | "nice_name": "2 of Clubs",
228 | "texture_path": "res://assets/card_clubs_02.png",
229 | "backface_texture_path": "res://assets/card_back.png",
230 | "resource_script_path": "res://example/example__card_data.gd",
231 | "value": 2,
232 | "suit": "C"
233 | },
234 | {
235 | "nice_name": "3 of Clubs",
236 | "texture_path": "res://assets/card_clubs_03.png",
237 | "backface_texture_path": "res://assets/card_back.png",
238 | "resource_script_path": "res://example/example__card_data.gd",
239 | "value": 3,
240 | "suit": "C"
241 | },
242 | {
243 | "nice_name": "4 of Clubs",
244 | "texture_path": "res://assets/card_clubs_04.png",
245 | "backface_texture_path": "res://assets/card_back.png",
246 | "resource_script_path": "res://example/example__card_data.gd",
247 | "value": 4,
248 | "suit": "C"
249 | },
250 | {
251 | "nice_name": "5 of Clubs",
252 | "texture_path": "res://assets/card_clubs_05.png",
253 | "backface_texture_path": "res://assets/card_back.png",
254 | "resource_script_path": "res://example/example__card_data.gd",
255 | "value": 5,
256 | "suit": "C"
257 | },
258 | {
259 | "nice_name": "6 of Clubs",
260 | "texture_path": "res://assets/card_clubs_06.png",
261 | "backface_texture_path": "res://assets/card_back.png",
262 | "resource_script_path": "res://example/example__card_data.gd",
263 | "value": 6,
264 | "suit": "C"
265 | },
266 | {
267 | "nice_name": "7 of Clubs",
268 | "texture_path": "res://assets/card_clubs_07.png",
269 | "backface_texture_path": "res://assets/card_back.png",
270 | "resource_script_path": "res://example/example__card_data.gd",
271 | "value": 7,
272 | "suit": "C"
273 | },
274 | {
275 | "nice_name": "8 of Clubs",
276 | "texture_path": "res://assets/card_clubs_08.png",
277 | "backface_texture_path": "res://assets/card_back.png",
278 | "resource_script_path": "res://example/example__card_data.gd",
279 | "value": 8,
280 | "suit": "C"
281 | },
282 | {
283 | "nice_name": "9 of Clubs",
284 | "texture_path": "res://assets/card_clubs_09.png",
285 | "backface_texture_path": "res://assets/card_back.png",
286 | "resource_script_path": "res://example/example__card_data.gd",
287 | "value": 9,
288 | "suit": "C"
289 | },
290 | {
291 | "nice_name": "10 of Clubs",
292 | "texture_path": "res://assets/card_clubs_10.png",
293 | "backface_texture_path": "res://assets/card_back.png",
294 | "resource_script_path": "res://example/example__card_data.gd",
295 | "value": 10,
296 | "suit": "C"
297 | },
298 | {
299 | "nice_name": "Jack of Clubs",
300 | "texture_path": "res://assets/card_clubs_J.png",
301 | "backface_texture_path": "res://assets/card_back.png",
302 | "resource_script_path": "res://example/example__card_data.gd",
303 | "value": 11,
304 | "suit": "C"
305 | },
306 | {
307 | "nice_name": "Queen of Clubs",
308 | "texture_path": "res://assets/card_clubs_Q.png",
309 | "backface_texture_path": "res://assets/card_back.png",
310 | "resource_script_path": "res://example/example__card_data.gd",
311 | "value": 12,
312 | "suit": "C"
313 | },
314 | {
315 | "nice_name": "King of Clubs",
316 | "texture_path": "res://assets/card_clubs_K.png",
317 | "backface_texture_path": "res://assets/card_back.png",
318 | "resource_script_path": "res://example/example__card_data.gd",
319 | "value": 13,
320 | "suit": "C"
321 | },
322 | {
323 | "nice_name": "Ace of Clubs",
324 | "texture_path": "res://assets/card_clubs_A.png",
325 | "backface_texture_path": "res://assets/card_back.png",
326 | "resource_script_path": "res://example/example__card_data.gd",
327 | "value": 14,
328 | "suit": "C"
329 | },
330 | {
331 | "nice_name": "2 of Spades",
332 | "texture_path": "res://assets/card_spades_02.png",
333 | "backface_texture_path": "res://assets/card_back.png",
334 | "resource_script_path": "res://example/example__card_data.gd",
335 | "value": 2,
336 | "suit": "S"
337 | },
338 | {
339 | "nice_name": "3 of Spades",
340 | "texture_path": "res://assets/card_spades_03.png",
341 | "backface_texture_path": "res://assets/card_back.png",
342 | "resource_script_path": "res://example/example__card_data.gd",
343 | "value": 3,
344 | "suit": "S"
345 | },
346 | {
347 | "nice_name": "4 of Spades",
348 | "texture_path": "res://assets/card_spades_04.png",
349 | "backface_texture_path": "res://assets/card_back.png",
350 | "resource_script_path": "res://example/example__card_data.gd",
351 | "value": 4,
352 | "suit": "S"
353 | },
354 | {
355 | "nice_name": "5 of Spades",
356 | "texture_path": "res://assets/card_spades_05.png",
357 | "backface_texture_path": "res://assets/card_back.png",
358 | "resource_script_path": "res://example/example__card_data.gd",
359 | "value": 5,
360 | "suit": "S"
361 | },
362 | {
363 | "nice_name": "6 of Spades",
364 | "texture_path": "res://assets/card_spades_06.png",
365 | "backface_texture_path": "res://assets/card_back.png",
366 | "resource_script_path": "res://example/example__card_data.gd",
367 | "value": 6,
368 | "suit": "S"
369 | },
370 | {
371 | "nice_name": "7 of Spades",
372 | "texture_path": "res://assets/card_spades_07.png",
373 | "backface_texture_path": "res://assets/card_back.png",
374 | "resource_script_path": "res://example/example__card_data.gd",
375 | "value": 7,
376 | "suit": "S"
377 | },
378 | {
379 | "nice_name": "8 of Spades",
380 | "texture_path": "res://assets/card_spades_08.png",
381 | "backface_texture_path": "res://assets/card_back.png",
382 | "resource_script_path": "res://example/example__card_data.gd",
383 | "value": 8,
384 | "suit": "S"
385 | },
386 | {
387 | "nice_name": "9 of Spades",
388 | "texture_path": "res://assets/card_spades_09.png",
389 | "backface_texture_path": "res://assets/card_back.png",
390 | "resource_script_path": "res://example/example__card_data.gd",
391 | "value": 9,
392 | "suit": "S"
393 | },
394 | {
395 | "nice_name": "10 of Spades",
396 | "texture_path": "res://assets/card_spades_10.png",
397 | "backface_texture_path": "res://assets/card_back.png",
398 | "resource_script_path": "res://example/example__card_data.gd",
399 | "value": 10,
400 | "suit": "S"
401 | },
402 | {
403 | "nice_name": "Jack of Spades",
404 | "texture_path": "res://assets/card_spades_J.png",
405 | "backface_texture_path": "res://assets/card_back.png",
406 | "resource_script_path": "res://example/example__card_data.gd",
407 | "value": 11,
408 | "suit": "S"
409 | },
410 | {
411 | "nice_name": "Queen of Spades",
412 | "texture_path": "res://assets/card_spades_Q.png",
413 | "backface_texture_path": "res://assets/card_back.png",
414 | "resource_script_path": "res://example/example__card_data.gd",
415 | "value": 12,
416 | "suit": "S"
417 | },
418 | {
419 | "nice_name": "King of Spades",
420 | "texture_path": "res://assets/card_spades_K.png",
421 | "backface_texture_path": "res://assets/card_back.png",
422 | "resource_script_path": "res://example/example__card_data.gd",
423 | "value": 13,
424 | "suit": "S"
425 | },
426 | {
427 | "nice_name": "Ace of Spades",
428 | "texture_path": "res://assets/card_spades_A.png",
429 | "backface_texture_path": "res://assets/card_back.png",
430 | "resource_script_path": "res://example/example__card_data.gd",
431 | "value": 14,
432 | "suit": "S"
433 | }
434 | ]
435 |
--------------------------------------------------------------------------------
/example/example__card_ui.gd:
--------------------------------------------------------------------------------
1 | extends CardUI
2 |
3 |
4 | @onready var label := $Frontface/Label
5 |
6 |
7 | func _ready():
8 | super()
9 | label.text = card_data.nice_name
10 |
11 |
--------------------------------------------------------------------------------
/example/example__card_ui.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=3 uid="uid://bs2vgjwuarxm5"]
2 |
3 | [ext_resource type="Script" path="res://example/example__card_ui.gd" id="1_uohi1"]
4 | [ext_resource type="Texture2D" uid="uid://ben7qqx34vpkq" path="res://assets/card_back.png" id="2_4ri8g"]
5 | [ext_resource type="Texture2D" uid="uid://dp7k4aq6freb1" path="res://assets/card_clubs_02.png" id="3_m3t1w"]
6 |
7 | [node name="ExampleCardUI" type="Control"]
8 | layout_mode = 3
9 | anchors_preset = 0
10 | offset_right = 40.0
11 | offset_bottom = 40.0
12 | script = ExtResource("1_uohi1")
13 |
14 | [node name="Backface" type="TextureRect" parent="."]
15 | layout_mode = 0
16 | offset_right = 40.0
17 | offset_bottom = 40.0
18 | texture = ExtResource("2_4ri8g")
19 |
20 | [node name="Label" type="Label" parent="Backface"]
21 | layout_mode = 0
22 | offset_left = 18.0
23 | offset_top = 219.0
24 | offset_right = 214.0
25 | offset_bottom = 268.0
26 | rotation = -1.57058
27 | theme_override_colors/font_color = Color(0, 0, 0, 1)
28 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
29 | theme_override_constants/outline_size = 8
30 | text = "S i m p l e C a r d P i l e U I"
31 | horizontal_alignment = 1
32 |
33 | [node name="Frontface" type="TextureRect" parent="."]
34 | layout_mode = 0
35 | offset_right = 40.0
36 | offset_bottom = 40.0
37 | texture = ExtResource("3_m3t1w")
38 |
39 | [node name="Label" type="Label" parent="Frontface"]
40 | layout_mode = 0
41 | offset_left = 16.0
42 | offset_top = 206.0
43 | offset_right = 149.0
44 | offset_bottom = 229.0
45 | theme_override_colors/font_color = Color(0, 0, 0, 1)
46 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
47 | theme_override_constants/outline_size = 8
48 | theme_override_font_sizes/font_size = 14
49 | text = "Nice name"
50 |
--------------------------------------------------------------------------------
/example/example__dropzone__discard.gd:
--------------------------------------------------------------------------------
1 | extends CardDropzone
2 |
3 | func card_ui_dropped(card_ui):
4 | card_pile_ui.set_card_pile(card_ui, CardPileUI.Piles.discard_pile)
5 |
--------------------------------------------------------------------------------
/example/example__dropzone__play_by_suit.gd:
--------------------------------------------------------------------------------
1 | extends CardDropzone
2 |
3 | @export var accept_suit : String
4 |
5 | func can_drop_card(card_ui : CardUI):
6 | return card_ui.card_data.suit == accept_suit
7 |
--------------------------------------------------------------------------------
/example_2/example.gd:
--------------------------------------------------------------------------------
1 | extends Node2D
2 |
3 |
4 | @onready var mana_label = $ManaLabel
5 | @onready var card_pile_ui = $CardPileUI
6 | @onready var block_card_dropzone = $BlockCardDropzone
7 | @onready var block_label = $BlockLabel
8 | @onready var panel_container = $PanelContainer
9 | @onready var rich_text_label = $PanelContainer/RichTextLabel
10 | @onready var targeting_line_2d = $TargetingLine2D
11 |
12 |
13 | # seems like these 3 properties would make more sense in as a singleton in a real game?
14 | var starting_mana := 4
15 | var current_hovered_card : CardUI
16 |
17 | var block := 0 :
18 | set(val):
19 | block = val
20 | _update_display()
21 |
22 | var mana := 4 :
23 | set(val):
24 | mana = val
25 | _update_display()
26 |
27 | func _ready():
28 | card_pile_ui.draw(5)
29 | card_pile_ui.connect("card_hovered", func(card_ui):
30 | rich_text_label.text = card_ui.card_data.format_description()
31 | panel_container.visible = true
32 | current_hovered_card = card_ui
33 | )
34 | card_pile_ui.connect("card_unhovered", func(_card_ui):
35 | panel_container.visible = false
36 | current_hovered_card = null
37 | )
38 | card_pile_ui.connect("card_clicked", func(card_ui):
39 | targeting_line_2d.set_point_position(0, card_ui.position + card_ui.size * 0.5)
40 | targeting_line_2d.visible = true
41 | )
42 | card_pile_ui.connect("card_dropped", func(_card_ui):
43 | targeting_line_2d.visible = false
44 | )
45 |
46 | func _on_end_turn_button_pressed():
47 | mana = starting_mana
48 | block = 0
49 | for card in card_pile_ui.get_cards_in_pile(CardPileUI.Piles.hand_pile):
50 | card_pile_ui.set_card_pile(card, CardPileUI.Piles.discard_pile)
51 | card_pile_ui.draw(5)
52 |
53 | func _update_display():
54 | mana_label.text = "%s" % [ mana ]
55 | block_label.text = "%s" % [ block ]
56 |
57 | func _process(_delta):
58 | if current_hovered_card:
59 | var target_pos = current_hovered_card.position
60 | target_pos.y += 80
61 | target_pos.x += 180
62 | panel_container.position = target_pos
63 | targeting_line_2d.set_point_position(1, get_global_mouse_position())
64 |
--------------------------------------------------------------------------------
/example_2/example.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=15 format=3 uid="uid://bt2x5ecxjo2vu"]
2 |
3 | [ext_resource type="Script" path="res://example_2/example.gd" id="1_xx0ud"]
4 | [ext_resource type="Texture2D" uid="uid://bddymiv4rv8kw" path="res://assets/white-circle.png" id="2_7nbk5"]
5 | [ext_resource type="Script" path="res://example_2/example__dropzone__enemy.gd" id="3_xajcs"]
6 | [ext_resource type="Texture2D" uid="uid://b0ymf1fwfgbss" path="res://assets/enemy_crab.png" id="4_61gq4"]
7 | [ext_resource type="Texture2D" uid="uid://3sjbqh1m34dc" path="res://assets/enemy_bee.png" id="5_hv7g6"]
8 | [ext_resource type="Script" path="res://example_2/example__dropzone__upgrade.gd" id="6_lc55u"]
9 | [ext_resource type="Script" path="res://example_2/example__dropzone__non-attack.gd" id="7_tllj1"]
10 | [ext_resource type="Texture2D" uid="uid://bpjxsk1mxfl77" path="res://assets/1x1_#ffffffff.png" id="8_7o08i"]
11 | [ext_resource type="Script" path="res://addons/simple_card_pile_ui/card_pile_ui.gd" id="9_kjsa2"]
12 | [ext_resource type="PackedScene" uid="uid://dn2ej8wtxey2u" path="res://example_2/example__card_ui.tscn" id="10_nkrx5"]
13 |
14 | [sub_resource type="Curve" id="Curve_noha0"]
15 | min_value = -15.0
16 | max_value = 15.0
17 | _data = [Vector2(0, -15), 0.0, 30.0, 0, 1, Vector2(1, 15), 30.0, 0.0, 1, 0]
18 | point_count = 2
19 |
20 | [sub_resource type="Curve" id="Curve_7lcs2"]
21 | max_value = 40.0
22 | _data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.504464, 35.3344), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
23 | point_count = 3
24 |
25 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ft1ui"]
26 | content_margin_left = 16.0
27 | content_margin_top = 16.0
28 | content_margin_right = 16.0
29 | content_margin_bottom = 16.0
30 | bg_color = Color(0, 0, 0, 1)
31 |
32 | [sub_resource type="Curve" id="Curve_mm80a"]
33 | _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
34 | point_count = 2
35 |
36 | [node name="Example" type="Node2D"]
37 | script = ExtResource("1_xx0ud")
38 |
39 | [node name="TextureRect" type="TextureRect" parent="."]
40 | modulate = Color(1, 1, 0.254902, 1)
41 | offset_left = 1304.0
42 | offset_top = 264.0
43 | offset_right = 1376.0
44 | offset_bottom = 336.0
45 | texture = ExtResource("2_7nbk5")
46 |
47 | [node name="ManaLabel" type="Label" parent="."]
48 | offset_left = 1263.0
49 | offset_top = 273.0
50 | offset_right = 1423.0
51 | offset_bottom = 344.0
52 | theme_override_colors/font_color = Color(0, 0, 0, 1)
53 | theme_override_font_sizes/font_size = 36
54 | text = "4"
55 | horizontal_alignment = 1
56 |
57 | [node name="TextureRect2" type="TextureRect" parent="."]
58 | modulate = Color(0, 1, 1, 1)
59 | offset_left = 1304.0
60 | offset_top = 184.0
61 | offset_right = 1376.0
62 | offset_bottom = 256.0
63 | texture = ExtResource("2_7nbk5")
64 |
65 | [node name="BlockLabel" type="Label" parent="."]
66 | offset_left = 1263.0
67 | offset_top = 192.0
68 | offset_right = 1423.0
69 | offset_bottom = 263.0
70 | theme_override_colors/font_color = Color(0, 0, 0, 1)
71 | theme_override_font_sizes/font_size = 36
72 | text = "0
73 | "
74 | horizontal_alignment = 1
75 |
76 | [node name="EndTurnButton" type="Button" parent="."]
77 | offset_left = 1296.0
78 | offset_top = 368.0
79 | offset_right = 1374.0
80 | offset_bottom = 399.0
81 | text = "End Turn"
82 |
83 | [node name="CrabCardDropzone" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
84 | layout_mode = 3
85 | anchors_preset = 0
86 | offset_left = 816.0
87 | offset_top = 40.0
88 | offset_right = 1008.0
89 | offset_bottom = 304.0
90 | script = ExtResource("3_xajcs")
91 | hp = 75
92 | card_pile_ui = NodePath("../CardPileUI")
93 |
94 | [node name="Crab" type="TextureRect" parent="CrabCardDropzone"]
95 | layout_mode = 0
96 | offset_right = 168.0
97 | offset_bottom = 240.0
98 | texture = ExtResource("4_61gq4")
99 |
100 | [node name="Label" type="Label" parent="CrabCardDropzone"]
101 | layout_mode = 0
102 | offset_left = 136.0
103 | offset_top = 168.0
104 | offset_right = 176.0
105 | offset_bottom = 191.0
106 | text = "30"
107 | horizontal_alignment = 1
108 |
109 | [node name="BeeCardDropzone" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
110 | layout_mode = 3
111 | anchors_preset = 0
112 | offset_left = 384.0
113 | offset_top = 64.0
114 | offset_right = 576.0
115 | offset_bottom = 280.0
116 | script = ExtResource("3_xajcs")
117 | card_pile_ui = NodePath("../CardPileUI")
118 |
119 | [node name="Bee" type="TextureRect" parent="BeeCardDropzone"]
120 | layout_mode = 0
121 | offset_right = 168.0
122 | offset_bottom = 240.0
123 | texture = ExtResource("5_hv7g6")
124 |
125 | [node name="Label" type="Label" parent="BeeCardDropzone"]
126 | layout_mode = 0
127 | offset_left = 104.0
128 | offset_top = 152.0
129 | offset_right = 144.0
130 | offset_bottom = 175.0
131 | text = "30"
132 | horizontal_alignment = 1
133 |
134 | [node name="UpgradeCardDropzone" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
135 | layout_mode = 3
136 | anchors_preset = 0
137 | offset_left = 40.0
138 | offset_top = 64.0
139 | offset_right = 216.0
140 | offset_bottom = 255.0
141 | script = ExtResource("6_lc55u")
142 | card_pile_ui = NodePath("../CardPileUI")
143 | metadata/_edit_group_ = true
144 |
145 | [node name="Label" type="Label" parent="UpgradeCardDropzone"]
146 | layout_mode = 0
147 | offset_right = 170.0
148 | offset_bottom = 183.0
149 | text = "Drop Card to Upgrade
150 | Cost: 1 mana"
151 | horizontal_alignment = 1
152 | vertical_alignment = 1
153 |
154 | [node name="BlockCardDropzone" type="Control" parent="." node_paths=PackedStringArray("card_pile_ui")]
155 | layout_mode = 3
156 | anchors_preset = 0
157 | offset_left = 264.0
158 | offset_right = 1120.0
159 | offset_bottom = 344.0
160 | script = ExtResource("7_tllj1")
161 | card_pile_ui = NodePath("../CardPileUI")
162 |
163 | [node name="TextureRect" type="TextureRect" parent="BlockCardDropzone"]
164 | modulate = Color(1, 1, 1, 0.101961)
165 | layout_mode = 1
166 | anchors_preset = 15
167 | anchor_right = 1.0
168 | anchor_bottom = 1.0
169 | grow_horizontal = 2
170 | grow_vertical = 2
171 | texture = ExtResource("8_7o08i")
172 |
173 | [node name="CardPileUI" type="Control" parent="."]
174 | layout_mode = 3
175 | anchors_preset = 0
176 | script = ExtResource("9_kjsa2")
177 | json_card_database_path = "res://example_2/example__card_database.json"
178 | json_card_collection_path = "res://example_2/example__card_collection.json"
179 | extended_card_ui = ExtResource("10_nkrx5")
180 | click_draw_pile_to_draw = false
181 | drag_when_clicked = false
182 | hand_rotation_curve = SubResource("Curve_noha0")
183 | hand_vertical_curve = SubResource("Curve_7lcs2")
184 |
185 | [node name="PanelContainer" type="PanelContainer" parent="."]
186 | visible = false
187 | z_index = 4000
188 | anchors_preset = 4
189 | anchor_top = 0.5
190 | anchor_bottom = 0.5
191 | offset_top = -44.0
192 | offset_right = 240.0
193 | offset_bottom = 44.0
194 | grow_vertical = 2
195 | mouse_filter = 2
196 | theme_override_styles/panel = SubResource("StyleBoxFlat_ft1ui")
197 |
198 | [node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer"]
199 | layout_mode = 2
200 | mouse_filter = 2
201 | bbcode_enabled = true
202 | text = "Card Description here"
203 |
204 | [node name="TargetingLine2D" type="Line2D" parent="."]
205 | visible = false
206 | z_index = 4000
207 | points = PackedVector2Array(0, 0, 100, 0)
208 | width_curve = SubResource("Curve_mm80a")
209 |
210 | [connection signal="pressed" from="EndTurnButton" to="." method="_on_end_turn_button_pressed"]
211 |
--------------------------------------------------------------------------------
/example_2/example__card_collection.json:
--------------------------------------------------------------------------------
1 | [
2 | "Slice",
3 | "Slice",
4 | "Slice",
5 | "Slice",
6 | "Dice",
7 | "Dice",
8 | "Dice",
9 | "Dice",
10 | "Big Axe",
11 | "Big Axe",
12 | "Dodge",
13 | "Dodge",
14 | "Dodge",
15 | "Dodge",
16 | "Dodge",
17 | "Shake",
18 | ]
19 |
--------------------------------------------------------------------------------
/example_2/example__card_data.gd:
--------------------------------------------------------------------------------
1 | class_name ExampleCardUIData extends CardUIData
2 |
3 | @export var type : String
4 | @export var cost : int
5 | @export var description : String
6 |
7 | func upgrade():
8 | pass
9 |
10 | func format_description():
11 | return description
12 |
--------------------------------------------------------------------------------
/example_2/example__card_data__attack.gd:
--------------------------------------------------------------------------------
1 | class_name ExampleCardUIDataAttack extends ExampleCardUIData
2 |
3 | @export var power : int
4 |
5 | func upgrade():
6 | power += 2
7 | emit_signal("card_data_updated")
8 |
9 | func format_description():
10 | return description.replace("{value}", "[color=red]%s[/color]" % power)
11 |
--------------------------------------------------------------------------------
/example_2/example__card_data__attack__big_axe.gd:
--------------------------------------------------------------------------------
1 | extends ExampleCardUIDataAttack
2 |
3 | func upgrade():
4 | power += 8
5 | emit_signal("card_data_updated")
6 |
--------------------------------------------------------------------------------
/example_2/example__card_data__block.gd:
--------------------------------------------------------------------------------
1 | extends ExampleCardUIData
2 |
3 | @export var block_amount : int
4 |
5 | func upgrade():
6 | block_amount += 3
7 | emit_signal("card_data_updated")
8 |
9 | func format_description():
10 | return description.replace("{value}", "[color=aqua]%s[/color]" % block_amount)
11 |
--------------------------------------------------------------------------------
/example_2/example__card_data__shake.gd:
--------------------------------------------------------------------------------
1 | extends ExampleCardUIData
2 |
3 | func handle_power_type(card_pile_ui : CardPileUI, _card : CardUI):
4 | card_pile_ui.get_parent().mana += randi_range(5, 10)
5 |
--------------------------------------------------------------------------------
/example_2/example__card_database.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "nice_name": "Slice",
4 | "texture_path": "res://assets/card_attack.png",
5 | "backface_texture_path": "res://assets/card_back.png",
6 | "resource_script_path": "res://example_2/example__card_data__attack.gd",
7 | "type": "Attack",
8 | "power": 1,
9 | "cost": 1,
10 | "description": "Deal {value} damage"
11 | },
12 | {
13 | "nice_name": "Dice",
14 | "texture_path": "res://assets/card_dice.png",
15 | "backface_texture_path": "res://assets/card_back.png",
16 | "resource_script_path": "res://example_2/example__card_data__attack.gd",
17 | "type": "Attack",
18 | "power": 3,
19 | "cost": 2,
20 | "description": "Deal {value} damage"
21 | },
22 | {
23 | "nice_name": "Big Axe",
24 | "texture_path": "res://assets/card_big_attack.png",
25 | "backface_texture_path": "res://assets/card_back.png",
26 | "resource_script_path": "res://example_2/example__card_data__attack__big_axe.gd",
27 | "type": "Attack",
28 | "power": 8,
29 | "cost": 3,
30 | "description": "Violently deal {value} damage",
31 | },
32 | {
33 | "nice_name": "Dodge",
34 | "texture_path": "res://assets/card_block.png",
35 | "backface_texture_path": "res://assets/card_back.png",
36 | "resource_script_path": "res://example_2/example__card_data__block.gd",
37 | "type": "Block",
38 | "block_amount": 3,
39 | "cost": 1,
40 | "description": "Gain {value} block"
41 | },
42 | {
43 | "nice_name": "Shake",
44 | "texture_path": "res://assets/card_shake.png",
45 | "backface_texture_path": "res://assets/card_back.png",
46 | "resource_script_path": "res://example_2/example__card_data__shake.gd",
47 | "type": "Power",
48 | "cost": 0,
49 | "description": "Gain [wave]a ton[/wave] of mana",
50 | }
51 | ]
52 |
--------------------------------------------------------------------------------
/example_2/example__card_ui.gd:
--------------------------------------------------------------------------------
1 | class_name Example2CardUI extends CardUI
2 |
3 |
4 | # these are custom variables they will be set with data from *collection.json
5 | @export var value : int
6 | @export var type : String
7 | @export var cost : int
8 | @export var description : String
9 |
10 |
11 | @onready var cost_label = $Frontface/CostLabel
12 | @onready var power_label = $Frontface/PowerLabel
13 | @onready var name_label = $Frontface/NameLabel
14 | @onready var type_label = $Frontface/TypeLabel
15 | @onready var texture_rect_2 = $Frontface/TextureRect2
16 |
17 |
18 | func _ready():
19 | super()
20 | card_data.connect("card_data_updated", _update_display)
21 | _update_display()
22 |
23 | func upgrade():
24 | value += 1
25 | _update_display()
26 |
27 | func _update_display():
28 | cost_label.text = "%s" % card_data.cost
29 | name_label.text = "%s" % card_data.nice_name
30 | type_label.text = "%s" % card_data.type
31 | if card_data.type == "Attack":
32 | power_label.text = "%s" % card_data.power
33 | texture_rect_2.modulate = Color.WHITE
34 | elif card_data.type == "Block":
35 | power_label.text = "%s" % card_data.block_amount
36 | texture_rect_2.modulate = Color.AQUA
37 | else:
38 | power_label.visible = false
39 |
--------------------------------------------------------------------------------
/example_2/example__card_ui.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://dn2ej8wtxey2u"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://ben7qqx34vpkq" path="res://assets/card_back.png" id="2_rb3h5"]
4 | [ext_resource type="Texture2D" uid="uid://g3plv60jpgat" path="res://assets/card_attack.png" id="3_cihxm"]
5 | [ext_resource type="Script" path="res://example_2/example__card_ui.gd" id="3_hpl47"]
6 | [ext_resource type="Texture2D" uid="uid://bddymiv4rv8kw" path="res://assets/white-circle.png" id="4_t0rpj"]
7 |
8 | [node name="CardUI" type="Control"]
9 | layout_mode = 3
10 | anchors_preset = 0
11 | offset_right = 40.0
12 | offset_bottom = 40.0
13 | script = ExtResource("3_hpl47")
14 |
15 | [node name="Backface" type="TextureRect" parent="."]
16 | layout_mode = 0
17 | offset_right = 40.0
18 | offset_bottom = 40.0
19 | texture = ExtResource("2_rb3h5")
20 |
21 | [node name="Label" type="Label" parent="Backface"]
22 | layout_mode = 0
23 | offset_left = 18.0
24 | offset_top = 219.0
25 | offset_right = 214.0
26 | offset_bottom = 268.0
27 | rotation = -1.57058
28 | theme_override_colors/font_color = Color(0, 0, 0, 1)
29 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
30 | theme_override_constants/outline_size = 8
31 | text = "S i m p l e C a r d P i l e U I"
32 | horizontal_alignment = 1
33 |
34 | [node name="Frontface" type="TextureRect" parent="."]
35 | layout_mode = 0
36 | offset_right = 40.0
37 | offset_bottom = 40.0
38 | texture = ExtResource("3_cihxm")
39 |
40 | [node name="TextureRect" type="TextureRect" parent="Frontface"]
41 | modulate = Color(1, 0.980392, 0.47451, 1)
42 | layout_mode = 0
43 | offset_left = 117.0
44 | offset_top = 12.0
45 | offset_right = 157.0
46 | offset_bottom = 52.0
47 | texture = ExtResource("4_t0rpj")
48 |
49 | [node name="TextureRect2" type="TextureRect" parent="Frontface"]
50 | layout_mode = 0
51 | offset_left = 17.0
52 | offset_top = 12.0
53 | offset_right = 57.0
54 | offset_bottom = 52.0
55 | texture = ExtResource("4_t0rpj")
56 |
57 | [node name="CostLabel" type="Label" parent="Frontface"]
58 | layout_mode = 0
59 | offset_left = 99.0
60 | offset_top = 15.0
61 | offset_right = 177.0
62 | offset_bottom = 49.0
63 | theme_override_colors/font_color = Color(0, 0, 0, 1)
64 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
65 | theme_override_constants/outline_size = 8
66 | theme_override_constants/shadow_outline_size = 200
67 | theme_override_font_sizes/font_size = 24
68 | text = "1"
69 | horizontal_alignment = 1
70 | vertical_alignment = 1
71 |
72 | [node name="PowerLabel" type="Label" parent="Frontface"]
73 | layout_mode = 0
74 | offset_left = -2.0
75 | offset_top = 16.0
76 | offset_right = 76.0
77 | offset_bottom = 50.0
78 | theme_override_colors/font_color = Color(0, 0, 0, 1)
79 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
80 | theme_override_constants/outline_size = 8
81 | theme_override_constants/shadow_outline_size = 16
82 | theme_override_font_sizes/font_size = 24
83 | text = "1"
84 | horizontal_alignment = 1
85 | vertical_alignment = 1
86 |
87 | [node name="NameLabel" type="Label" parent="Frontface"]
88 | layout_mode = 0
89 | offset_left = 8.0
90 | offset_top = 176.0
91 | offset_right = 164.0
92 | offset_bottom = 210.0
93 | theme_override_colors/font_color = Color(0, 0, 0, 1)
94 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
95 | theme_override_constants/outline_size = 8
96 | theme_override_font_sizes/font_size = 24
97 | text = "Nice Name"
98 | horizontal_alignment = 1
99 | vertical_alignment = 1
100 |
101 | [node name="TypeLabel" type="Label" parent="Frontface"]
102 | layout_mode = 0
103 | offset_left = 7.0
104 | offset_top = 206.0
105 | offset_right = 163.0
106 | offset_bottom = 240.0
107 | theme_override_colors/font_color = Color(0, 0, 0, 1)
108 | theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
109 | theme_override_constants/outline_size = 15
110 | theme_override_constants/shadow_outline_size = 16
111 | theme_override_font_sizes/font_size = 12
112 | text = "Type: Attack"
113 | horizontal_alignment = 1
114 | vertical_alignment = 1
115 |
--------------------------------------------------------------------------------
/example_2/example__dropzone__enemy.gd:
--------------------------------------------------------------------------------
1 | extends CardDropzone
2 |
3 | @export var hp := 30
4 |
5 | @onready var label = $Label
6 |
7 | func _ready():
8 | label.text = "%s" % hp
9 |
10 | func card_ui_dropped(card_ui : CardUI):
11 | if card_pile_ui:
12 | get_parent().mana -= card_ui.card_data.cost
13 | hp -= card_ui.card_data.power
14 | label.text = "%s" % hp
15 | card_pile_ui.set_card_pile(card_ui, CardPileUI.Piles.discard_pile)
16 |
17 | func can_drop_card(card_ui : CardUI):
18 | return card_ui.card_data.type == "Attack" and get_parent().mana >= card_ui.card_data.cost
19 |
--------------------------------------------------------------------------------
/example_2/example__dropzone__non-attack.gd:
--------------------------------------------------------------------------------
1 | extends CardDropzone
2 |
3 | func card_ui_dropped(card_ui : CardUI):
4 | if card_pile_ui:
5 | get_parent().mana -= card_ui.card_data.cost
6 | if card_ui.card_data.type == "Block":
7 | get_parent().block += card_ui.card_data.block_amount
8 | if card_ui.card_data.type == "Power":
9 | card_ui.card_data.handle_power_type(card_pile_ui, card_ui)
10 | card_pile_ui.set_card_pile(card_ui, CardPileUI.Piles.discard_pile)
11 |
12 | func can_drop_card(card_ui : CardUI):
13 | var type_matches = card_ui.card_data.type == "Block" or card_ui.card_data.type == "Power"
14 | return type_matches and get_parent().mana >= card_ui.card_data.cost
15 |
--------------------------------------------------------------------------------
/example_2/example__dropzone__upgrade.gd:
--------------------------------------------------------------------------------
1 | extends CardDropzone
2 |
3 | func card_ui_dropped(card_ui : CardUI):
4 | if card_pile_ui:
5 | get_parent().mana -= 1
6 | card_ui.card_data.upgrade()
7 | card_pile_ui.set_card_pile(card_ui, CardPileUI.Piles.discard_pile)
8 |
9 | func can_drop_card(_card_ui : CardUI):
10 | return get_parent().mana >= 1
11 |
--------------------------------------------------------------------------------
/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b4drwadobsu5d"
6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://icon.svg"
14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/project.godot:
--------------------------------------------------------------------------------
1 | ; Engine configuration file.
2 | ; It's best edited using the editor UI and not directly,
3 | ; since the parameters that go here are not all obvious.
4 | ;
5 | ; Format:
6 | ; [section] ; section goes between []
7 | ; param=value ; assign values to parameters
8 |
9 | config_version=5
10 |
11 | [application]
12 |
13 | config/name="SimpleCards"
14 | run/main_scene="res://example/example.tscn"
15 | config/features=PackedStringArray("4.2", "Mobile")
16 | config/icon="res://icon.svg"
17 |
18 | [display]
19 |
20 | window/size/viewport_width=1440
21 | window/size/viewport_height=720
22 | window/stretch/mode="viewport"
23 |
24 | [editor_plugins]
25 |
26 | enabled=PackedStringArray("res://addons/simple_card_pile_ui/plugin.cfg")
27 |
28 | [rendering]
29 |
30 | textures/canvas_textures/default_texture_filter=0
31 | renderer/rendering_method="mobile"
32 |
--------------------------------------------------------------------------------