mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
[MIRROR] Add character portraits to the character directory (#11056)
Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
committed by
GitHub
parent
d3bb767730
commit
d26a83b799
@@ -86,6 +86,9 @@
|
|||||||
id_card.species = "[custom_species ? "[custom_species] ([species.name])" : species.name]"
|
id_card.species = "[custom_species ? "[custom_species] ([species.name])" : species.name]"
|
||||||
id_card.sex = capitalize(name_gender())
|
id_card.sex = capitalize(name_gender())
|
||||||
|
|
||||||
|
// Save time by reusing our ID card photo instead of generating it for the char directory specifically
|
||||||
|
set_chardirectory_photo(id_card.front)
|
||||||
|
|
||||||
/obj/item/card/id/tgui_data(mob/user)
|
/obj/item/card/id/tgui_data(mob/user)
|
||||||
var/list/data = list()
|
var/list/data = list()
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,19 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
GLOBAL_LIST_EMPTY(chardirectory_photos)
|
||||||
|
/mob/proc/set_chardirectory_photo(base64)
|
||||||
|
LAZYSET(GLOB.chardirectory_photos, REF(src), base64)
|
||||||
|
|
||||||
|
/mob/proc/get_chardirectory_photo()
|
||||||
|
if(LAZYACCESS(GLOB.chardirectory_photos, REF(src)))
|
||||||
|
return LAZYACCESS(GLOB.chardirectory_photos, REF(src))
|
||||||
|
|
||||||
|
var/icon/F = getFlatIcon(src, defdir = SOUTH, no_anim = TRUE)
|
||||||
|
var/new_base64 = "'data:image/png;base64,[icon2base64(F)]'"
|
||||||
|
set_chardirectory_photo(new_base64)
|
||||||
|
return new_base64
|
||||||
|
|
||||||
/datum/character_directory/tgui_static_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
/datum/character_directory/tgui_static_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||||
var/list/data = ..()
|
var/list/data = ..()
|
||||||
|
|
||||||
@@ -74,6 +87,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
var/tag
|
var/tag
|
||||||
var/erptag
|
var/erptag
|
||||||
var/character_ad
|
var/character_ad
|
||||||
|
var/photo = C.mob?.get_chardirectory_photo()
|
||||||
if (C.mob?.mind) //could use ternary for all three but this is more efficient
|
if (C.mob?.mind) //could use ternary for all three but this is more efficient
|
||||||
tag = C.mob.mind.directory_tag || "Unset"
|
tag = C.mob.mind.directory_tag || "Unset"
|
||||||
erptag = C.mob.mind.directory_erptag || "Unset"
|
erptag = C.mob.mind.directory_erptag || "Unset"
|
||||||
@@ -238,6 +252,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
"character_ad" = character_ad,
|
"character_ad" = character_ad,
|
||||||
"flavor_text" = flavor_text,
|
"flavor_text" = flavor_text,
|
||||||
"custom_link" = custom_link,
|
"custom_link" = custom_link,
|
||||||
|
"photo" = photo,
|
||||||
)))
|
)))
|
||||||
|
|
||||||
data["directory"] = directory_mobs
|
data["directory"] = directory_mobs
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useBackend } from 'tgui/backend';
|
import { useBackend } from 'tgui/backend';
|
||||||
import { Button, Section, Table } from 'tgui-core/components';
|
import { Button, Image, Section, Stack, Table } from 'tgui-core/components';
|
||||||
|
|
||||||
import { SortButton } from './CharacterDirectorySortButton';
|
import { SortButton } from './CharacterDirectorySortButton';
|
||||||
import { getTagColor } from './constants';
|
import { getTagColor } from './constants';
|
||||||
@@ -36,6 +36,7 @@ export const CharacterDirectoryList = (props: {
|
|||||||
>
|
>
|
||||||
<Table>
|
<Table>
|
||||||
<Table.Row bold>
|
<Table.Row bold>
|
||||||
|
<Table.Cell collapsing>Photo</Table.Cell>
|
||||||
<SortButton
|
<SortButton
|
||||||
id="name"
|
id="name"
|
||||||
sortId={sortId}
|
sortId={sortId}
|
||||||
@@ -110,14 +111,45 @@ export const CharacterDirectoryList = (props: {
|
|||||||
})
|
})
|
||||||
.map((character, i) => (
|
.map((character, i) => (
|
||||||
<Table.Row key={i} backgroundColor={getTagColor(character.tag)}>
|
<Table.Row key={i} backgroundColor={getTagColor(character.tag)}>
|
||||||
<Table.Cell p={1}>{character.name}</Table.Cell>
|
<Table.Cell verticalAlign="middle">
|
||||||
<Table.Cell>{character.species}</Table.Cell>
|
{character.photo ? (
|
||||||
<Table.Cell>{character.tag}</Table.Cell>
|
<Stack
|
||||||
<Table.Cell>{character.gendertag}</Table.Cell>
|
align="center"
|
||||||
<Table.Cell>{character.sexualitytag}</Table.Cell>
|
justify="center"
|
||||||
<Table.Cell>{character.erptag}</Table.Cell>
|
backgroundColor="black"
|
||||||
<Table.Cell>{character.eventtag}</Table.Cell>
|
overflow="hidden"
|
||||||
<Table.Cell collapsing textAlign="right">
|
>
|
||||||
|
<Stack.Item>
|
||||||
|
<Image
|
||||||
|
fixErrors
|
||||||
|
src={character.photo.substring(
|
||||||
|
1,
|
||||||
|
character.photo.length - 1,
|
||||||
|
)}
|
||||||
|
height="64px"
|
||||||
|
/>
|
||||||
|
</Stack.Item>
|
||||||
|
</Stack>
|
||||||
|
) : null}
|
||||||
|
</Table.Cell>
|
||||||
|
<Table.Cell p={1} verticalAlign="middle">
|
||||||
|
{character.name}
|
||||||
|
</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle">
|
||||||
|
{character.species}
|
||||||
|
</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle">{character.tag}</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle">
|
||||||
|
{character.gendertag}
|
||||||
|
</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle">
|
||||||
|
{character.sexualitytag}
|
||||||
|
</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle">{character.erptag}</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle">
|
||||||
|
{character.eventtag}
|
||||||
|
</Table.Cell>
|
||||||
|
<Table.Cell verticalAlign="middle" collapsing textAlign="right">
|
||||||
<Button
|
<Button
|
||||||
onClick={() => onOverlay(character)}
|
onClick={() => onOverlay(character)}
|
||||||
color="transparent"
|
color="transparent"
|
||||||
|
|||||||
@@ -27,4 +27,5 @@ export type mobEntry = {
|
|||||||
character_ad: string;
|
character_ad: string;
|
||||||
flavor_text: string;
|
flavor_text: string;
|
||||||
custom_link: string;
|
custom_link: string;
|
||||||
|
photo: string | null;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user