Add Art Kit painting upgrades

This commit is contained in:
Alexander Sellite 2026-08-02 00:45:07 -04:00
parent 0edbfabdb1
commit 1406a0abc7
34 changed files with 1530 additions and 165 deletions

64
economy/art_shop_stock.gd Normal file
View file

@ -0,0 +1,64 @@
class_name ArtShopStock
extends RefCounted
const ART_KIT_ITEM_ID: StringName = &"art_kit"
const ART_KIT_PRICE: int = 1000
const UPGRADE_PRICE: int = 50
const MARKER_PRODUCTS: Array[StringName] = [
&"marker_ocean_teal",
&"marker_coral",
&"marker_sunny",
&"marker_leaf",
&"marker_blue",
&"marker_violet",
&"marker_charcoal",
]
const BRUSH_PRODUCTS: Array[StringName] = [
&"brush_2x",
&"brush_3x",
&"brush_4x",
]
const GRID_PRODUCTS: Array[StringName] = [
&"grid_32x",
&"grid_64x",
&"grid_128x",
]
static func get_price(product_id: StringName) -> int:
if product_id == ART_KIT_ITEM_ID:
return ART_KIT_PRICE
return UPGRADE_PRICE if PlayerArtUnlocks.is_product_id(product_id) else -1
static func get_display_name(product_id: StringName) -> String:
if product_id == ART_KIT_ITEM_ID:
return "Art Kit"
var color_id: StringName = PlayerArtUnlocks.color_id_for_product(product_id)
if not color_id.is_empty():
return "%s marker" % SurfaceDrawingPalette.get_display_name(color_id)
var brush_size: int = PlayerArtUnlocks.brush_size_for_product(product_id)
if brush_size > 0:
return "%d× brush" % brush_size
var grid_size: int = PlayerArtUnlocks.grid_size_for_product(product_id)
if grid_size > 0:
return "%d×%d grid" % [grid_size, grid_size]
return "Unknown art supply"
static func get_description(product_id: StringName) -> String:
if product_id == ART_KIT_ITEM_ID:
return "Press P in the game world to paint!"
var color_id: StringName = PlayerArtUnlocks.color_id_for_product(product_id)
if not color_id.is_empty():
return "Unlocks this marker color in the Paint UI."
var brush_size: int = PlayerArtUnlocks.brush_size_for_product(product_id)
if brush_size > 0:
return "Unlocks the %d× brush in the Paint UI." % brush_size
var grid_size: int = PlayerArtUnlocks.grid_size_for_product(product_id)
if grid_size > 0:
return "Unlocks the %d×%d grid in the Paint UI." % [
grid_size, grid_size,
]
return ""