Skip to content

Commit

Permalink
Started getting other stat details views showing.
Browse files Browse the repository at this point in the history
  • Loading branch information
AdamKyle committed Jan 1, 2025
1 parent 3272587 commit 79e5335
Show file tree
Hide file tree
Showing 21 changed files with 443 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public function setCharacter(Character $character): StatModifierDetails
*/
public function forStat(string $stat): array
{

$details = [];

$details['base_value'] = number_format($this->character->{$stat});
Expand All @@ -50,7 +51,7 @@ public function forStat(string $stat): array
return $details;
}

public function buildSpecificBreakDown(string $type, bool $isVodied): array
public function buildSpecificBreakDown(string $type, bool $isVodied = false): array
{
switch ($type) {
case 'health':
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use App\Flare\Transformers\UsableItemTransformer;
use App\Game\Character\Builders\StatDetailsBuilder\StatModifierDetails;
use App\Game\Character\CharacterInventory\Services\UseItemService;
use App\Game\Character\CharacterSheet\Requests\SpecificDetailsRequest;
use App\Game\Core\Events\GlobalTimeOut;
use App\Game\Core\Jobs\EndGlobalTimeOut;
use App\Game\Core\Requests\StatDetailsRequest;
Expand Down Expand Up @@ -64,6 +65,18 @@ public function statBreakDown(StatDetailsRequest $request, Character $character)
]);
}

public function specificStatBreakDown(SpecificDetailsRequest $request, Character $character)
{
$breakDownDetails = [
'regular' => $this->statModifierDetails->setCharacter($character)->buildSpecificBreakDown($request->type),
'voided' => $this->statModifierDetails->setCharacter($character)->buildSpecificBreakDown($request->type, true),
];

return response()->json([
'break_down' => $breakDownDetails,
]);
}

