@turnipxenon/pineapple 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -0
- package/dist/app.postcss +94 -0
- package/dist/assets/bg_tiled/bg_tiled_ares.png +0 -0
- package/dist/assets/bg_tiled/bg_tiled_corn.png +0 -0
- package/dist/assets/bg_tiled/bg_tiled_pineapple.png +0 -0
- package/dist/assets/bg_tiled/bg_tiled_reinhard.png +0 -0
- package/dist/assets/bg_tiled/bg_tiled_tomato.png +0 -0
- package/dist/assets/bg_tiled/bg_tiled_turnip.png +0 -0
- package/dist/assets/characters/ares/ares_blushing.webp +0 -0
- package/dist/assets/characters/ares/ares_disappointed.webp +0 -0
- package/dist/assets/characters/ares/ares_happy.webp +0 -0
- package/dist/assets/characters/ares/ares_lets_go.webp +0 -0
- package/dist/assets/characters/ares/ares_logo.webp +0 -0
- package/dist/assets/characters/ares/ares_mad.webp +0 -0
- package/dist/assets/characters/ares/ares_neutral.webp +0 -0
- package/dist/assets/characters/ares/ares_slightly_mad.webp +0 -0
- package/dist/assets/characters/ares/ares_surprised.webp +0 -0
- package/dist/assets/characters/ares/ares_yay.webp +0 -0
- package/dist/assets/game_dev/footage-chef-wings.gif +0 -0
- package/dist/assets/game_dev/footage-depreciation.webm +0 -0
- package/dist/assets/game_dev/footage-thinking-of-flowers.webm +0 -0
- package/dist/assets/game_dev/screenshot-game-jam-mama.png +0 -0
- package/dist/assets/game_dev/screenshot-string-hop.png +0 -0
- package/dist/assets/game_dev/screenshot-wet-ass-road.png +0 -0
- package/dist/assets/icons/chat_cursor.svg +47 -0
- package/dist/assets/icons/external_link.svg +50 -0
- package/dist/assets/temp/background-image.jpg +0 -0
- package/dist/assets/temp/bitbucket-logo.png +0 -0
- package/dist/assets/temp/github-logo.png +0 -0
- package/dist/assets/temp/header-hep-cat.mp4 +0 -0
- package/dist/assets/temp/header-hep-cat.ogg +0 -0
- package/dist/assets/temp/header-hep-cat.webm +0 -0
- package/dist/assets/temp/header-pengi.mp4 +0 -0
- package/dist/assets/temp/header-pengi.webm +0 -0
- package/dist/assets/temp/header-soulwork.mp4 +0 -0
- package/dist/assets/temp/header-soulwork.ogg +0 -0
- package/dist/assets/temp/header-soulwork.webm +0 -0
- package/dist/components/DialogOverlay.svelte +93 -0
- package/dist/components/DialogOverlay.svelte.d.ts +14 -0
- package/dist/components/LazyAsset.svelte +96 -0
- package/dist/components/LazyAsset.svelte.d.ts +20 -0
- package/dist/components/LazyAssetType.d.ts +10 -0
- package/dist/components/LazyAssetType.js +12 -0
- package/dist/components/PineappleBaseLayout.svelte +186 -0
- package/dist/components/PineappleBaseLayout.svelte.d.ts +19 -0
- package/dist/components/RandomizedBackground.svelte +62 -0
- package/dist/components/RandomizedBackground.svelte.d.ts +16 -0
- package/dist/components/RandomizedImage.svelte +29 -0
- package/dist/components/RandomizedImage.svelte.d.ts +17 -0
- package/dist/components/dialog_manager/DialogManager.d.ts +77 -0
- package/dist/components/dialog_manager/DialogManager.js +239 -0
- package/dist/components/dialog_manager/DialogManagerStore.d.ts +41 -0
- package/dist/components/dialog_manager/DialogManagerStore.js +45 -0
- package/dist/components/dialog_manager/DialogProcessor.d.ts +13 -0
- package/dist/components/dialog_manager/DialogProcessor.js +62 -0
- package/dist/components/dialog_manager/DialogUtils.d.ts +5 -0
- package/dist/components/dialog_manager/DialogUtils.js +8 -0
- package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts +15 -0
- package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.js +34 -0
- package/dist/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.d.ts +4 -0
- package/dist/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/core/BehaviorNode.d.ts +3 -0
- package/dist/components/dialog_manager/behavior_tree/core/BehaviorNode.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/core/BehaviorStatus.d.ts +5 -0
- package/dist/components/dialog_manager/behavior_tree/core/BehaviorStatus.js +6 -0
- package/dist/components/dialog_manager/behavior_tree/core/SelectorNode.d.ts +12 -0
- package/dist/components/dialog_manager/behavior_tree/core/SelectorNode.js +22 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts +5 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.d.ts +4 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts +15 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.js +220 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionResult.d.ts +5 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionResult.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.d.ts +8 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.js +15 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionState.d.ts +3 -0
- package/dist/components/dialog_manager/behavior_tree/expression/ExpressionState.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.d.ts +10 -0
- package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.js +15 -0
- package/dist/components/dialog_manager/behavior_tree/expression/OperatorNode.d.ts +11 -0
- package/dist/components/dialog_manager/behavior_tree/expression/OperatorNode.js +30 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.d.ts +6 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.js +21 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.d.ts +9 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.js +19 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandMap.d.ts +9 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandMap.js +18 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.d.ts +15 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.js +24 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.d.ts +20 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.js +32 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.d.ts +13 -0
- package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.js +25 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/AndOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/AndOperator.js +15 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.js +14 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.js +12 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.js +12 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.js +12 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.js +12 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.js +12 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.js +13 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.d.ts +17 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.js +32 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.d.ts +9 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.js +47 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/OrOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/OrOperator.js +13 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/XorOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/XorOperator.js +17 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.js +14 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.js +14 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.js +12 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.js +14 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.d.ts +7 -0
- package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.js +14 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.d.ts +4 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.d.ts +6 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts +6 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.js +1 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.d.ts +8 -0
- package/dist/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.js +15 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/BehaviorState.d.ts +5 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/BehaviorState.js +5 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.d.ts +11 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.js +53 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/ElseNode.d.ts +11 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/ElseNode.js +49 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/EndIfNode.d.ts +11 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/EndIfNode.js +23 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IfMode.d.ts +6 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IfMode.js +8 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.d.ts +12 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.js +43 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.d.ts +11 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.js +25 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.d.ts +6 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.js +18 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.d.ts +6 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.js +17 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.d.ts +10 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.js +38 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.d.ts +11 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.js +31 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.d.ts +8 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.js +39 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +8 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +40 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.d.ts +9 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.js +28 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/scripts/SetDefaultEnvironment.d.ts +1 -0
- package/dist/scripts/SetDefaultEnvironment.js +41 -0
- package/dist/scripts/pineapple_fiber/PineappleWeaver.d.ts +9 -0
- package/dist/scripts/pineapple_fiber/PineappleWeaver.js +201 -0
- package/dist/scripts/util/FileManagement.d.ts +7 -0
- package/dist/scripts/util/FileManagement.js +35 -0
- package/dist/scripts/util/ManualCheck.d.ts +1 -0
- package/dist/scripts/util/ManualCheck.js +28 -0
- package/dist/scripts/util/ManualCheckRun.d.ts +1 -0
- package/dist/scripts/util/ManualCheckRun.js +6 -0
- package/dist/store.d.ts +17 -0
- package/dist/store.js +17 -0
- package/dist/styles/DefaultGridContainer.css +61 -0
- package/dist/theme.postcss +107 -0
- package/dist/types/BlogBlurbMeta.d.ts +11 -0
- package/dist/types/BlogBlurbMeta.js +16 -0
- package/dist/types/BreadcrumbData.d.ts +4 -0
- package/dist/types/BreadcrumbData.js +1 -0
- package/dist/types/pineapple_fiber/DialogDetail.d.ts +6 -0
- package/dist/types/pineapple_fiber/DialogDetail.js +1 -0
- package/dist/types/pineapple_fiber/DialogState.d.ts +5 -0
- package/dist/types/pineapple_fiber/DialogState.js +6 -0
- package/dist/types/pineapple_fiber/DialogVariableStore.d.ts +2 -0
- package/dist/types/pineapple_fiber/DialogVariableStore.js +20 -0
- package/dist/types/pineapple_fiber/PortraitType.d.ts +11 -0
- package/dist/types/pineapple_fiber/PortraitType.js +12 -0
- package/dist/util/stable_random.d.ts +2 -0
- package/dist/util/stable_random.js +15 -0
- package/package.json +67 -0
- package/src/app.html +13 -0
- package/src/lib/app.postcss +94 -0
- package/src/lib/assets/bg_tiled/bg_tiled_ares.png +0 -0
- package/src/lib/assets/bg_tiled/bg_tiled_corn.png +0 -0
- package/src/lib/assets/bg_tiled/bg_tiled_pineapple.png +0 -0
- package/src/lib/assets/bg_tiled/bg_tiled_reinhard.png +0 -0
- package/src/lib/assets/bg_tiled/bg_tiled_tomato.png +0 -0
- package/src/lib/assets/bg_tiled/bg_tiled_turnip.png +0 -0
- package/src/lib/assets/characters/ares/ares_blushing.webp +0 -0
- package/src/lib/assets/characters/ares/ares_disappointed.webp +0 -0
- package/src/lib/assets/characters/ares/ares_happy.webp +0 -0
- package/src/lib/assets/characters/ares/ares_lets_go.webp +0 -0
- package/src/lib/assets/characters/ares/ares_logo.webp +0 -0
- package/src/lib/assets/characters/ares/ares_mad.webp +0 -0
- package/src/lib/assets/characters/ares/ares_neutral.webp +0 -0
- package/src/lib/assets/characters/ares/ares_slightly_mad.webp +0 -0
- package/src/lib/assets/characters/ares/ares_surprised.webp +0 -0
- package/src/lib/assets/characters/ares/ares_yay.webp +0 -0
- package/src/lib/assets/game_dev/footage-chef-wings.gif +0 -0
- package/src/lib/assets/game_dev/footage-depreciation.webm +0 -0
- package/src/lib/assets/game_dev/footage-thinking-of-flowers.webm +0 -0
- package/src/lib/assets/game_dev/screenshot-game-jam-mama.png +0 -0
- package/src/lib/assets/game_dev/screenshot-string-hop.png +0 -0
- package/src/lib/assets/game_dev/screenshot-wet-ass-road.png +0 -0
- package/src/lib/assets/icons/chat_cursor.svg +47 -0
- package/src/lib/assets/icons/external_link.svg +50 -0
- package/src/lib/assets/temp/background-image.jpg +0 -0
- package/src/lib/assets/temp/bitbucket-logo.png +0 -0
- package/src/lib/assets/temp/github-logo.png +0 -0
- package/src/lib/assets/temp/header-hep-cat.mp4 +0 -0
- package/src/lib/assets/temp/header-hep-cat.ogg +0 -0
- package/src/lib/assets/temp/header-hep-cat.webm +0 -0
- package/src/lib/assets/temp/header-pengi.mp4 +0 -0
- package/src/lib/assets/temp/header-pengi.webm +0 -0
- package/src/lib/assets/temp/header-soulwork.mp4 +0 -0
- package/src/lib/assets/temp/header-soulwork.ogg +0 -0
- package/src/lib/assets/temp/header-soulwork.webm +0 -0
- package/src/lib/components/DialogOverlay.svelte +100 -0
- package/src/lib/components/LazyAsset.svelte +114 -0
- package/src/lib/components/LazyAssetType.ts +11 -0
- package/src/lib/components/PineappleBaseLayout.svelte +165 -0
- package/src/lib/components/RandomizedBackground.svelte +77 -0
- package/src/lib/components/RandomizedImage.svelte +31 -0
- package/src/lib/components/dialog_manager/DialogManager.ts +282 -0
- package/src/lib/components/dialog_manager/DialogManagerStore.ts +52 -0
- package/src/lib/components/dialog_manager/DialogProcessor.ts +68 -0
- package/src/lib/components/dialog_manager/DialogUtils.ts +10 -0
- package/src/lib/components/dialog_manager/behavior_tree/core/BTreeUtils.ts +40 -0
- package/src/lib/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.ts +5 -0
- package/src/lib/components/dialog_manager/behavior_tree/core/BehaviorNode.ts +3 -0
- package/src/lib/components/dialog_manager/behavior_tree/core/BehaviorStatus.ts +5 -0
- package/src/lib/components/dialog_manager/behavior_tree/core/SelectorNode.ts +32 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments.ts +6 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.ts +5 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.ts +236 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/ExpressionResult.ts +6 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.ts +20 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/ExpressionState.ts +3 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/OperandNode.ts +19 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/OperatorNode.ts +37 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.ts +28 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.ts +34 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/commands/CommandMap.ts +26 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.ts +31 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.ts +38 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.ts +28 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/AndOperator.ts +24 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.ts +21 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.ts +21 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.ts +21 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.ts +19 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.ts +21 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.ts +21 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.ts +20 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.ts +42 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.ts +53 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/OrOperator.ts +22 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/XorOperator.ts +24 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.ts +23 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.ts +23 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.ts +21 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.ts +23 -0
- package/src/lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.ts +23 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.ts +5 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.ts +7 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.ts +7 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.ts +20 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/BehaviorState.ts +6 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.ts +59 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/ElseNode.ts +55 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/EndIfNode.ts +28 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/IfMode.ts +7 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/IfNode.ts +49 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.ts +30 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.ts +24 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.ts +22 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.ts +48 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.ts +37 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.ts +48 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.ts +51 -0
- package/src/lib/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.ts +34 -0
- package/src/lib/index.ts +9 -0
- package/src/lib/scripts/SetDefaultEnvironment.ts +45 -0
- package/src/lib/scripts/pineapple_fiber/PineappleWeaver.ts +252 -0
- package/src/lib/scripts/util/FileManagement.ts +38 -0
- package/src/lib/scripts/util/ManualCheck.ts +32 -0
- package/src/lib/scripts/util/ManualCheckRun.ts +7 -0
- package/src/lib/store.ts +18 -0
- package/src/lib/styles/DefaultGridContainer.css +61 -0
- package/src/lib/theme.postcss +107 -0
- package/src/lib/types/BlogBlurbMeta.ts +16 -0
- package/src/lib/types/BreadcrumbData.ts +4 -0
- package/src/lib/types/pineapple_fiber/DialogDetail.ts +7 -0
- package/src/lib/types/pineapple_fiber/DialogState.ts +5 -0
- package/src/lib/types/pineapple_fiber/DialogVariableStore.ts +24 -0
- package/src/lib/types/pineapple_fiber/PortraitType.ts +11 -0
- package/src/lib/util/stable_random.ts +16 -0
- package/src/routes/+error.svelte +26 -0
- package/src/routes/+layout.svelte +23 -0
- package/src/routes/+page.svelte +41 -0
- package/src/routes/Error.yarn +7 -0
- package/src/routes/ErrorYarn.ts +24 -0
- package/src/routes/portfolio/+page.svelte +0 -0
- package/src/types.d.ts +8 -0
- package/static/default-card.png +0 -0
- package/static/favicon.png +0 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pineapple Fiber
|
|
3
|
+
*
|
|
4
|
+
* A script that generates Typescript files from Yarn where the choices are embedded on
|
|
5
|
+
* the dialogue itself
|
|
6
|
+
*
|
|
7
|
+
* npx vite-node src/lib/scripts/pineapple_fiber/PineappleWeaver.ts
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { getAllFiles } from "$pkg/scripts/util/FileManagement";
|
|
11
|
+
import fs, { readFileSync } from "fs";
|
|
12
|
+
import type { DialogDetail } from "$pkg/types/pineapple_fiber/DialogDetail";
|
|
13
|
+
import { PortraitType } from "$pkg/types/pineapple_fiber/PortraitType";
|
|
14
|
+
|
|
15
|
+
// import { getAllFiles } from "../util/FileManagement";
|
|
16
|
+
// import fs, { readFileSync } from "fs";
|
|
17
|
+
// import type { DialogDetail } from "../../types/pineapple_fiber/DialogDetail";
|
|
18
|
+
// import { PortraitType } from "../../types/pineapple_fiber/PortraitType";
|
|
19
|
+
|
|
20
|
+
interface ChoiceDetail {
|
|
21
|
+
name: string;
|
|
22
|
+
jumpNode: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const shouldDebug = false;
|
|
26
|
+
|
|
27
|
+
const pineappleWeaverRun = () => {
|
|
28
|
+
console.info("Starting Pineapple Weaver.");
|
|
29
|
+
const BASE_PATH = "./src/routes";
|
|
30
|
+
getAllFiles(BASE_PATH, (path: string): boolean => {
|
|
31
|
+
return path.split(".").pop() === "yarn";
|
|
32
|
+
}).map((filePath) => {
|
|
33
|
+
console.info(`Converting: ${filePath}`);
|
|
34
|
+
const fileContent = readFileSync(filePath, "utf-8");
|
|
35
|
+
const dialogDetailList: DialogDetail[] = [];
|
|
36
|
+
|
|
37
|
+
fileContent.split("===").map((unparsedNode) => {
|
|
38
|
+
// todo: detect empty nodes
|
|
39
|
+
// todo: improve the code readability
|
|
40
|
+
if (unparsedNode.trim() === "") {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const dialogDetails: DialogDetail = {
|
|
45
|
+
// todo: dissect the line below and give comments because it is complex
|
|
46
|
+
dialogId: unparsedNode
|
|
47
|
+
.slice(unparsedNode.indexOf("title: "))
|
|
48
|
+
.split("\n")[0]
|
|
49
|
+
.split(" ")
|
|
50
|
+
.pop()
|
|
51
|
+
?.trim(),
|
|
52
|
+
portraitType: PortraitType.AresNeutral,
|
|
53
|
+
textContent: "" // will be filled later below
|
|
54
|
+
};
|
|
55
|
+
let portraitUnset = true;
|
|
56
|
+
|
|
57
|
+
// parse the PineappleFiber metatags
|
|
58
|
+
const unparsedBody = unparsedNode.split("---").pop()!.trim();
|
|
59
|
+
const bodyList = unparsedBody.split("\n");
|
|
60
|
+
let contentIndexStart = 0;
|
|
61
|
+
for (let index = 0; index < bodyList.length; index++) {
|
|
62
|
+
const possibleTagPair = bodyList[index].split(": ");
|
|
63
|
+
const possibleTagName = possibleTagPair[0].toLowerCase();
|
|
64
|
+
|
|
65
|
+
if (!["portrait"].includes(possibleTagName)) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
contentIndexStart = index + 1; // increase count for each viable tah
|
|
70
|
+
switch (possibleTagName) {
|
|
71
|
+
case "portrait":
|
|
72
|
+
portraitUnset = false;
|
|
73
|
+
// todo: implement a way to match the appropriate portrait based on the metatag
|
|
74
|
+
// from https://stackoverflow.com/a/17381004/17836168
|
|
75
|
+
dialogDetails.portraitType =
|
|
76
|
+
PortraitType[possibleTagPair[1].trim() as keyof typeof PortraitType];
|
|
77
|
+
if (shouldDebug) {
|
|
78
|
+
console.log(
|
|
79
|
+
"Portrait detected:",
|
|
80
|
+
possibleTagPair[1],
|
|
81
|
+
" => ",
|
|
82
|
+
dialogDetails.portraitType
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// portrait check
|
|
90
|
+
if (portraitUnset) {
|
|
91
|
+
console.warn(`Portrait missing for node: ${dialogDetails.dialogId}`);
|
|
92
|
+
dialogDetails.portraitType = PortraitType.AresNeutral;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// remove the metatags from the body
|
|
96
|
+
const unprocessedContent = bodyList.slice(contentIndexStart).join("\n");
|
|
97
|
+
const contentPair = unprocessedContent.split("<ChoiceBreak>");
|
|
98
|
+
|
|
99
|
+
if (contentPair.length === 2) {
|
|
100
|
+
// parse for the choice names in the options
|
|
101
|
+
enum ChoiceParsingState {
|
|
102
|
+
Free, // detects for the next option
|
|
103
|
+
Line // previously detected an option, will try to detect for the next option
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
let parsingState: ChoiceParsingState = ChoiceParsingState.Free;
|
|
107
|
+
const currentChoiceDetail: ChoiceDetail = { jumpNode: "", name: "" };
|
|
108
|
+
const choiceList: ChoiceDetail[] = [];
|
|
109
|
+
let shouldSkipChoices = false;
|
|
110
|
+
|
|
111
|
+
const checkChoiceForSave = () => {
|
|
112
|
+
if (currentChoiceDetail.name !== "") {
|
|
113
|
+
choiceList.push({
|
|
114
|
+
name: currentChoiceDetail.name,
|
|
115
|
+
jumpNode: currentChoiceDetail.jumpNode
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
contentPair[1]
|
|
121
|
+
.trim()
|
|
122
|
+
.split("\n")
|
|
123
|
+
.filter((line) => {
|
|
124
|
+
const trimmedLine = line.trim();
|
|
125
|
+
if (shouldSkipChoices) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (trimmedLine.startsWith("// ignore the rest")) {
|
|
130
|
+
shouldSkipChoices = true;
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return true;
|
|
135
|
+
})
|
|
136
|
+
.map((line) => {
|
|
137
|
+
const trimmedLine = line.trim();
|
|
138
|
+
|
|
139
|
+
switch (parsingState) {
|
|
140
|
+
case ChoiceParsingState.Free:
|
|
141
|
+
if (trimmedLine.startsWith("->")) {
|
|
142
|
+
// save previous choice
|
|
143
|
+
checkChoiceForSave();
|
|
144
|
+
|
|
145
|
+
// write start of new choice
|
|
146
|
+
currentChoiceDetail.name = trimmedLine.split(" ").pop()!;
|
|
147
|
+
parsingState = ChoiceParsingState.Line;
|
|
148
|
+
}
|
|
149
|
+
break;
|
|
150
|
+
|
|
151
|
+
case ChoiceParsingState.Line:
|
|
152
|
+
if (trimmedLine.startsWith("<<jump")) {
|
|
153
|
+
const jumpNode = trimmedLine.split(" ").pop()!;
|
|
154
|
+
currentChoiceDetail.jumpNode = jumpNode.slice(0, jumpNode.length - 2); // remove ">>"
|
|
155
|
+
parsingState = ChoiceParsingState.Free;
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
|
|
159
|
+
default:
|
|
160
|
+
console.error(`Unimplemented parsing state: ${parsingState}`);
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
checkChoiceForSave();
|
|
165
|
+
|
|
166
|
+
dialogDetails.textContent = contentPair[0];
|
|
167
|
+
|
|
168
|
+
// handle choice start tags to a href
|
|
169
|
+
choiceList.forEach((choiceDetail) => {
|
|
170
|
+
const keyword = `<choice ${choiceDetail.name}>`;
|
|
171
|
+
while (dialogDetails.textContent.includes(keyword)) {
|
|
172
|
+
dialogDetails.textContent = dialogDetails.textContent.replace(
|
|
173
|
+
keyword,
|
|
174
|
+
`<a class="choice-${choiceDetail.jumpNode} dialog-choice" title="Click to continue the dialog">`
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
const externalKeyword = "<a href=";
|
|
180
|
+
while (dialogDetails.textContent.includes(externalKeyword)) {
|
|
181
|
+
dialogDetails.textContent = dialogDetails.textContent.replace(
|
|
182
|
+
externalKeyword,
|
|
183
|
+
'<a target="_blank" class="external-link" href='
|
|
184
|
+
); // make all external tags with a custom cursor
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const choiceEndKeyword = "</choice>";
|
|
188
|
+
while (dialogDetails.textContent.includes(choiceEndKeyword)) {
|
|
189
|
+
dialogDetails.textContent = dialogDetails.textContent.replace(choiceEndKeyword, "</a>"); // convert all choice end tags to a tags
|
|
190
|
+
}
|
|
191
|
+
} else {
|
|
192
|
+
// assume only one which indicates it's choiceless
|
|
193
|
+
dialogDetails.textContent = unprocessedContent;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
dialogDetailList.push(dialogDetails);
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
const dialogDetailToString = (detail: DialogDetail): string => {
|
|
200
|
+
if (detail.portraitType === undefined) {
|
|
201
|
+
detail.portraitType = PortraitType.AresNeutral;
|
|
202
|
+
console.error(`Missing portrait at dialog: ${detail.dialogId}`);
|
|
203
|
+
console.error(`It contains: ${detail.textContent}`);
|
|
204
|
+
}
|
|
205
|
+
return ` {
|
|
206
|
+
dialogId: "${detail.dialogId}",
|
|
207
|
+
portraitType: PortraitType.${detail.portraitType.toString()},
|
|
208
|
+
textContent: \`${detail.textContent}\`
|
|
209
|
+
},`;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
const dialogDetailListToString = (detailList: DialogDetail[]): string => {
|
|
213
|
+
return detailList
|
|
214
|
+
.map((detail) => {
|
|
215
|
+
return dialogDetailToString(detail);
|
|
216
|
+
})
|
|
217
|
+
.join("\n");
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// generate file
|
|
221
|
+
const filePathList = filePath.split(".");
|
|
222
|
+
const fileName = filePathList[filePathList.length - 2].split("/").pop();
|
|
223
|
+
const template = `// this file was generated by PineappleWeaver.ts
|
|
224
|
+
// do not edit!
|
|
225
|
+
|
|
226
|
+
import type { DialogDetail } from "@turnipxenon/pineapple";
|
|
227
|
+
import { dialogManager, PortraitType } from "@turnipxenon/pineapple";
|
|
228
|
+
|
|
229
|
+
class _${fileName}Yarn {
|
|
230
|
+
dialogList: DialogDetail[] = [
|
|
231
|
+
${dialogDetailListToString(dialogDetailList)}
|
|
232
|
+
];
|
|
233
|
+
|
|
234
|
+
/* Remember to call DialogManager.subscribeToSetDialogChoice before calling this in Svelte */
|
|
235
|
+
setDialogTree = () => {
|
|
236
|
+
dialogManager.setDialogTree(this.dialogList);
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export const ${fileName}Yarn = new _${fileName}Yarn();
|
|
241
|
+
`;
|
|
242
|
+
|
|
243
|
+
const filePathSplit = filePath.split(".");
|
|
244
|
+
filePathSplit.pop();
|
|
245
|
+
const generatedPath = `${filePathSplit.join(".")}Yarn.ts`;
|
|
246
|
+
fs.writeFileSync(generatedPath, template);
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
console.info("Finish converting all yarn files!");
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
pineappleWeaverRun();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
|
|
3
|
+
// from https://stackoverflow.com/a/26832802
|
|
4
|
+
export const getDirectories = (path: string): string[] => {
|
|
5
|
+
return fs
|
|
6
|
+
.readdirSync(path)
|
|
7
|
+
.filter(function (file) {
|
|
8
|
+
return fs.statSync(path + "/" + file).isDirectory();
|
|
9
|
+
})
|
|
10
|
+
.map((value: string) => {
|
|
11
|
+
return path + "/" + value;
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Get all files underneath a path. The results can be filtered!
|
|
17
|
+
* @param path: path where to start finding all files underneath
|
|
18
|
+
* @param filter?: optional path filter
|
|
19
|
+
*/
|
|
20
|
+
export const getAllFiles = (path: string, filter?: (path: string) => boolean): string[] => {
|
|
21
|
+
const contentList = fs.readdirSync(path);
|
|
22
|
+
const fileList: string[] = [];
|
|
23
|
+
|
|
24
|
+
contentList.forEach((content) => {
|
|
25
|
+
const contentName = path + "/" + content;
|
|
26
|
+
const stat = fs.statSync(contentName);
|
|
27
|
+
if (stat.isDirectory()) {
|
|
28
|
+
fileList.push(...getAllFiles(contentName, filter));
|
|
29
|
+
} else {
|
|
30
|
+
// takes advantage of lazy evaluation
|
|
31
|
+
if (filter === undefined || filter(contentName)) {
|
|
32
|
+
fileList.push(contentName);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return fileList;
|
|
38
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { getAllFiles } from "$lib/scripts/util/FileManagement";
|
|
2
|
+
import { readFileSync } from "fs";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* checks for manual dialog tree sets in all files except for *Yarn.ts and DialogManager.ts
|
|
6
|
+
*/
|
|
7
|
+
const checkManualDialogSet = () => {
|
|
8
|
+
// todo:
|
|
9
|
+
const BASE_PATH = "./src/routes";
|
|
10
|
+
getAllFiles(BASE_PATH, (path: string): boolean => {
|
|
11
|
+
// from: https://stackoverflow.com/a/424006/17836168
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
const filename: string = path.split("\\").pop().split("/").pop();
|
|
15
|
+
|
|
16
|
+
const isNonYarn = !filename.endsWith("Yarn.ts");
|
|
17
|
+
|
|
18
|
+
// takes advantage of lazy evaluation
|
|
19
|
+
// is non-yarn and is not exempted
|
|
20
|
+
return isNonYarn && !["DialogManager.ts"].includes(filename);
|
|
21
|
+
}).map((filePath) => {
|
|
22
|
+
// todo:
|
|
23
|
+
const fileContent = readFileSync(filePath, "utf-8");
|
|
24
|
+
if (fileContent.includes("dialogManager.setDialogTree")) {
|
|
25
|
+
console.warn(`Warning! Manual dialog tree set found in path: ${filePath}`);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const runAll = () => {
|
|
31
|
+
checkManualDialogSet();
|
|
32
|
+
};
|
package/src/lib/store.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { writable } from "svelte/store";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Enables background in main layout
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* When updating to false, remember to restore the value to true, our default value, onDestroy.
|
|
8
|
+
* Avoid async to prevent weird flashes of updates!
|
|
9
|
+
* ```
|
|
10
|
+
* import {enableBackground} from "$lib/store.ts";
|
|
11
|
+
* enableBackground.update(() => false);
|
|
12
|
+
*
|
|
13
|
+
* onDestroy(() => {
|
|
14
|
+
* enableBackground.update(() => true);
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export const enableBackground = writable(true);
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
.default-grid-container-title-card {
|
|
2
|
+
max-width: calc(var(--default-card-max-width) + 32rem) !important;
|
|
3
|
+
width: 100%;
|
|
4
|
+
padding: 2rem !important;
|
|
5
|
+
text-align: center !important;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.default-grid-container {
|
|
9
|
+
width: 100%;
|
|
10
|
+
max-width: calc(var(--default-card-max-width) + 32rem);
|
|
11
|
+
padding-top: 4rem;
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-wrap: wrap;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
align-items: flex-start;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.default-grid-container > .card,
|
|
19
|
+
.default-grid-container > .lite-wrapper {
|
|
20
|
+
width: 22rem;
|
|
21
|
+
margin: clamp(0vw, 1vw, 1.5rem);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.default-grid-container div h3 {
|
|
25
|
+
margin: 0.5em;
|
|
26
|
+
text-align: center;
|
|
27
|
+
font-weight: bold;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.default-grid-container video {
|
|
31
|
+
padding: var(--theme-border-base);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.default-grid-container img {
|
|
35
|
+
padding: var(--theme-border-base);
|
|
36
|
+
width: 100%;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.links {
|
|
40
|
+
width: 100%;
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-wrap: wrap;
|
|
43
|
+
justify-content: center;
|
|
44
|
+
align-items: center;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.card.tx-badge {
|
|
48
|
+
object-fit: scale-down;
|
|
49
|
+
padding: 0.5rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
img.tx-badge,
|
|
53
|
+
.card.tx-badge {
|
|
54
|
+
max-height: 5rem;
|
|
55
|
+
max-width: 6rem;
|
|
56
|
+
margin: 1rem;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.twitter-wrapper {
|
|
60
|
+
padding: 1rem;
|
|
61
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* =~= Theme Properties =~= */
|
|
3
|
+
--theme-font-family-base: system-ui;
|
|
4
|
+
--theme-font-family-heading: system-ui;
|
|
5
|
+
--theme-font-color-base: var(--color-text-500);
|
|
6
|
+
--theme-font-color-dark: var(--color-text-900);
|
|
7
|
+
--theme-rounded-base: 24px;
|
|
8
|
+
--theme-rounded-container: 16px;
|
|
9
|
+
--theme-border-base: 2px;
|
|
10
|
+
/* =~= Theme On-X Colors =~= */
|
|
11
|
+
--on-primary: var(--color-text-900);
|
|
12
|
+
--on-secondary: var(--color-surface-500);
|
|
13
|
+
--on-tertiary: var(--color-text-900);
|
|
14
|
+
--on-success: var(--color-text-900);
|
|
15
|
+
--on-warning: var(--color-text-900);
|
|
16
|
+
--on-error: var(--color-surface-500);
|
|
17
|
+
--on-surface: var(--color-text-900);
|
|
18
|
+
/* =~= Theme Colors =~= */
|
|
19
|
+
/* primary | #b9a26e */
|
|
20
|
+
--color-primary-50: 245 241 233; /* ⬅ #f5f1e9 */
|
|
21
|
+
--color-primary-100: 241 236 226; /* ⬅ #f1ece2 */
|
|
22
|
+
--color-primary-200: 238 232 219; /* ⬅ #eee8db */
|
|
23
|
+
--color-primary-300: 227 218 197; /* ⬅ #e3dac5 */
|
|
24
|
+
--color-primary-400: 206 190 154; /* ⬅ #cebe9a */
|
|
25
|
+
--color-primary-500: 185 162 110; /* ⬅ #b9a26e */
|
|
26
|
+
--color-primary-600: 167 146 99; /* ⬅ #a79263 */
|
|
27
|
+
--color-primary-700: 139 122 83; /* ⬅ #8b7a53 */
|
|
28
|
+
--color-primary-800: 111 97 66; /* ⬅ #6f6142 */
|
|
29
|
+
--color-primary-900: 91 79 54; /* ⬅ #5b4f36 */
|
|
30
|
+
/* secondary | #b55639 */
|
|
31
|
+
--color-secondary-50: 244 230 225; /* ⬅ #f4e6e1 */
|
|
32
|
+
--color-secondary-100: 240 221 215; /* ⬅ #f0ddd7 */
|
|
33
|
+
--color-secondary-200: 237 213 206; /* ⬅ #edd5ce */
|
|
34
|
+
--color-secondary-300: 225 187 176; /* ⬅ #e1bbb0 */
|
|
35
|
+
--color-secondary-400: 203 137 116; /* ⬅ #cb8974 */
|
|
36
|
+
--color-secondary-500: 181 86 57; /* ⬅ #b55639 */
|
|
37
|
+
--color-secondary-600: 163 77 51; /* ⬅ #a34d33 */
|
|
38
|
+
--color-secondary-700: 136 65 43; /* ⬅ #88412b */
|
|
39
|
+
--color-secondary-800: 109 52 34; /* ⬅ #6d3422 */
|
|
40
|
+
--color-secondary-900: 89 42 28; /* ⬅ #592a1c */
|
|
41
|
+
/* tertiary | #cd7949 */
|
|
42
|
+
--color-tertiary-50: 248 235 228; /* ⬅ #f8ebe4 */
|
|
43
|
+
--color-tertiary-100: 245 228 219; /* ⬅ #f5e4db */
|
|
44
|
+
--color-tertiary-200: 243 222 210; /* ⬅ #f3ded2 */
|
|
45
|
+
--color-tertiary-300: 235 201 182; /* ⬅ #ebc9b6 */
|
|
46
|
+
--color-tertiary-400: 220 161 128; /* ⬅ #dca180 */
|
|
47
|
+
--color-tertiary-500: 205 121 73; /* ⬅ #cd7949 */
|
|
48
|
+
--color-tertiary-600: 185 109 66; /* ⬅ #b96d42 */
|
|
49
|
+
--color-tertiary-700: 154 91 55; /* ⬅ #9a5b37 */
|
|
50
|
+
--color-tertiary-800: 123 73 44; /* ⬅ #7b492c */
|
|
51
|
+
--color-tertiary-900: 100 59 36; /* ⬅ #643b24 */
|
|
52
|
+
/* success | #7cab36 */
|
|
53
|
+
--color-success-50: 235 242 225; /* ⬅ #ebf2e1 */
|
|
54
|
+
--color-success-100: 229 238 215; /* ⬅ #e5eed7 */
|
|
55
|
+
--color-success-200: 222 234 205; /* ⬅ #deeacd */
|
|
56
|
+
--color-success-300: 203 221 175; /* ⬅ #cbddaf */
|
|
57
|
+
--color-success-400: 163 196 114; /* ⬅ #a3c472 */
|
|
58
|
+
--color-success-500: 124 171 54; /* ⬅ #7cab36 */
|
|
59
|
+
--color-success-600: 112 154 49; /* ⬅ #709a31 */
|
|
60
|
+
--color-success-700: 93 128 41; /* ⬅ #5d8029 */
|
|
61
|
+
--color-success-800: 74 103 32; /* ⬅ #4a6720 */
|
|
62
|
+
--color-success-900: 61 84 26; /* ⬅ #3d541a */
|
|
63
|
+
/* warning | #b8993a */
|
|
64
|
+
--color-warning-50: 244 240 225; /* ⬅ #f4f0e1 */
|
|
65
|
+
--color-warning-100: 241 235 216; /* ⬅ #f1ebd8 */
|
|
66
|
+
--color-warning-200: 237 230 206; /* ⬅ #ede6ce */
|
|
67
|
+
--color-warning-300: 227 214 176; /* ⬅ #e3d6b0 */
|
|
68
|
+
--color-warning-400: 205 184 117; /* ⬅ #cdb875 */
|
|
69
|
+
--color-warning-500: 184 153 58; /* ⬅ #b8993a */
|
|
70
|
+
--color-warning-600: 166 138 52; /* ⬅ #a68a34 */
|
|
71
|
+
--color-warning-700: 138 115 44; /* ⬅ #8a732c */
|
|
72
|
+
--color-warning-800: 110 92 35; /* ⬅ #6e5c23 */
|
|
73
|
+
--color-warning-900: 90 75 28; /* ⬅ #5a4b1c */
|
|
74
|
+
/* error | #b53977 */
|
|
75
|
+
--color-error-50: 244 225 235; /* ⬅ #f4e1eb */
|
|
76
|
+
--color-error-100: 240 215 228; /* ⬅ #f0d7e4 */
|
|
77
|
+
--color-error-200: 237 206 221; /* ⬅ #edcedd */
|
|
78
|
+
--color-error-300: 225 176 201; /* ⬅ #e1b0c9 */
|
|
79
|
+
--color-error-400: 203 116 160; /* ⬅ #cb74a0 */
|
|
80
|
+
--color-error-500: 181 57 119; /* ⬅ #b53977 */
|
|
81
|
+
--color-error-600: 163 51 107; /* ⬅ #a3336b */
|
|
82
|
+
--color-error-700: 136 43 89; /* ⬅ #882b59 */
|
|
83
|
+
--color-error-800: 109 34 71; /* ⬅ #6d2247 */
|
|
84
|
+
--color-error-900: 89 28 58; /* ⬅ #591c3a */
|
|
85
|
+
/* surface | #fff7e3 */
|
|
86
|
+
--color-surface-50: 255 254 251; /* ⬅ #fffefb */
|
|
87
|
+
--color-surface-100: 255 253 249; /* ⬅ #fffdf9 */
|
|
88
|
+
--color-surface-200: 255 253 248; /* ⬅ #fffdf8 */
|
|
89
|
+
--color-surface-300: 255 252 244; /* ⬅ #fffcf4 */
|
|
90
|
+
--color-surface-400: 255 249 235; /* ⬅ #fff9eb */
|
|
91
|
+
--color-surface-500: 255 247 227; /* ⬅ #fff7e3 */
|
|
92
|
+
--color-surface-600: 230 222 204; /* ⬅ #e6decc */
|
|
93
|
+
--color-surface-700: 191 185 170; /* ⬅ #bfb9aa */
|
|
94
|
+
--color-surface-800: 153 148 136; /* ⬅ #999488 */
|
|
95
|
+
--color-surface-900: 125 121 111; /* ⬅ #7d796f */
|
|
96
|
+
/* text color | #3f312f */
|
|
97
|
+
--color-text-50: 226 224 224; /* ⬅ #e2e0e0 */
|
|
98
|
+
--color-text-100: 217 214 213; /* ⬅ #d9d6d5 */
|
|
99
|
+
--color-text-200: 207 204 203; /* ⬅ #cfcccb */
|
|
100
|
+
--color-text-300: 178 173 172; /* ⬅ #b2adac */
|
|
101
|
+
--color-text-400: 121 111 109; /* ⬅ #796f6d */
|
|
102
|
+
--color-text-500: 63 49 47; /* ⬅ #3f312f */
|
|
103
|
+
--color-text-600: 57 44 42; /* ⬅ #392c2a */
|
|
104
|
+
--color-text-700: 47 37 35; /* ⬅ #2f2523 */
|
|
105
|
+
--color-text-800: 38 29 28; /* ⬅ #261d1c */
|
|
106
|
+
--color-text-900: 31 24 23; /* ⬅ #1f1817 */
|
|
107
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// I don't wanna waste time figuring out how to fight against the rollup magic
|
|
2
|
+
// svelte does so let's just copy paste this class, as a treat LOL
|
|
3
|
+
// Mirror is between
|
|
4
|
+
// - src/lib/types/BlogBlurbMeta.ts
|
|
5
|
+
// - pineapple_scripts/blog_list_data_generator.ts
|
|
6
|
+
export class BlogBlurbMeta {
|
|
7
|
+
title = "";
|
|
8
|
+
blurb = "";
|
|
9
|
+
tagList: string[] = [];
|
|
10
|
+
publishDate = "";
|
|
11
|
+
lastUpdate = "";
|
|
12
|
+
previewSrc: any = "";
|
|
13
|
+
previewSrcScript = "";
|
|
14
|
+
previewAlt = "";
|
|
15
|
+
blogLink = "";
|
|
16
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
|
|
4
|
+
import { browser } from "$app/environment";
|
|
5
|
+
|
|
6
|
+
export type DialogMapStore = Storage;
|
|
7
|
+
|
|
8
|
+
export const createNewMapStore = (): DialogMapStore => {
|
|
9
|
+
return browser
|
|
10
|
+
? localStorage
|
|
11
|
+
: {
|
|
12
|
+
// dumb storage if not in browser
|
|
13
|
+
length: 0,
|
|
14
|
+
setItem: (key: string, value: string) => {},
|
|
15
|
+
getItem: (key: string): string | null => {
|
|
16
|
+
return null;
|
|
17
|
+
},
|
|
18
|
+
clear: () => {},
|
|
19
|
+
key: (index: number): string | null => {
|
|
20
|
+
return null;
|
|
21
|
+
},
|
|
22
|
+
removeItem: (key: string) => {}
|
|
23
|
+
};
|
|
24
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export enum PortraitType {
|
|
2
|
+
AresHappy = "AresHappy",
|
|
3
|
+
AresDisappointed = "AresDisappointed",
|
|
4
|
+
AresBlushing = "AresBlushing",
|
|
5
|
+
AresLetsGo = "AresLetsGo",
|
|
6
|
+
AresMad = "AresMad",
|
|
7
|
+
AresNeutral = "AresNeutral",
|
|
8
|
+
AresSlightlyMad = "AresSlightlyMad",
|
|
9
|
+
AresSurprised = "AresSurprised",
|
|
10
|
+
AresYay = "AresYay"
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const generatedDailySeed = (): number => {
|
|
2
|
+
const date = new Date();
|
|
3
|
+
const time = date.getTime() + 86400000;
|
|
4
|
+
return time - (time % 86400000);
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// psuedo misc with seed
|
|
8
|
+
// from https://stackoverflow.com/a/47593316
|
|
9
|
+
export const mulberry32Generator = (a: number): (() => number) => {
|
|
10
|
+
return function () {
|
|
11
|
+
var t = (a += 0x6d2b79f5);
|
|
12
|
+
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
13
|
+
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
14
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { onDestroy } from "svelte";
|
|
3
|
+
import { dialogManager } from "$lib/components/dialog_manager/DialogManagerStore.ts";
|
|
4
|
+
import { ErrorYarn } from "./ErrorYarn";
|
|
5
|
+
|
|
6
|
+
ErrorYarn.setDialogTree();
|
|
7
|
+
|
|
8
|
+
onDestroy(() => {
|
|
9
|
+
dialogManager.setDialogToDefault();
|
|
10
|
+
});
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<div class="card default-card">
|
|
14
|
+
<blockquote class="twitter-tweet">
|
|
15
|
+
<p dir="ltr" lang="en">
|
|
16
|
+
Going to be 96 years old showing this to the geriatric ward nurses my pushing the emergency help button and they
|
|
17
|
+
run in and i just show them this for the 30th time that day <a href="https://t.co/YqjP1Uox2Q"
|
|
18
|
+
>pic.twitter.com/YqjP1Uox2Q</a
|
|
19
|
+
>
|
|
20
|
+
</p>
|
|
21
|
+
— ᶻ 𝗓 𐰁 (@felidfang)<a href="https://twitter.com/felidfang/status/1325145574572744705?ref_src=twsrc%5Etfw"
|
|
22
|
+
>November 7, 2020</a
|
|
23
|
+
>
|
|
24
|
+
</blockquote>
|
|
25
|
+
<script async charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
|
|
26
|
+
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import PinyaBaseLayout from "$lib/components/PineappleBaseLayout.svelte";
|
|
3
|
+
import { PUBLIC_CRINGE_USERNAME } from "$env/static/public";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<svelte:head>
|
|
7
|
+
<title>{PUBLIC_CRINGE_USERNAME}</title>
|
|
8
|
+
<meta content="summary" name="Turnip time!" />
|
|
9
|
+
<meta content="@{PUBLIC_CRINGE_USERNAME}" name="twitter:site" />
|
|
10
|
+
<meta content="@{PUBLIC_CRINGE_USERNAME}" name="twitter:creator" />
|
|
11
|
+
<meta content="https://www.{PUBLIC_CRINGE_USERNAME}.com/" name="og:url" />
|
|
12
|
+
<meta content="{PUBLIC_CRINGE_USERNAME} | Home" name="og:title" />
|
|
13
|
+
<meta
|
|
14
|
+
content="I have no idea! Anyway... Hi! I don't know what I'm doing! Also check out my games!"
|
|
15
|
+
name="og:description"
|
|
16
|
+
/>
|
|
17
|
+
<meta content="https://www.{PUBLIC_CRINGE_USERNAME}.com/default-card.png" property="og:image" />
|
|
18
|
+
</svelte:head>
|
|
19
|
+
|
|
20
|
+
<PinyaBaseLayout>
|
|
21
|
+
<slot />
|
|
22
|
+
</PinyaBaseLayout>
|
|
23
|
+
|