From 52b2951d6ae6cf13bcad94f0043bd6ad14efab9c Mon Sep 17 00:00:00 2001 From: iamsirenstorm <120330118+iamsirenstorm@users.noreply.github.com> Date: Sat, 25 Apr 2026 04:18:44 -0500 Subject: [PATCH] feat: add campaign manager entity --- fgd/point/info/info_campaign_manager.fgd | 24 ++++++++++++++++++ .../editor/info_campaign_manager.vmt | 8 ++++++ .../editor/info_campaign_manager.vtf | Bin 0 -> 5712 bytes 3 files changed, 32 insertions(+) create mode 100644 fgd/point/info/info_campaign_manager.fgd create mode 100644 hammer/materials/editor/info_campaign_manager.vmt create mode 100644 hammer/materials/editor/info_campaign_manager.vtf diff --git a/fgd/point/info/info_campaign_manager.fgd b/fgd/point/info/info_campaign_manager.fgd new file mode 100644 index 000000000..a3c0ca549 --- /dev/null +++ b/fgd/point/info/info_campaign_manager.fgd @@ -0,0 +1,24 @@ +@PointClass base(BaseEntity) + appliesto(P2CE) + iconsprite("editor/info_campaign_manager.vmt") += info_campaign_manager: "Management entity for campaign/workshop maps. Used to transition to other maps or change campaign state." + [ + + // Control Functions + input PreviousMap(void) : "Immediately load the previous map in the campaign script." + input NextMap(void) : "Immediately load the next map in the campaign script." + input MarkCampaignComplete(void) : "Mark the campaign as completed. Will unlock all chapters." + input ExitGame(void) : "Trigger the evaluation screen where a player can vote on your campaign/map." + + // TODO: make campaign system handle non-linear stuff + // better before implementing this! + // ------------------------------------------------------ + // Getter Functions + // input GetChapterProgress(void) : "" + // input GetCampaignProgress(void) : "" + // Setter Functions + // input SetChapterLockState(string) : "" + // Outputs + // output OnGetChapterProgress(int) : "" + // output OnGetCampaignProgress(int) : "" + ] diff --git a/hammer/materials/editor/info_campaign_manager.vmt b/hammer/materials/editor/info_campaign_manager.vmt new file mode 100644 index 000000000..2dbb54384 --- /dev/null +++ b/hammer/materials/editor/info_campaign_manager.vmt @@ -0,0 +1,8 @@ +Sprite +{ + $baseTexture "editor/info_campaign_manager" + $spriteorientation "vp_parallel" + $spriteorigin "[ 0.50 0.50 ]" + $spriterendermode 2 + $no_fullbright 1 +} diff --git a/hammer/materials/editor/info_campaign_manager.vtf b/hammer/materials/editor/info_campaign_manager.vtf new file mode 100644 index 0000000000000000000000000000000000000000..0c72c60e7cea7b14ee6048b948238da119d355e3 GIT binary patch literal 5712 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 literal 0 HcmV?d00001