Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
c6b572a
Create new TriumphConfig entity
cmnemoi Apr 30, 2025
c088394
First version of the service computing the triumph when listening to …
cmnemoi May 1, 2025
65c7195
Example of giving triumph targeting Daedalus Finished event
cmnemoi May 1, 2025
850b733
Earning triumph now prints a custom log
cmnemoi May 1, 2025
e3ea491
fix: Target daedalus new cycle event for cyclic triumph gain to avoid…
cmnemoi May 1, 2025
4a60b7c
Do not give cyclic triumph to inactive players. add a test to check d…
cmnemoi May 1, 2025
bc750a4
fix: Ensure quantity returned from TriumphConfig logging is always po…
cmnemoi May 1, 2025
eb16c71
feat: Add new French translations for triumph events and update exist…
cmnemoi May 1, 2025
e9290e5
feat: Introduce SOL_MUSH_INTRUDER triumph configuration and update re…
cmnemoi May 2, 2025
01e7677
Handle triumph given by Daedalus finished event
cmnemoi May 3, 2025
f85dc9b
style: apply linter fixes
cmnemoi May 3, 2025
a5a9cc1
style: apply linter fixes
cmnemoi May 3, 2025
75b6649
Apply 1 suggestion(s) to 1 file(s)
cmnemoi May 14, 2025
a322f98
fix: update triumph scope names so there are more accurate
cmnemoi May 16, 2025
c3017e6
style: apply linter fixes
cmnemoi May 24, 2025
0b1eea3
refactor: a single integration test file for all triumph source events
cmnemoi May 26, 2025
1649d6c
docs: Add documentation on how to add a new triumph
cmnemoi May 26, 2025
ad14ca0
feat: Change triumph icon for Mush players
cmnemoi May 26, 2025
9f8dd5e
feat: Add MUSH_INITIAL_BONUS triumph
cmnemoi May 26, 2025
fc234a4
style: apply linter fixes
cmnemoi May 26, 2025
2f73e8c
test: remove stale tests
cmnemoi May 26, 2025
3d2be5b
test: Chun still gains Chun lives! when inactive!
cmnemoi May 26, 2025
7492e23
docs: Improve documentation
cmnemoi May 26, 2025
d6283bd
refactor: Improve PHPDocs
cmnemoi May 27, 2025
93febb1
fix: Triumph cannot go lower than 0
cmnemoi May 28, 2025
da08c40
update API platform triumphConfig routes
cmnemoi May 28, 2025
0980182
test: adapt test to the fact triumph cannot be negative
cmnemoi May 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Api/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,10 @@
"php vendor/bin/codecept run tests/unit/Status",
"php vendor/bin/codecept run tests/functional/Status"
],
"test:triumph": [
"php vendor/bin/codecept run tests/unit/Triumph",
"php vendor/bin/codecept run tests/functional/Triumph"
],
"test:unit": [
"php vendor/bin/codecept run tests/unit"
],
Expand Down
2 changes: 1 addition & 1 deletion Api/config/api_platform/resources/game_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Mush\Game\Entity\GameConfig:
collection: true
triumphConfig:
subresource:
resourceClass: 'Mush\Game\Entity\TriumphConfig'
resourceClass: 'Mush\Triumph\Entity\TriumphConfig'
collection: true
diseaseCauseConfig:
subresource:
Expand Down
2 changes: 1 addition & 1 deletion Api/config/api_platform/resources/triumph_config.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Mush\Game\Entity\TriumphConfig:
Mush\Triumph\Entity\TriumphConfig:
shortName: 'TriumphConfig'
description: 'eMush Triumph Config'
attributes:
Expand Down
20 changes: 15 additions & 5 deletions Api/config/api_platform/serialization/triumph_config.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
Mush\Game\Entity\TriumphConfig:
Mush\Triumph\Entity\TriumphConfig:
attributes:
id:
groups: [ 'triumph_config_read' ]
key:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
name:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
triumph:
scope:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
targetedEvent:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
targetedEventExpectedTags:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
target:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
quantity:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
visibility:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
isAllCrew:
regressiveFactor:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
team:
groups: [ 'triumph_config_read', 'triumph_config_write' ]
27 changes: 21 additions & 6 deletions Api/config/api_platform/validation/triumph_config.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
Mush\Game\Entity\TriumphConfig:
Mush\Triumph\Entity\TriumphConfig:
properties:
key:
- NotBlank: ~
- Type: string
name:
- NotBlank: ~
- Type: Mush\Triumph\Enum\TriumphEnum
scope:
- NotBlank: ~
- Type: Mush\Triumph\Enum\TriumphScope
targetedEvent:
- NotBlank: ~
- Type: string
triumph:
targetedEventExpectedTags:
- NotBlank: ~
- Type: array
target:
- NotBlank: ~
- Type: string
quantity:
- NotBlank: ~
- Type: integer
isAllCrew:
visibility:
- NotBlank: ~
- Type: boolean
team:
- Type: Mush\Triumph\Enum\TriumphVisibility
regressiveFactor:
- NotBlank: ~
- Type: string
- Type: integer
6 changes: 6 additions & 0 deletions Api/config/packages/doctrine.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,10 @@ doctrine:
dir: '%kernel.project_dir%/src/Communications/Entity'
prefix: 'Mush\Communications\Entity'
alias: Communications
Triumph:
is_bundle: false
type: attribute
dir: '%kernel.project_dir%/src/Triumph/Entity'
prefix: 'Mush\Triumph\Entity'
alias: Triumph

