From 71879139c2a3e59cea53f780245dbcdc033292cc Mon Sep 17 00:00:00 2001 From: type-two Date: Mon, 20 Jul 2026 04:27:37 +1000 Subject: [PATCH] =?UTF-8?q?Phase=20B:=20production=20loop=20=E2=80=94=20MC?= =?UTF-8?q?V=20pop-up=20van,=20conyard,=20classic=20queues,=20sidebar=20pa?= =?UTF-8?q?lette,=20buildable=20roster?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- .../chrome/assets/production-icons.png | Bin 0 -> 305 bytes mods/vinylgod/chrome/chrome.yaml | 13 ++ .../chrome/layouts/ingame-player.yaml | 54 ++++++ mods/vinylgod/cursors/default.yaml | 4 + mods/vinylgod/fluent/mod.ftl | 4 + mods/vinylgod/fluent/rules.ftl | 12 ++ mods/vinylgod/rules/economy.yaml | 182 +++++++++++++++--- mods/vinylgod/rules/palettes.yaml | 2 + mods/vinylgod/rules/player.yaml | 11 ++ mods/vinylgod/rules/world.yaml | 10 +- mods/vinylgod/sequences/assets/clock.png | Bin 0 -> 210 bytes mods/vinylgod/sequences/assets/djgrunt.png | Bin 0 -> 112 bytes mods/vinylgod/sequences/assets/garage.png | Bin 0 -> 253 bytes .../sequences/assets/icon_ampstack.png | Bin 0 -> 238 bytes .../vinylgod/sequences/assets/icon_digger.png | Bin 0 -> 235 bytes .../sequences/assets/icon_djgrunt.png | Bin 0 -> 235 bytes .../vinylgod/sequences/assets/icon_garage.png | Bin 0 -> 237 bytes .../sequences/assets/icon_merchtable.png | Bin 0 -> 237 bytes .../sequences/assets/icon_popupshop.png | Bin 0 -> 237 bytes .../sequences/assets/icon_popupvan.png | Bin 0 -> 237 bytes .../sequences/assets/icon_pressplant.png | Bin 0 -> 235 bytes mods/vinylgod/sequences/assets/icon_vault.png | Bin 0 -> 238 bytes mods/vinylgod/sequences/assets/merchtable.png | Bin 0 -> 157 bytes mods/vinylgod/sequences/assets/popupshop.png | Bin 0 -> 252 bytes mods/vinylgod/sequences/assets/popupvan.png | Bin 0 -> 129 bytes mods/vinylgod/sequences/economy.yaml | 42 ++++ tools/gen_placeholders.py | 49 +++++ 27 files changed, 357 insertions(+), 26 deletions(-) create mode 100644 mods/vinylgod/chrome/assets/production-icons.png create mode 100644 mods/vinylgod/sequences/assets/clock.png create mode 100644 mods/vinylgod/sequences/assets/djgrunt.png create mode 100644 mods/vinylgod/sequences/assets/garage.png create mode 100644 mods/vinylgod/sequences/assets/icon_ampstack.png create mode 100644 mods/vinylgod/sequences/assets/icon_digger.png create mode 100644 mods/vinylgod/sequences/assets/icon_djgrunt.png create mode 100644 mods/vinylgod/sequences/assets/icon_garage.png create mode 100644 mods/vinylgod/sequences/assets/icon_merchtable.png create mode 100644 mods/vinylgod/sequences/assets/icon_popupshop.png create mode 100644 mods/vinylgod/sequences/assets/icon_popupvan.png create mode 100644 mods/vinylgod/sequences/assets/icon_pressplant.png create mode 100644 mods/vinylgod/sequences/assets/icon_vault.png create mode 100644 mods/vinylgod/sequences/assets/merchtable.png create mode 100644 mods/vinylgod/sequences/assets/popupshop.png create mode 100644 mods/vinylgod/sequences/assets/popupvan.png diff --git a/mods/vinylgod/chrome/assets/production-icons.png b/mods/vinylgod/chrome/assets/production-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..eba5bcfbdec2b22647dddef911dbb8e7a566287a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=KRjI=Ln`LHo$1JRSV6$m)?Iw5 z_>00_FPCk9RjSLy*|zFW#!-{cayzEHw{e=|_?#i(;Qjk?kxT!cKYm(!^$dNZWmWAA zED8*a91aXj0tpd76B!)5)_x3JVQLrjZ_TlEfA$&4Kzw%oUB+2r7mV1KY&pX?`;YP& z#%22(Di~ffU2Bfm%L>%g6W6>f`r*9tMu+pe9nOgV$UU05Hx8@;jO(=aW143eoi*5M0l}x%@v<5!0Ff%xCU0t!laT rZ~r^yYt9kxSoZTJ7m9(L2Lcwx@|V literal 0 HcmV?d00001 diff --git a/mods/vinylgod/chrome/chrome.yaml b/mods/vinylgod/chrome/chrome.yaml index c72eb34..de047db 100644 --- a/mods/vinylgod/chrome/chrome.yaml +++ b/mods/vinylgod/chrome/chrome.yaml @@ -389,3 +389,16 @@ editor: tools: 136, 68, 16, 16 history: 136, 51, 16, 16 erase: 50, 187, 16, 16 + +production-icons: + Image: chrome/assets/production-icons.png + Regions: + building: 0, 0, 16, 16 + building-disabled: 16, 0, 16, 16 + building-alert: 32, 0, 16, 16 + infantry: 0, 16, 16, 16 + infantry-disabled: 16, 16, 16, 16 + infantry-alert: 32, 16, 16, 16 + vehicle: 0, 32, 16, 16 + vehicle-disabled: 16, 32, 16, 16 + vehicle-alert: 32, 32, 16, 16 diff --git a/mods/vinylgod/chrome/layouts/ingame-player.yaml b/mods/vinylgod/chrome/layouts/ingame-player.yaml index c5bee17..caeca1a 100644 --- a/mods/vinylgod/chrome/layouts/ingame-player.yaml +++ b/mods/vinylgod/chrome/layouts/ingame-player.yaml @@ -16,3 +16,57 @@ Container@PLAYER_WIDGETS: Height: 23 Align: Right Font: TinyBold + Container@SIDEBAR_PRODUCTION: + Logic: ClassicProductionLogic + X: WINDOW_WIDTH - 240 + Y: 45 + Width: 232 + Height: WINDOW_HEIGHT - 60 + Children: + LogicTicker@PRODUCTION_TICKER: + ProductionPalette@PRODUCTION_PALETTE: + X: 34 + Y: 1 + Columns: 3 + IconSize: 64, 48 + IconMargin: 1, 1 + ReadyText: production-ready + HoldText: production-hold + Container@PRODUCTION_TYPES: + X: 0 + Y: 1 + Width: 30 + Height: 96 + Children: + ProductionTypeButton@BUILDING: + Width: 30 + Height: 30 + Background: button + ProductionGroup: Building + Children: + Image@ICON: + X: 7 + Y: 7 + ImageCollection: production-icons + ProductionTypeButton@INFANTRY: + Y: 33 + Width: 30 + Height: 30 + Background: button + ProductionGroup: Infantry + Children: + Image@ICON: + X: 7 + Y: 7 + ImageCollection: production-icons + ProductionTypeButton@VEHICLE: + Y: 66 + Width: 30 + Height: 30 + Background: button + ProductionGroup: Vehicle + Children: + Image@ICON: + X: 7 + Y: 7 + ImageCollection: production-icons diff --git a/mods/vinylgod/cursors/default.yaml b/mods/vinylgod/cursors/default.yaml index fbbad5c..7b937c2 100644 --- a/mods/vinylgod/cursors/default.yaml +++ b/mods/vinylgod/cursors/default.yaml @@ -12,3 +12,7 @@ Cursors: Start: 0 move-blocked: Start: 0 + deploy: + Start: 0 + deploy-blocked: + Start: 0 diff --git a/mods/vinylgod/fluent/mod.ftl b/mods/vinylgod/fluent/mod.ftl index df258f5..7e43f72 100644 --- a/mods/vinylgod/fluent/mod.ftl +++ b/mods/vinylgod/fluent/mod.ftl @@ -5,3 +5,7 @@ mod-windowtitle = Vinylgod # To silence "Warning: Missing key `loadscreen-loading` in mod ftl files required by `LogoStripeLoadScreen.Loading`" # Because https://github.com/OpenRA/OpenRA/issues/20693 wasn't fixed. loadscreen-loading = . + +## chrome (production palette) +production-ready = READY +production-hold = ON HOLD diff --git a/mods/vinylgod/fluent/rules.ftl b/mods/vinylgod/fluent/rules.ftl index b365006..b05e0f8 100644 --- a/mods/vinylgod/fluent/rules.ftl +++ b/mods/vinylgod/fluent/rules.ftl @@ -21,3 +21,15 @@ actor-vault = ## world.yaml (resources) resource-wax = Black Wax + +## economy.yaml (phase B) +actor-popupvan = + .name = Pop-Up Van +actor-popupshop = + .name = Pop-Up Shop +actor-merchtable = + .name = Merch Table +actor-garage = + .name = Garage +actor-djgrunt = + .name = DJ diff --git a/mods/vinylgod/rules/economy.yaml b/mods/vinylgod/rules/economy.yaml index 4c40bc9..0a14f8c 100644 --- a/mods/vinylgod/rules/economy.yaml +++ b/mods/vinylgod/rules/economy.yaml @@ -8,12 +8,25 @@ HitShape: HiddenUnderFog: -digger: +^Unit: Inherits: ^EconSprite - Tooltip: - Name: actor-digger.name Selectable: Bounds: 1024, 1024 + RevealsShroud: + Range: 5c0 + MapEditorData: + Categories: Units + +digger: + Inherits: ^Unit + Buildable: + Queue: Vehicle + BuildPaletteOrder: 20 + Prerequisites: pressplant + Valued: + Cost: 1400 + Tooltip: + Name: actor-digger.name Health: HP: 60000 Armor: @@ -30,10 +43,46 @@ digger: Capacity: 20 Resources: Wax DockClientManager: - RevealsShroud: - Range: 5c0 - MapEditorData: - Categories: Units + +popupvan: + Inherits: ^Unit + Buildable: + Queue: Vehicle + BuildPaletteOrder: 30 + Prerequisites: garage + Valued: + Cost: 2500 + Tooltip: + Name: actor-popupvan.name + Health: + HP: 60000 + Armor: + Type: Heavy + Mobile: + Locomotor: wheeled + Speed: 60 + Transforms: + IntoActor: popupshop + Offset: 0,0 + Facing: 384 + +djgrunt: + Inherits: ^Unit + Buildable: + Queue: Infantry + BuildPaletteOrder: 10 + Prerequisites: merchtable + Valued: + Cost: 100 + Tooltip: + Name: actor-djgrunt.name + Health: + HP: 5000 + Armor: + Type: None + Mobile: + Locomotor: foot + Speed: 56 ^EconBuilding: Inherits: ^EconSprite @@ -44,19 +93,63 @@ digger: Type: Wood RevealsShroud: Range: 5c0 + GivesBuildableArea: + AreaTypes: building + ProvidesPrerequisite@buildingname: + SequencePlaceBuildingPreview: + Sequence: idle MapEditorData: Categories: Buildings -pressplant: - Inherits: ^EconBuilding - Tooltip: - Name: actor-pressplant.name +^Buildable2x2: Selectable: Bounds: 2048, 2048 Building: - Footprint: xx == + Footprint: xx xx Dimensions: 2,2 TerrainTypes: Clear + RequiresBuildableArea: + AreaTypes: building + Adjacent: 4 + +^Buildable1x1: + Selectable: + Bounds: 1024, 1024 + Building: + Footprint: x + Dimensions: 1,1 + TerrainTypes: Clear + RequiresBuildableArea: + AreaTypes: building + Adjacent: 4 + +popupshop: + Inherits: ^EconBuilding + Inherits@shape: ^Buildable2x2 + Tooltip: + Name: actor-popupshop.name + Health: + HP: 150000 + BaseBuilding: + Production: + Produces: Building + Power: + Amount: 0 + -RequiresBuildableArea: + +pressplant: + Inherits: ^EconBuilding + Inherits@shape: ^Buildable2x2 + Buildable: + Queue: Building + BuildPaletteOrder: 20 + Prerequisites: ampstack + Valued: + Cost: 2000 + Tooltip: + Name: actor-pressplant.name + Building: + Footprint: xx == Refinery: DockHost: Type: Unload @@ -71,30 +164,71 @@ pressplant: ampstack: Inherits: ^EconBuilding + Inherits@shape: ^Buildable1x1 + Buildable: + Queue: Building + BuildPaletteOrder: 10 + Valued: + Cost: 300 Tooltip: Name: actor-ampstack.name - Selectable: - Bounds: 1024, 1024 Health: HP: 40000 - Building: - Footprint: x - Dimensions: 1,1 - TerrainTypes: Clear Power: Amount: 100 vault: Inherits: ^EconBuilding + Inherits@shape: ^Buildable1x1 + Buildable: + Queue: Building + BuildPaletteOrder: 40 + Prerequisites: pressplant + Valued: + Cost: 150 Tooltip: Name: actor-vault.name - Selectable: - Bounds: 1024, 1024 Health: HP: 30000 - Building: - Footprint: x - Dimensions: 1,1 - TerrainTypes: Clear StoresPlayerResources: Capacity: 3000 + +merchtable: + Inherits: ^EconBuilding + Inherits@shape: ^Buildable2x2 + Buildable: + Queue: Building + BuildPaletteOrder: 30 + Prerequisites: pressplant + Valued: + Cost: 300 + Tooltip: + Name: actor-merchtable.name + Health: + HP: 80000 + Production: + Produces: Infantry + Exit@1: + ExitCell: 0, 2 + Power: + Amount: -10 + +garage: + Inherits: ^EconBuilding + Inherits@shape: ^Buildable2x2 + Buildable: + Queue: Building + BuildPaletteOrder: 50 + Prerequisites: pressplant + Valued: + Cost: 2000 + Tooltip: + Name: actor-garage.name + Health: + HP: 110000 + Production: + Produces: Vehicle + Exit@1: + ExitCell: 0, 2 + Power: + Amount: -20 diff --git a/mods/vinylgod/rules/palettes.yaml b/mods/vinylgod/rules/palettes.yaml index 07b2fb6..b0b619d 100644 --- a/mods/vinylgod/rules/palettes.yaml +++ b/mods/vinylgod/rules/palettes.yaml @@ -3,6 +3,8 @@ Name: greyscale PaletteFromGrayscale@terrain: Name: terrain + PaletteFromGrayscale@chrome: + Name: chrome PlayerColorPalette@player: BasePalette: greyscale PlayerColorShift: diff --git a/mods/vinylgod/rules/player.yaml b/mods/vinylgod/rules/player.yaml index 005961d..e72dddb 100644 --- a/mods/vinylgod/rules/player.yaml +++ b/mods/vinylgod/rules/player.yaml @@ -10,6 +10,17 @@ player: ResourceValues: Wax: 25 PowerManager: + TechTree: + PlaceBuilding: + ClassicProductionQueue@Building: + Type: Building + Group: Building + ClassicProductionQueue@Vehicle: + Type: Vehicle + Group: Vehicle + ClassicProductionQueue@Infantry: + Type: Infantry + Group: Infantry editorplayer: Inherits: ^baseplayer diff --git a/mods/vinylgod/rules/world.yaml b/mods/vinylgod/rules/world.yaml index 20dcb05..c1ff4a9 100644 --- a/mods/vinylgod/rules/world.yaml +++ b/mods/vinylgod/rules/world.yaml @@ -29,8 +29,8 @@ world: SpawnMapActors: SpawnStartingUnits: StartingUnits@Vinylgod: - BaseActor: pressplant - SupportActors: ampstack + BaseActor: popupvan + SupportActors: digger Factions: vinylgod ClassName: options-starting-units.unlabeled BuildingInfluence: @@ -40,6 +40,12 @@ world: TerrainSpeeds: Clear: 100 Wax: 80 + Locomotor@FOOT: + Name: foot + SharesCell: true + TerrainSpeeds: + Clear: 100 + Wax: 70 ResourceLayer: RecalculateResourceDensity: true ResourceTypes: diff --git a/mods/vinylgod/sequences/assets/clock.png b/mods/vinylgod/sequences/assets/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..5be3594f2d8ec3e23adc2bff38203b4f285e5ade GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtnVv3=Ar*7pUOdg)V8Fu?Xzr3d z#aZW9jr7wkL+4h#W`lX#CZMz$o_^Z)1;$jxSmS9s*B`+)CC#bVtB ihaWPsT|hxw8Py+5NpgOWUKbB^B!j1`pUXO@geCy2IYR>g literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/djgrunt.png b/mods/vinylgod/sequences/assets/djgrunt.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab367ce3bbf5fb4d4586288292d29c10fb87a97 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`=AJH&Ar*6y6C_L={Jb98YtHz^ z_UHQCZ}UZbwlFH(K4HW#d-Kb5hJ6R5mEsn7=>+J?3gjMWU}Wg{=D04|XEDkO7aw#d8N4 z4TYKwm3E61x-fCd?Cw4NJ7`_$uPe@%QYWf-{<`q9B+^=+VR3B!_pP6qfchc8K>NVw z9lydE?$5c;&nd9;gbZ846SM1b3Xi>Riz$4LyU(}a(Q~#2JqA&Ic~_v01KSv;>dQNR zU~}~xH=FN)tjE*O l%h^}NK`jMQ9+On|eq#{!>bke?xpVJ}D2<{3;|lrqjG@&zy_UaXgJ$W(Y;w~oQBff;5Ig9u}oCIiRG ZO2)fy?D)*WHk<>=c)I$ztaD0e0swR3P~rdp literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/icon_digger.png b/mods/vinylgod/sequences/assets/icon_digger.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e62969f27f57d86a8860cb1c447f03bdbe8c39 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4nSSU6WKcQB{6KQSccWVzdl(qzFy#Cf%~-3- zxJ1C@8RG%21QEw;7^4()e)%)6;7z%EUi1J@0n8qT2CV~ntPF~(`hlxv U-AwuZ8RU8fPgg&ebxsLQ08JZAzW@LL literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/icon_djgrunt.png b/mods/vinylgod/sequences/assets/icon_djgrunt.png new file mode 100644 index 0000000000000000000000000000000000000000..bdebe6880c4a6571c39077e25d47c8542ee33c49 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4nSgY50%7NLa|e#Y|H$s7NmS-b#iaOeekz?*eLsfe%axcZ;nK%>Vyo z0)s8Lw?xClwYilHomWL0LK#)`^lhhGH%u#D$e?nL`GMqu??$&c_AoHaVaWL}nz2@u zafyJ*GsXj42_lZ!V!;h@EN3mxFh(ip{PJgB!JBgTyyyX*0+>Av4O$2ESQ!*m^*7Gn Uy-Y?uv>hbl>FVdQ&MBb@09`su;Q#;t literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/icon_garage.png b/mods/vinylgod/sequences/assets/icon_garage.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3632022d9ab05fd1200b2c446cfc05a22fc631 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4nSYds`8v#juaz+-tsApjH^DVBGM|Qs%+= z`YMlxX|1X}4(G3#*)|+`#dTl}gV6Np^G?e;oZT6~AoQH^1J8vj$y}B=1_nQdY5%#d zT${oW#3A*WA%XQm_X5*yO$Y6!XEM(iOa;XLwlhv)+w|@^R|1O#%pL{@!Gx(y4HM>w XPq^wgGcu~_J4nXU)z4*}Q$iB}9SBl2 literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/icon_merchtable.png b/mods/vinylgod/sequences/assets/icon_merchtable.png new file mode 100644 index 0000000000000000000000000000000000000000..3d39089f214842632191f55bd069ff1081181041 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4nSYds`8v#juaz+;6T}pjH^DVBGM|Qs%+= z`YMlxX|1X}4(G3#*)|+`#dTl}gV6Np^G?e;oZT6~AoQH^1J8vj$y}B=1_nQdY5%#d zT${oW#3A*WA%XQm_X5*yO$Y6!XEM(iOa;XLwlhv)+w|@^R|1O#%pL{@!Gx(y4HM>w X?<$b(y0>r1Jdlj1tDnm{r-UW|g`QIX literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/icon_popupshop.png b/mods/vinylgod/sequences/assets/icon_popupshop.png new file mode 100644 index 0000000000000000000000000000000000000000..8e21ead2d12a2998112ecaccc21948424281f3b7 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4nSBpHJ)c%d3(<1{|E22oRxRdRdp)*_O>ESi(wzbyVpFiK&>!P!MNd_rObo# z^;I4X(^^$|9L`@evu!x?itE4{2BGQG=be^yIJ+}|LFhT-2c8R6lDRB#3=Dn@)BbZ^ zxi*C%h(qc#LjvoC?gggZnhx4c&t#r4mBpHJ)c%d3(<1{|E22oRxRdRdp)*_O>ESi(wzbyVpFiK&>!P!MNd_rObo# z^;I4X(^^$|9L`@evu!x?itE4{2BGQG=be^yIJ+}|LFhT-2c8R6lDRB#3=Dn@)BbZ^ zxi*C%h(qc#LjvoC?gggZnhx4c&t#r4mSU6WKcQB{6KQSccWVzdl(qzFy#Cf%~-3- zxJ1C@8RG%21QEw;7^4()e)%)6;7z%EUi1J@0n8qT2CV~ntPF~(`hlxv U-AwuZ8RU8fPgg&ebxsLQ08JZAzW@LL literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/icon_vault.png b/mods/vinylgod/sequences/assets/icon_vault.png new file mode 100644 index 0000000000000000000000000000000000000000..945fc637116fdaec2efdd7a6c7013ac907775421 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4nS)V>KB!AdIW_xsY9GCkmaVDKG>9|2o_Cn> z-=F2}EE$mzhZw%(ShJ4d43|P-<;$IS7_ZFXW>qMZV>r*ScKSuP2doSaSQ37& zcgXeSRA^mb$j=bQu$Loh^9-gfN*U)8`2v^|FV;&qWGcL_TgTwmzznm9L4+|(lY!%8 YC8J70Nx_{mK6Q|cr>mdKI;Vst0ALSKvH$=8 literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/merchtable.png b/mods/vinylgod/sequences/assets/merchtable.png new file mode 100644 index 0000000000000000000000000000000000000000..b03ac82ed672f6e3d6c289b97fb4f6ad3a54c372 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ6i*k&kcv6U2@XEDkO7awMZF_z zXHHu59F|&Xq14FYcjw5{TFvWLwXYOkZu6X^QoABHZ|x_h3%4KF(h)Wf9@~@uqr%$x|jo~#X?Ns^HXJx zeIVU3d=pv)Zn8H-GAtHcR6T>sfNNp;zmkTymU}n78C(S2&cw1k5bv1yc^Y#C`=pFVdQ&MBb@0LzzL+W-In literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/assets/popupvan.png b/mods/vinylgod/sequences/assets/popupvan.png new file mode 100644 index 0000000000000000000000000000000000000000..c77e45e60949991f8b1c8c6649bf9221f1ebb0d5 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj9-c0aAr*6y6C_xdFj#7~{=ag7 zIsM?~TC@Kv8{K!XE-+Zu$$CR+a+cTwZ^P#MOi7piKKRBMtFxd|Ymv8|0&9Pi!#>u< c4AKk?Jbx6N#N(Kr0nKFaboFyt=akR{0Dh1uIsgCw literal 0 HcmV?d00001 diff --git a/mods/vinylgod/sequences/economy.yaml b/mods/vinylgod/sequences/economy.yaml index beb23cc..12411ed 100644 --- a/mods/vinylgod/sequences/economy.yaml +++ b/mods/vinylgod/sequences/economy.yaml @@ -2,18 +2,60 @@ resources: wax01: Filename: sequences/assets/wax.png +clock: + idle: + Filename: sequences/assets/clock.png + digger: idle: Filename: sequences/assets/digger.png + icon: + Filename: sequences/assets/icon_digger.png + +popupvan: + idle: + Filename: sequences/assets/popupvan.png + icon: + Filename: sequences/assets/icon_popupvan.png + +djgrunt: + idle: + Filename: sequences/assets/djgrunt.png + icon: + Filename: sequences/assets/icon_djgrunt.png + +popupshop: + idle: + Filename: sequences/assets/popupshop.png + icon: + Filename: sequences/assets/icon_popupshop.png pressplant: idle: Filename: sequences/assets/pressplant.png + icon: + Filename: sequences/assets/icon_pressplant.png ampstack: idle: Filename: sequences/assets/ampstack.png + icon: + Filename: sequences/assets/icon_ampstack.png vault: idle: Filename: sequences/assets/vault.png + icon: + Filename: sequences/assets/icon_vault.png + +merchtable: + idle: + Filename: sequences/assets/merchtable.png + icon: + Filename: sequences/assets/icon_merchtable.png + +garage: + idle: + Filename: sequences/assets/garage.png + icon: + Filename: sequences/assets/icon_garage.png diff --git a/tools/gen_placeholders.py b/tools/gen_placeholders.py index 9bb73a8..9a3852a 100644 --- a/tools/gen_placeholders.py +++ b/tools/gen_placeholders.py @@ -75,3 +75,52 @@ box_sprite(os.path.join(OUT, 'digger.png'), 24, PINK, DARK) box_sprite(os.path.join(OUT, 'pressplant.png'), 64, DARK, PINK) box_sprite(os.path.join(OUT, 'ampstack.png'), 32, GREY, PINK) box_sprite(os.path.join(OUT, 'vault.png'), 32, DARK, GREY) + +# Phase B: production actors +GREEN = (80, 200, 120, 255) +BLUE = (80, 140, 220, 255) +GOLD = (230, 190, 60, 255) +box_sprite(os.path.join(OUT, 'popupvan.png'), 24, GOLD, DARK) +box_sprite(os.path.join(OUT, 'popupshop.png'), 64, GOLD, PINK) +box_sprite(os.path.join(OUT, 'merchtable.png'), 32, GREEN, DARK) +box_sprite(os.path.join(OUT, 'garage.png'), 64, BLUE, DARK) +box_sprite(os.path.join(OUT, 'djgrunt.png'), 16, PINK, DARK) + + +def icon(path, body): + w, h = 64, 48 + px = canvas(w, h) + rect(px, w, 2, 2, w - 2, h - 2, DARK) + rect(px, w, 4, 4, w - 4, h - 4, body) + disc(px, w, w / 2, h / 2, 10, DARK) + disc(px, w, w / 2, h / 2, 3, body) + write_png(path, w, h, px) + + +for name, col in [('popupshop', GOLD), ('ampstack', GREY), ('pressplant', (255, 45, 150, 255)), + ('vault', (70, 65, 75, 255)), ('merchtable', GREEN), ('garage', BLUE), + ('digger', PINK), ('popupvan', GOLD), ('djgrunt', (255, 120, 180, 255))]: + icon(os.path.join(OUT, f'icon_{name}.png'), col) + +# clock overlay for production progress (single frame, semi-transparent) +px = canvas(48, 48, (0, 0, 0, 110)) +disc(px, 48, 24, 24, 10, (255, 45, 150, 180)) +write_png(os.path.join(OUT, 'clock.png'), 48, 48, px) + +# production type tab icons: rows building/infantry/vehicle x cols normal/disabled/alert +# ponytail: 64x64 because chrome textures must be power-of-two +w, h = 64, 64 +px = canvas(w, h) +cols = [PINK, GREY, (255, 255, 255, 255)] +for r, shape in enumerate(('rect', 'dot', 'disc')): + for c, col in enumerate(cols): + ox, oy = c * 16, r * 16 + if shape == 'rect': + rect(px, w, ox + 3, oy + 3, ox + 13, oy + 13, col) + elif shape == 'dot': + disc(px, w, ox + 8, oy + 8, 3, col) + else: + disc(px, w, ox + 8, oy + 8, 6, col) + disc(px, w, ox + 8, oy + 8, 2, DARK) +CHROME = os.path.join(os.path.dirname(__file__), '..', 'mods', 'vinylgod', 'chrome', 'assets') +write_png(os.path.join(CHROME, 'production-icons.png'), w, h, px)