Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace nanoui weapon sprite lineart with spritesheet weapon lineart #5631

Merged
merged 5 commits into from
Feb 2, 2024

Conversation

Drulikar
Copy link
Contributor

@Drulikar Drulikar commented Feb 1, 2024

About the pull request

This PR finalizes the work Stan started on but didn't finish for the weapon examine stats panels. Now rather than individual sprites in the nano ui weapons folder, the images are loaded from a couple spritesheets. Additionally, when these spritesheets are loaded, they check to ensure all gun subtypes that have a base_gun_icon match with an icon in the sprite sheet. E.g.
image

All "created" sprites are just the existing images from the nano ui weapons folders.

Explain why it's good for the game

More efficient resource distribution!

Testing Photographs and Procedure

image

Changelog

🆑 Drathek
ui: Refactored backend for Weapon Stats panel to use spritesheets instead.
/:cl:

@github-actions github-actions bot added Sprites Remove the soul from the game. UI deletes nanoui/html labels Feb 1, 2024
@harryob harryob added this pull request to the merge queue Feb 2, 2024
Merged via the queue into cmss13-devs:master with commit 4cc11f7 Feb 2, 2024
26 checks passed
cm13-github added a commit that referenced this pull request Feb 2, 2024
@Drulikar Drulikar deleted the Spritesheet_Weapon_Lineart branch February 2, 2024 20:35
github-merge-queue bot pushed a commit that referenced this pull request Feb 19, 2024
# About the pull request

This PR is a follow up to #5631 and does several things related to gun
icons:
- Autowiki now skips mags and guns with no icon_staste set (I did the
same for attachments, but none are in this scenario)
- Gun lineart now has the no_name sprite as the first sprite so it is
used again as the default sprite when no lineart exists
- Various gun linearts have been duplicated for sub types that are
basically the same icon.
- The testing for missing linearts has been fixed to check icon_state
instead of base_gun_icon because only a couple guns even assigned
base_gun_icon before Initialize
- The testing for missing linearts now skips `GUN_UNUSUAL_DESIGN` since
they can't be inspected
- The unit_test for spritesheets now enforces css requirements. See
https://www.w3.org/TR/CSS2/syndata.html#value-def-identifier
- The 88m4 has been renamed to _88m4 to comply with css requirements.
- Removed the two cases where a base_gun_icon was set in the definition
(that would just get reset in Initialize)
- Since many guns are now missing sprites in the missing lineart test,
the testing error is downgraded to only a debug log until they can all
have an exception set or the icons set. Currently all the missing
sprites are below:

<details>
<summary>Missing Sprites in
icons/obj/items/weapons/guns/lineart.dmi</summary>