4 changes: 0 additions & 4 deletions Api/config/routes/annotations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@ communication:
resource: ../../src/Chat/Controller/
type: annotation
prefix: /api/v1
#game:
# resource: ../../src/Game/Controller/
# type: annotation
# prefix: /api/v1
alert:
resource: ../../src/Alert/Controller/
type: annotation
Expand Down
1 change: 1 addition & 0 deletions Api/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ imports:
- { resource: ../src/Project/config/services.yaml }
- { resource: ../src/Skill/config/services.yaml }
- { resource: ../src/Communications/config/services.yaml }
- { resource: ../src/Triumph/config/services.yaml }


services:
Expand Down
54 changes: 54 additions & 0 deletions Api/migrations/Version20250501184525.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20250501184525 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('DROP INDEX uniq_a53fc4e45e237e06');
$this->addSql('ALTER TABLE triumph_config ADD scope VARCHAR(255) DEFAULT \'\' NOT NULL');
$this->addSql('ALTER TABLE triumph_config ADD targeted_event VARCHAR(255) DEFAULT \'\' NOT NULL');
$this->addSql('ALTER TABLE triumph_config ADD targeted_event_expected_tags TEXT DEFAULT \'a:0:{}\' NOT NULL');
$this->addSql('ALTER TABLE triumph_config ADD target VARCHAR(255) DEFAULT \'\' NOT NULL');
$this->addSql('ALTER TABLE triumph_config ADD visibility VARCHAR(255) DEFAULT \'\' NOT NULL');
$this->addSql('ALTER TABLE triumph_config ADD regressive_factor INT DEFAULT 0 NOT NULL');
$this->addSql('ALTER TABLE triumph_config DROP is_all_crew');
$this->addSql('ALTER TABLE triumph_config ALTER name SET DEFAULT \'\'');
$this->addSql('ALTER TABLE triumph_config RENAME COLUMN team TO key');
$this->addSql('ALTER TABLE triumph_config RENAME COLUMN triumph TO quantity');
$this->addSql('COMMENT ON COLUMN triumph_config.targeted_event_expected_tags IS \'(DC2Type:array)\'');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE triumph_config ADD is_all_crew BOOLEAN NOT NULL DEFAULT FALSE');
$this->addSql('ALTER TABLE triumph_config ADD triumph INT DEFAULT 0 NOT NULL');
$this->addSql('ALTER TABLE triumph_config ADD team VARCHAR(255) DEFAULT \'\' NOT NULL');
$this->addSql('ALTER TABLE triumph_config DROP key');
$this->addSql('ALTER TABLE triumph_config DROP scope');
$this->addSql('ALTER TABLE triumph_config DROP targeted_event');
$this->addSql('ALTER TABLE triumph_config DROP targeted_event_expected_tags');
$this->addSql('ALTER TABLE triumph_config DROP target');
$this->addSql('ALTER TABLE triumph_config DROP quantity');
$this->addSql('ALTER TABLE triumph_config DROP visibility');
$this->addSql('ALTER TABLE triumph_config DROP regressive_factor');
$this->addSql('ALTER TABLE triumph_config ALTER name DROP DEFAULT');
$this->addSql('CREATE UNIQUE INDEX uniq_a53fc4e45e237e06 ON triumph_config (name)');
}
}
10 changes: 10 additions & 0 deletions Api/src/Daedalus/Entity/Daedalus.php
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,16 @@ public function getAlivePlayerByNameOrThrow(string $name): Player
return $player;
}

public function getHumanPlayers(): PlayerCollection
{
return $this->getPlayers()->getHumanPlayer();
}

public function getMushPlayers(): PlayerCollection
{
return $this->getPlayers()->getMushPlayer();
}

public function getVisibleResearchProjectsForPlayer(Player $player): ProjectCollection
{
return $this
Expand Down
21 changes: 20 additions & 1 deletion Api/src/Daedalus/Event/DaedalusCycleEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,16 @@
use Mush\Daedalus\Entity\Daedalus;
use Mush\Game\Event\AbstractGameEvent;
use Mush\Modifier\Entity\Collection\ModifierCollection;
use Mush\Player\Entity\Collection\PlayerCollection;
use Mush\Triumph\Entity\TriumphConfig;
use Mush\Triumph\Enum\TriumphScope;
use Mush\Triumph\Event\TriumphSourceEventInterface;
use Mush\Triumph\Event\TriumphSourceEventTrait;

class DaedalusCycleEvent extends AbstractGameEvent
class DaedalusCycleEvent extends AbstractGameEvent implements TriumphSourceEventInterface
{
use TriumphSourceEventTrait;

public const string DAEDALUS_NEW_CYCLE = 'daedalus.new.cycle';

protected Daedalus $daedalus;
Expand Down Expand Up @@ -44,4 +51,16 @@ public function getLinkWithSolCycleKillChance(): int
{
return $this->daedalus->getGameConfig()->getDifficultyConfig()->getLinkWithSolCycleFailureRate();
}

public function getTargetsForTriumph(TriumphConfig $triumphConfig): PlayerCollection
{
return match ($triumphConfig->getScope()) {
TriumphScope::ALL_ACTIVE_HUMANS => $this->daedalus->getAlivePlayers()->getHumanPlayer()->getActivePlayers(),
TriumphScope::ALL_ALIVE_HUMANS => $this->daedalus->getAlivePlayers()->getHumanPlayer(),
TriumphScope::ALL_ALIVE_MUSHS => $this->daedalus->getAlivePlayers()->getMushPlayer(),
TriumphScope::ALL_MUSHS => $this->daedalus->getMushPlayers(),
TriumphScope::PERSONAL => $this->daedalus->getAlivePlayers()->getAllByName($triumphConfig->getTarget()),
default => throw new \LogicException('Unsupported triumph scope: ' . $triumphConfig->getScope()->value),
};
}
}
8 changes: 4 additions & 4 deletions Api/src/Daedalus/Factory/DaedalusFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@
use Mush\Equipment\Enum\EquipmentEnum;
use Mush\Equipment\Factory\GameEquipmentFactory;
use Mush\Game\ConfigData\DifficultyConfigData;
use Mush\Game\ConfigData\TriumphConfigData;
use Mush\Game\Entity\DifficultyConfig;
use Mush\Game\Entity\GameConfig;
use Mush\Game\Entity\LocalizationConfig;
use Mush\Game\Entity\TriumphConfig;
use Mush\Game\Enum\LanguageEnum;
use Mush\Hunter\ConfigData\HunterConfigData;
use Mush\Hunter\Entity\HunterConfig;
Expand All @@ -36,6 +34,8 @@
use Mush\Player\Entity\Config\CharacterConfig;
use Mush\Skill\ConfigData\SkillConfigData;
use Mush\Skill\Entity\SkillConfig;
use Mush\Triumph\ConfigData\TriumphConfigData;
use Mush\Triumph\Entity\TriumphConfig;
use Symfony\Component\Uid\Uuid;

final class DaedalusFactory
Expand Down Expand Up @@ -207,8 +207,8 @@ private static function getTriumphConfigs(): ArrayCollection
{
/** @var ArrayCollection<array-key, TriumphConfig> $triumpthConfigs */
$triumpthConfigs = new ArrayCollection();
foreach (TriumphConfigData::$dataArray as $triumpthConfigData) {
$triumpthConfigs->add(TriumphConfig::fromConfigData($triumpthConfigData));
foreach (TriumphConfigData::getAll() as $triumpthConfigData) {
$triumpthConfigs->add(TriumphConfig::fromDto($triumpthConfigData));
}

return $triumpthConfigs;
Expand Down
Loading