public function basicLocationInformation(Character $character)
{
return response()->json([
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace App\Game\Character\CharacterSheet\Requests;

use Illuminate\Foundation\Http\FormRequest;

class SpecificDetailsRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'type' => 'required|string|in:health,ac,weapon_damage,spell_damage,ring_damage,heal_for',
];
}

public function messages()
{
return [];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import { useManageCharacterInventoryVisibility } from './hooks/use-manage-charac
import CharacterCardDetailsProps from './types/character-card-details-props';
import { shortenNumber } from '../../../../../util/format-number';
import { AttackTypes } from '../../../../character-sheet/enums/attack-types';
import { StatTypes } from '../../../../character-sheet/enums/stat-types';
import { useManageAttackDetailsBreakdown } from '../../../../character-sheet/hooks/use-manage-attack-details-breakdown';
import { useManageStatDetailsBreakdown } from '../../../../character-sheet/hooks/use-manage-stat-details-breakdown';
import { useManageCharacterSheetVisibility } from '../../../../hooks/use-manage-character-sheet-visibility';
import XpBar from '../../../components/character-details/xp-bar';

Expand All @@ -20,6 +22,7 @@ const CharacterCardDetails = ({
const { openCharacterSheet } = useManageCharacterSheetVisibility();
const { openCharacterInventory } = useManageCharacterInventoryVisibility();
const { openAttackDetails } = useManageAttackDetailsBreakdown();
const { openStatDetails } = useManageStatDetailsBreakdown();

const characterInventorProgress =
(characterData.inventory_count.inventory_count /
Expand All @@ -34,19 +37,75 @@ const CharacterCardDetails = ({
<h4 className="text-danube-500 dark:text-danube-700">Stats</h4>
<Separator />
<dl className="text-gray-600 dark:text-gray-700">
<dt className="font-bold">Str:</dt>
<dt className="font-bold">
<LinkButton
label={'Str:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.STR)}
aria_label={'Str Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.str_modded)}</dd>
<dt className="font-bold">Dex:</dt>
<dt className="font-bold">
<LinkButton
label={'Dex:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.DEX)}
aria_label={'Dex Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.dex_modded)}</dd>
<dt className="font-bold">Int:</dt>
<dt className="font-bold">
<LinkButton
label={'Int:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.INT)}
aria_label={'Int Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.int_modded)}</dd>
<dt className="font-bold">Dur:</dt>
<dt className="font-bold">
<LinkButton
label={'Dur:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.DUR)}
aria_label={'Dur Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.dur_modded)}</dd>
<dt className="font-bold">Agi:</dt>
<dt className="font-bold">
<LinkButton
label={'Agi:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.AGI)}
aria_label={'Agi Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.agi_modded)}</dd>
<dt className="font-bold">Chr:</dt>
<dt className="font-bold">
<LinkButton
label={'Chr:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.CHR)}
aria_label={'Chr Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.chr_modded)}</dd>
<dt className="font-bold">Focus:</dt>
<dt className="font-bold">
<LinkButton
label={'Focus:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.FOCUS)}
aria_label={'Focus Breakdown Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.focus_modded)}</dd>
</dl>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@ import React, { ReactNode } from 'react';
import { match } from 'ts-pattern';

import { AttackTypes } from './enums/attack-types';
import { StatTypes } from './enums/stat-types';
import { useManageAttackDetailsBreakdown } from './hooks/use-manage-attack-details-breakdown';
import { useManageStatDetailsBreakdown } from './hooks/use-manage-stat-details-breakdown';
import Healing from './partials/character-attack-types/healing';
import RingDamage from './partials/character-attack-types/ring-damage';
import SpellDamage from './partials/character-attack-types/spell-damage';
import WeaponDamage from './partials/character-attack-types/weapon-damage';
import { CharacterStatTypeDetails } from './partials/character-stat-types/character-stat-type-details';
import CharacterSheetDetailsProps from './types/character-sheet-details-props';
import {
formatNumberWithCommas,
Expand All @@ -27,6 +30,7 @@ const CharacterSheetDetails = (
props: CharacterSheetDetailsProps
): ReactNode => {
const { openAttackDetails } = useManageAttackDetailsBreakdown();
const { openStatDetails } = useManageStatDetailsBreakdown();

const characterData = props.characterData;

Expand Down Expand Up @@ -55,6 +59,10 @@ const CharacterSheetDetails = (
return renderAttackDetailsType(props.attackType);
}

if (props.showStatType && props.statType !== null) {
return <CharacterStatTypeDetails stat_type={props.statType} />;
}

return (
<>
<div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-4">
Expand Down Expand Up @@ -195,19 +203,75 @@ const CharacterSheetDetails = (
</div>
<div>
<dl>
<dt className="font-bold">Modded STR:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded STR:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.STR)}
aria_label={'Modded Str Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.str_modded)}</dd>
<dt className="font-bold">Modded DEX:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded DEX:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.DEX)}
aria_label={'Modded Dex Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.dex_modded)}</dd>
<dt className="font-bold">Modded INT:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded INT:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.INT)}
aria_label={'Modded Int Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.int_modded)}</dd>
<dt className="font-bold">Modded DUR:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded DUR:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.DUR)}
aria_label={'Modded Dur Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.dur_modded)}</dd>
<dt className="font-bold">Modded AGI:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded AGI:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.AGI)}
aria_label={'Modded Agi Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.agi_modded)}</dd>
<dt className="font-bold">Modded CHR:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded CHR:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.CHR)}
aria_label={'Modded Chr Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.chr_modded)}</dd>
<dt className="font-bold">Modded FOCUS:</dt>
<dt className="font-bold">
<LinkButton
label={'Modded FOCUS:'}
variant={ButtonVariant.PRIMARY}
on_click={() => openStatDetails(StatTypes.FOCUS)}
aria_label={'Modded Focus Link'}
additional_css={'font-bold'}
/>
</dt>
<dd>{shortenNumber(characterData.focus_modded)}</dd>
</dl>
<h3 className="text-danube-500 dark:text-danube-700 mt-5">
Expand Down
Loading

0 comments on commit 79e5335

Please sign in to comment.