- /obj/item/weapon/gun/pistol/np92, icon_state="np92"
- /obj/item/weapon/gun/pistol/np92/suppressed, icon_state="npz92"
- /obj/item/weapon/gun/pistol/np92/suppressed/tranq, icon_state="npz92"
- /obj/item/weapon/gun/pistol/t73, icon_state="tt"
- /obj/item/weapon/gun/pistol/t73/leader, icon_state="ttb"
- /obj/item/weapon/gun/pistol/clfpistol, icon_state="m43"
- /obj/item/weapon/gun/pistol/es4, icon_state="es4"
- /obj/item/weapon/gun/energy/rxfm5_eva, icon_state="rxfm5_eva"
- /obj/item/weapon/gun/launcher/rocket/anti_tank, icon_state="m83a2"
- /obj/item/weapon/gun/launcher/rocket/anti_tank/disposable,
icon_state="m83a2"
- /obj/item/weapon/gun/launcher/rocket/upp, icon_state="hjra12"
- /obj/item/weapon/gun/rifle/m41a/elite/xm40, icon_state="m40sd"
- /obj/item/weapon/gun/rifle/m41a/elite/xm40/ap, icon_state="m40sd"
- /obj/item/weapon/gun/rifle/nsg23, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/nsg23/stripped, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/nsg23/no_lock, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/nsg23/no_lock/stripped, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/mar40/lmg, icon_state="mar50"
- /obj/item/weapon/gun/rifle/mar40/lmg/tactical, icon_state="mar50"
- /obj/item/weapon/gun/rifle/xm177, icon_state="xm177"
- /obj/item/weapon/gun/rifle/xm177/dutch, icon_state="xm177"
- /obj/item/weapon/gun/rifle/ar10, icon_state="ar10"
- /obj/item/weapon/gun/rifle/m4ra, icon_state="m4ra"
- /obj/item/weapon/gun/rifle/m4ra/training, icon_state="m4ra"
- /obj/item/weapon/gun/rifle/l42a/abr40, icon_state="abr40"
- /obj/item/weapon/gun/rifle/l42a/abr40/tactical, icon_state="abr40_tac"
- /obj/item/weapon/gun/rifle/rmc_f90, icon_state="aug"
- /obj/item/weapon/gun/rifle/rmc_f90/a_grip, icon_state="aug_com"
- /obj/item/weapon/gun/rifle/rmc_f90/scope, icon_state="aug_dmr"
- /obj/item/weapon/gun/rifle/rmc_f90/shotgun, icon_state="aug_mkey"
- /obj/item/weapon/gun/rifle/m4ra_custom, icon_state="m4ra_custom"
- /obj/item/weapon/gun/rifle/sniper/XM43E1, icon_state="xm43e1"
- /obj/item/weapon/gun/rifle/sniper/svd, icon_state="type88"
- /obj/item/weapon/gun/boltaction, icon_state="boltaction"
- /obj/item/weapon/gun/boltaction/vulture, icon_state="vulture"
- /obj/item/weapon/gun/boltaction/vulture/skillless,
icon_state="vulture"
- /obj/item/weapon/gun/lever_action, icon_state="r4t-placeholder"
- /obj/item/weapon/gun/lever_action/r4t, icon_state="r4t"
- /obj/item/weapon/gun/lever_action/xm88, icon_state="boomslang"
- /obj/item/weapon/gun/pkp, icon_state="qjy72"
- /obj/item/weapon/gun/revolver/m44/custom/pkd_special,
icon_state="lapd_2019"
- /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049,
icon_state="lapd_2049"
- /obj/item/weapon/gun/revolver/m44/custom/pkd_special/l_series,
icon_state="pkd_double"
- /obj/item/weapon/gun/revolver/m44/custom/webley, icon_state="webley"
- /obj/item/weapon/gun/revolver/upp, icon_state="zhnk72"
- /obj/item/weapon/gun/revolver/upp/shrapnel, icon_state="zhnk72"
- /obj/item/weapon/gun/shotgun/combat/riot, icon_state="mp220"
- /obj/item/weapon/gun/shotgun/combat/guard, icon_state="mp221"
- /obj/item/weapon/gun/shotgun/combat/marsoc, icon_state="mk210"
- /obj/item/weapon/gun/shotgun/type23, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/breacher, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/breacher/slug, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/breacher/flechette,
icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/dual, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/dragon, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/riot_control, icon_state="type23"
- /obj/item/weapon/gun/shotgun/double/twobore, icon_state="twobore"
- /obj/item/weapon/gun/smartgun/rmc, icon_state="magsg"
- /obj/item/weapon/gun/smg/pps43, icon_state="insasu"
- /obj/item/weapon/gun/smg/pps43/extended_mag, icon_state="insasu"
- /obj/item/weapon/gun/smg/bizon, icon_state="type64"
- /obj/item/weapon/gun/smg/bizon/upp, icon_state="type64_u"
- /obj/item/weapon/gun/smg/uzi, icon_state="uzi"
- /obj/item/weapon/gun/smg/nailgun, icon_state="nailgun"
- /obj/item/weapon/gun/smg/nailgun/compact, icon_state="cnailgun"

</details>

# Explain why it's good for the game

Now the 88m4 pistol doesn't show up as the default icon, and instead is
the no_name icon:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/6d02f72b-4a29-48d6-900a-8b7109cd5057)

Now spritesheet states that can't be displayed (such as the 88m4 because
it starts with a digit) will fail unit tests:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/180d5834-d873-46b4-9cb8-e4c0ac03d033)
but I ensured the rename to _88m4 still works correctly even with the
empty state:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/0b788b37-e993-4c25-af3a-f4f7778034ac)


# Testing Photographs and Procedure
See above.

All "new" sprites are duplicates of existing.


# Changelog
:cl: Drathek
code: Autowiki now skips guns and mags without icon_states
code: Unit testing for spritesheets now enforces css requirements for
class names
imageadd: Gun stats lineart now uses the no_name sprite again for guns
without lineart
/:cl:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Sprites Remove the soul from the game. UI deletes nanoui/html
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants