@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
package/src/lib/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CommandLogicNode } from "$lib/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode";
|
|
2
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Used for command like
|
|
6
|
+
* random_range(1, 2);
|
|
7
|
+
*/
|
|
8
|
+
export class RandomRangeCommand extends CommandLogicNode {
|
|
9
|
+
/**
|
|
10
|
+
* From: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#getting_a_random_integer_between_two_values
|
|
11
|
+
*/
|
|
12
|
+
getRandomInt = (min: number, max: number): number => {
|
|
13
|
+
min = Math.ceil(min);
|
|
14
|
+
max = Math.floor(max);
|
|
15
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
19
|
+
nodeArgs.initState.operandStack.push(
|
|
20
|
+
String(this.getRandomInt(Number(currentOperands[0]), Number(currentOperands[1])))
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
getArgumentCount = (): number => {
|
|
25
|
+
return 2;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
getToken = (): string => {
|
|
29
|
+
return "#random_range";
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { CommandLogicNode } from "$lib/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode";
|
|
2
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
3
|
+
import { VisitedCountCommand } from "$lib/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Used for command like
|
|
7
|
+
* visited("node name here");
|
|
8
|
+
*
|
|
9
|
+
* Pushes a boolean in the operand stack
|
|
10
|
+
*
|
|
11
|
+
* Some design decision note:
|
|
12
|
+
* I opted for composition over inheritance.
|
|
13
|
+
* This may look like a good case for composition but my philosophy is if they both are equally
|
|
14
|
+
* viable, always prefer composition. It will help in the long run if we do refactoring
|
|
15
|
+
*/
|
|
16
|
+
export class VisitedCommand extends CommandLogicNode {
|
|
17
|
+
visitedCountCommand = new VisitedCountCommand();
|
|
18
|
+
|
|
19
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
20
|
+
this.visitedCountCommand.process(nodeArgs);
|
|
21
|
+
|
|
22
|
+
const value = Number(nodeArgs.initState.operandStack.pop());
|
|
23
|
+
|
|
24
|
+
if (isNaN(value) || value === 0) {
|
|
25
|
+
nodeArgs.initState.operandStack.push("false");
|
|
26
|
+
} else {
|
|
27
|
+
nodeArgs.initState.operandStack.push("true");
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
getArgumentCount = (): number => {
|
|
32
|
+
return 0; // let the child work; this is only a decorator
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
getToken = (): string => {
|
|
36
|
+
return "#visited";
|
|
37
|
+
};
|
|
38
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CommandLogicNode } from "$lib/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode";
|
|
2
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
3
|
+
import { dialogVariableStore } from "$lib/components/dialog_manager/DialogManagerStore";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Used for command like
|
|
7
|
+
* visited_count("node name here");
|
|
8
|
+
*
|
|
9
|
+
* Pushed a number in the operand stack
|
|
10
|
+
*/
|
|
11
|
+
export class VisitedCountCommand extends CommandLogicNode {
|
|
12
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
13
|
+
const value = Number(dialogVariableStore.getItem(`+${currentOperands[0]}`));
|
|
14
|
+
if (isNaN(value) || value === 0) {
|
|
15
|
+
nodeArgs.initState.operandStack.push("0");
|
|
16
|
+
} else {
|
|
17
|
+
nodeArgs.initState.operandStack.push(String(value));
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
getArgumentCount = (): number => {
|
|
22
|
+
return 1;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
getToken = (): string => {
|
|
26
|
+
return "#visited_count";
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
import { btreeUtils } from "$lib/components/dialog_manager/behavior_tree/core/BTreeUtils";
|
|
7
|
+
|
|
8
|
+
export class AndOperator extends OperatorLogicNode {
|
|
9
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
10
|
+
// todo: evaluate possible weird cases when doing number comparisons
|
|
11
|
+
// ISSUE #88 https://github.com/TurnipXenon/pineapple/issues/88
|
|
12
|
+
nodeArgs.initState.operandStack.push(
|
|
13
|
+
String(btreeUtils.isTrue(currentOperands[0]) && btreeUtils.isTrue(currentOperands[1]))
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
getOperatorType = (): OperatorType => {
|
|
18
|
+
return OperatorType.Binary;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
getToken = (): string => {
|
|
22
|
+
return "&&";
|
|
23
|
+
};
|
|
24
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class EqualityOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
// todo: evaluate possible weird cases when doing number comparisons
|
|
10
|
+
// ISSUE #88 https://github.com/TurnipXenon/pineapple/issues/88
|
|
11
|
+
nodeArgs.initState.operandStack.push(String(currentOperands[0] === currentOperands[1]));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
getOperatorType = (): OperatorType => {
|
|
15
|
+
return OperatorType.Binary;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getToken = (): string => {
|
|
19
|
+
return "==";
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class GreaterThanEqualOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
nodeArgs.initState.operandStack.push(
|
|
10
|
+
String(Number(currentOperands[0]) >= Number(currentOperands[1]))
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
getOperatorType = (): OperatorType => {
|
|
15
|
+
return OperatorType.Binary;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getToken = (): string => {
|
|
19
|
+
return ">=";
|
|
20
|
+
};
|
|
21
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class GreaterThanOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
nodeArgs.initState.operandStack.push(
|
|
10
|
+
String(Number(currentOperands[0]) > Number(currentOperands[1]))
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
getOperatorType = (): OperatorType => {
|
|
15
|
+
return OperatorType.Binary;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getToken = (): string => {
|
|
19
|
+
return ">";
|
|
20
|
+
};
|
|
21
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class InequalityOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
nodeArgs.initState.operandStack.push(String(currentOperands[0] !== currentOperands[1]));
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
getOperatorType = (): OperatorType => {
|
|
13
|
+
return OperatorType.Binary;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
getToken = (): string => {
|
|
17
|
+
return "!=";
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class LessThanEqualOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
nodeArgs.initState.operandStack.push(
|
|
10
|
+
String(Number(currentOperands[0]) <= Number(currentOperands[1]))
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
getOperatorType = (): OperatorType => {
|
|
15
|
+
return OperatorType.Binary;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getToken = (): string => {
|
|
19
|
+
return "<=";
|
|
20
|
+
};
|
|
21
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class LessThanOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
nodeArgs.initState.operandStack.push(
|
|
10
|
+
String(Number(currentOperands[0]) < Number(currentOperands[1]))
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
getOperatorType = (): OperatorType => {
|
|
15
|
+
return OperatorType.Binary;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getToken = (): string => {
|
|
19
|
+
return "<";
|
|
20
|
+
};
|
|
21
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
import { btreeUtils } from "$lib/components/dialog_manager/behavior_tree/core/BTreeUtils";
|
|
7
|
+
|
|
8
|
+
export class NegationOperator extends OperatorLogicNode {
|
|
9
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
10
|
+
nodeArgs.initState.operandStack.push(String(!btreeUtils.isTrue(currentOperands[0])));
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
getOperatorType = (): OperatorType => {
|
|
14
|
+
return OperatorType.Unary;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
getToken = (): string => {
|
|
18
|
+
return "!";
|
|
19
|
+
};
|
|
20
|
+
}
|
package/src/lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ExpressionBehaviorNode } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode";
|
|
2
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
3
|
+
import type { ExpressionResult } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionResult";
|
|
4
|
+
import { BehaviorStatus } from "$lib/components/dialog_manager/behavior_tree/core/BehaviorStatus";
|
|
5
|
+
|
|
6
|
+
export enum OperatorType {
|
|
7
|
+
Unary,
|
|
8
|
+
Binary
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* a leaf node that will always run success
|
|
13
|
+
* do the processing outside comparing with getToken
|
|
14
|
+
*/
|
|
15
|
+
export abstract class OperatorLogicNode implements ExpressionBehaviorNode {
|
|
16
|
+
abstract getToken: () => string;
|
|
17
|
+
abstract getOperatorType: () => OperatorType;
|
|
18
|
+
abstract doOperation: (currentOperands: string[], nodeArgs: ExpressionArguments) => void;
|
|
19
|
+
|
|
20
|
+
process(nodeArgs: ExpressionArguments): ExpressionResult {
|
|
21
|
+
const currentOperands: string[] = [];
|
|
22
|
+
switch (this.getOperatorType()) {
|
|
23
|
+
case OperatorType.Unary:
|
|
24
|
+
currentOperands.unshift(<string>nodeArgs.initState.operandStack.pop());
|
|
25
|
+
break;
|
|
26
|
+
case OperatorType.Binary:
|
|
27
|
+
currentOperands.unshift(<string>nodeArgs.initState.operandStack.pop());
|
|
28
|
+
currentOperands.unshift(<string>nodeArgs.initState.operandStack.pop());
|
|
29
|
+
break;
|
|
30
|
+
default:
|
|
31
|
+
console.error(`Unimplemented operator type: ${this.getOperatorType()}`);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
this.doOperation(currentOperands, nodeArgs);
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
nextState: nodeArgs.initState,
|
|
39
|
+
status: BehaviorStatus.Success
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { OperatorLogicNode } from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
2
|
+
import { EqualityOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator";
|
|
3
|
+
import { InequalityOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator";
|
|
4
|
+
import { GreaterThanOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator";
|
|
5
|
+
import { GreaterThanEqualOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator";
|
|
6
|
+
import { LessThanOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator";
|
|
7
|
+
import { LessThanEqualOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator";
|
|
8
|
+
import { NegationOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/NegationOperator";
|
|
9
|
+
import { AndOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/AndOperator";
|
|
10
|
+
import { OrOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/OrOperator";
|
|
11
|
+
import { XorOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/XorOperator";
|
|
12
|
+
import { AddOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator";
|
|
13
|
+
import { MinusOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator";
|
|
14
|
+
import { MultiplicationOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator";
|
|
15
|
+
import { DivisionOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator";
|
|
16
|
+
import { RemainderDivisionOperator } from "$lib/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator";
|
|
17
|
+
|
|
18
|
+
class OperatorMap {
|
|
19
|
+
_operatorLogicMap: Map<string, OperatorLogicNode> = new Map();
|
|
20
|
+
|
|
21
|
+
constructor() {
|
|
22
|
+
// set up operator logic
|
|
23
|
+
[
|
|
24
|
+
new EqualityOperator(),
|
|
25
|
+
new InequalityOperator(),
|
|
26
|
+
new GreaterThanOperator(),
|
|
27
|
+
new GreaterThanEqualOperator(),
|
|
28
|
+
new LessThanOperator(),
|
|
29
|
+
new LessThanEqualOperator(),
|
|
30
|
+
new NegationOperator(),
|
|
31
|
+
new AndOperator(),
|
|
32
|
+
new OrOperator(),
|
|
33
|
+
new XorOperator(),
|
|
34
|
+
new AddOperator(),
|
|
35
|
+
new MinusOperator(),
|
|
36
|
+
new MultiplicationOperator(),
|
|
37
|
+
new DivisionOperator(),
|
|
38
|
+
new RemainderDivisionOperator()
|
|
39
|
+
].forEach((operatorLogic) => {
|
|
40
|
+
this._operatorLogicMap.set(operatorLogic.getToken(), operatorLogic);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
get = (operator: string): OperatorLogicNode | undefined => {
|
|
45
|
+
return this._operatorLogicMap.get(operator);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exists = (operator: string): boolean => {
|
|
49
|
+
return this.get(operator) !== undefined;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const operatorMap = new OperatorMap();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
import { btreeUtils } from "$lib/components/dialog_manager/behavior_tree/core/BTreeUtils";
|
|
7
|
+
|
|
8
|
+
export class OrOperator extends OperatorLogicNode {
|
|
9
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
10
|
+
nodeArgs.initState.operandStack.push(
|
|
11
|
+
String(btreeUtils.isTrue(currentOperands[0]) || btreeUtils.isTrue(currentOperands[1]))
|
|
12
|
+
);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
getOperatorType = (): OperatorType => {
|
|
16
|
+
return OperatorType.Binary;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
getToken = (): string => {
|
|
20
|
+
return "||";
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
import { btreeUtils } from "$lib/components/dialog_manager/behavior_tree/core/BTreeUtils";
|
|
7
|
+
|
|
8
|
+
export class XorOperator extends OperatorLogicNode {
|
|
9
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
10
|
+
// todo: evaluate possible weird cases when doing number comparisons
|
|
11
|
+
// ISSUE #88 https://github.com/TurnipXenon/pineapple/issues/88
|
|
12
|
+
const A = btreeUtils.isTrue(currentOperands[0]);
|
|
13
|
+
const B = btreeUtils.isTrue(currentOperands[1]);
|
|
14
|
+
nodeArgs.initState.operandStack.push(String(!((A && B) || A || B)));
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
getOperatorType = (): OperatorType => {
|
|
18
|
+
return OperatorType.Binary;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
getToken = (): string => {
|
|
22
|
+
return "^";
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class DivisionOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
// todo: Add division protection
|
|
10
|
+
// ISSUE #96 https://github.com/TurnipXenon/pineapple/issues/96
|
|
11
|
+
nodeArgs.initState.operandStack.push(
|
|
12
|
+
String(Number(currentOperands[0]) / Number(currentOperands[1]))
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
getOperatorType = (): OperatorType => {
|
|
17
|
+
return OperatorType.Binary;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
getToken = (): string => {
|
|
21
|
+
return "/";
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class MinusOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
// todo: evaluate possible weird cases when doing number comparisons
|
|
10
|
+
// ISSUE #88 https://github.com/TurnipXenon/pineapple/issues/88
|
|
11
|
+
nodeArgs.initState.operandStack.push(
|
|
12
|
+
String(Number(currentOperands[0]) - Number(currentOperands[1]))
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
getOperatorType = (): OperatorType => {
|
|
17
|
+
return OperatorType.Binary;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
getToken = (): string => {
|
|
21
|
+
return "-";
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class MultiplicationOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
nodeArgs.initState.operandStack.push(
|
|
10
|
+
String(Number(currentOperands[0]) * Number(currentOperands[1]))
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
getOperatorType = (): OperatorType => {
|
|
15
|
+
return OperatorType.Binary;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
getToken = (): string => {
|
|
19
|
+
return "*";
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class AddOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
// todo: evaluate possible weird cases when doing number comparisons
|
|
10
|
+
// ISSUE #88 https://github.com/TurnipXenon/pineapple/issues/88
|
|
11
|
+
nodeArgs.initState.operandStack.push(
|
|
12
|
+
String(Number(currentOperands[0]) + Number(currentOperands[1]))
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
getOperatorType = (): OperatorType => {
|
|
17
|
+
return OperatorType.Binary;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
getToken = (): string => {
|
|
21
|
+
return "+";
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OperatorLogicNode,
|
|
3
|
+
OperatorType
|
|
4
|
+
} from "$lib/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode";
|
|
5
|
+
import type { ExpressionArguments } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionArguments";
|
|
6
|
+
|
|
7
|
+
export class RemainderDivisionOperator extends OperatorLogicNode {
|
|
8
|
+
doOperation = (currentOperands: string[], nodeArgs: ExpressionArguments) => {
|
|
9
|
+
// todo: Add division protection
|
|
10
|
+
// ISSUE #96 https://github.com/TurnipXenon/pineapple/issues/96
|
|
11
|
+
nodeArgs.initState.operandStack.push(
|
|
12
|
+
String(Number(currentOperands[0]) % Number(currentOperands[1]))
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
getOperatorType = (): OperatorType => {
|
|
17
|
+
return OperatorType.Binary;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
getToken = (): string => {
|
|
21
|
+
return "%";
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BehaviorNode } from "$lib/components/dialog_manager/behavior_tree/core/BehaviorNode";
|
|
2
|
+
import type { LineNodeArguments } from "$lib/components/dialog_manager/behavior_tree/line_core/LineNodeArguments";
|
|
3
|
+
import type { LineBehaviorResult } from "$lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult";
|
|
4
|
+
|
|
5
|
+
export type LineBehaviorNode = BehaviorNode<LineNodeArguments, LineBehaviorResult>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BehaviorState } from "$lib/components/dialog_manager/behavior_tree/line_processors/BehaviorState";
|
|
2
|
+
import type { BaseBehaviorResult } from "$lib/components/dialog_manager/behavior_tree/core/BaseBehaviorResult";
|
|
3
|
+
|
|
4
|
+
export interface LineBehaviorResult extends BaseBehaviorResult {
|
|
5
|
+
renderedLine: string;
|
|
6
|
+
nextState: BehaviorState;
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SelectorNode } from "$lib/components/dialog_manager/behavior_tree/core/SelectorNode";
|
|
2
|
+
import type { LineNodeArguments } from "$lib/components/dialog_manager/behavior_tree/line_core/LineNodeArguments";
|
|
3
|
+
import type { LineBehaviorResult } from "$lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult";
|
|
4
|
+
import { BehaviorState } from "$lib/components/dialog_manager/behavior_tree/line_processors/BehaviorState";
|
|
5
|
+
import { BehaviorStatus } from "$lib/components/dialog_manager/behavior_tree/core/BehaviorStatus";
|
|
6
|
+
import type { LineBehaviorNode } from "$lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode";
|
|
7
|
+
|
|
8
|
+
export class LineSelectorNode extends SelectorNode<LineNodeArguments, LineBehaviorResult> {
|
|
9
|
+
constructor(nodeList: LineBehaviorNode[]) {
|
|
10
|
+
super(nodeList);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
defaultResult = (): LineBehaviorResult => {
|
|
14
|
+
return {
|
|
15
|
+
nextState: new BehaviorState(),
|
|
16
|
+
renderedLine: "",
|
|
17
|
+
status: BehaviorStatus.Failure
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { LineNodeArguments } from "$lib/components/dialog_manager/behavior_tree/line_core/LineNodeArguments";
|
|
2
|
+
import type { LineBehaviorResult } from "$lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult";
|
|
3
|
+
import { BehaviorStatus } from "$lib/components/dialog_manager/behavior_tree/core/BehaviorStatus";
|
|
4
|
+
import { btreeUtils } from "$lib/components/dialog_manager/behavior_tree/core/BTreeUtils";
|
|
5
|
+
import { IfMode } from "$lib/components/dialog_manager/behavior_tree/line_processors/IfMode";
|
|
6
|
+
import type { LineBehaviorNode } from "$lib/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode";
|
|
7
|
+
import { expressionEvaluator } from "$lib/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* ElseIfNode is a leaf node that returns:
|
|
11
|
+
* - Success if it is an elseif node, and updates the behaviorState
|
|
12
|
+
* - Failure if it is not an elseif node
|
|
13
|
+
*/
|
|
14
|
+
export class ElseIfNode implements LineBehaviorNode {
|
|
15
|
+
process(nodeArgs: LineNodeArguments): LineBehaviorResult {
|
|
16
|
+
if (!nodeArgs.line.startsWith("<<elseif")) {
|
|
17
|
+
return {
|
|
18
|
+
nextState: nodeArgs.initState,
|
|
19
|
+
renderedLine: "",
|
|
20
|
+
status: BehaviorStatus.Failure
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const currentIfMode = btreeUtils.peek(nodeArgs.initState.ifModeStack);
|
|
25
|
+
switch (currentIfMode) {
|
|
26
|
+
case IfMode.Search:
|
|
27
|
+
// probably a syntax error
|
|
28
|
+
console.error("Syntax error found in yarn dialog!");
|
|
29
|
+
console.error(`Check out line ${nodeArgs.lineIndex + 1}: ${nodeArgs.line}`);
|
|
30
|
+
break;
|
|
31
|
+
case IfMode.Ignore:
|
|
32
|
+
// just move on
|
|
33
|
+
break;
|
|
34
|
+
case IfMode.Evaluated:
|
|
35
|
+
// previous case was true therefore ignore
|
|
36
|
+
nodeArgs.initState.ifModeStack.pop();
|
|
37
|
+
nodeArgs.initState.ifModeStack.push(IfMode.Ignore);
|
|
38
|
+
break;
|
|
39
|
+
case IfMode.EvaluateNext:
|
|
40
|
+
// since all the previous evaluations were false,
|
|
41
|
+
// let's try evaluating this like the if statement
|
|
42
|
+
if (expressionEvaluator.evaluate(nodeArgs.line, "<<elseif")) {
|
|
43
|
+
nodeArgs.initState.ifModeStack.pop();
|
|
44
|
+
nodeArgs.initState.ifModeStack.push(IfMode.Evaluated);
|
|
45
|
+
} // else: retain the EvaluateNext status
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
console.error("Unimplemented if state!");
|
|
49
|
+
console.error(`Check out line ${nodeArgs.lineIndex + 1}: ${nodeArgs.line}`);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
nextState: nodeArgs.initState,
|
|
55
|
+
renderedLine: "",
|
|
56
|
+
status: BehaviorStatus.Success
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|