@turnipxenon/pineapple 2.10.0 → 3.0.0-alpha.1
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/dist/assets/icons/icon-contrast.svg +1 -0
- package/dist/assets/icons/icon-dark-mode.svg +1 -0
- package/dist/assets/icons/icon-light-mode.svg +1 -0
- package/dist/assets/icons/icon-settings.svg +1 -0
- package/dist/components/Card.svelte +43 -41
- package/dist/components/Card.svelte.d.ts +11 -24
- package/dist/components/CarouselElement.svelte +15 -8
- package/dist/components/CarouselElement.svelte.d.ts +7 -18
- package/dist/components/ElementVisbilityDetector.svelte +23 -14
- package/dist/components/ElementVisbilityDetector.svelte.d.ts +6 -17
- package/dist/components/LazyAsset.svelte +93 -65
- package/dist/components/LazyAsset.svelte.d.ts +9 -19
- package/dist/components/PineappleSlideToggle.svelte +19 -7
- package/dist/components/PineappleSlideToggle.svelte.d.ts +8 -19
- package/dist/components/RandomizedBackground.svelte +46 -27
- package/dist/components/RandomizedBackground.svelte.d.ts +5 -15
- package/dist/components/RandomizedImage.svelte +15 -8
- package/dist/components/RandomizedImage.svelte.d.ts +6 -16
- package/dist/components/StickyElement.svelte +25 -16
- package/dist/components/StickyElement.svelte.d.ts +6 -17
- package/dist/components/ToggleableContent.svelte +88 -59
- package/dist/components/ToggleableContent.svelte.d.ts +6 -17
- package/dist/components/blog_template/BlogTemplate.svelte +45 -25
- package/dist/components/blog_template/BlogTemplate.svelte.d.ts +9 -20
- package/dist/components/blog_template/BlogTemplateInner.svelte +11 -3
- package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +6 -17
- package/dist/components/chip/Chip.svelte +33 -57
- package/dist/components/chip/Chip.svelte.d.ts +7 -18
- package/dist/components/combo_box/ComboBox.svelte +10 -4
- package/dist/components/combo_box/ComboBox.svelte.d.ts +6 -16
- package/dist/components/combo_box/ComboBoxWithButton.svelte +16 -9
- package/dist/components/combo_box/ComboBoxWithButton.svelte.d.ts +7 -17
- package/dist/components/combo_box/combo-box.postcss +2 -2
- package/dist/components/dialog_manager/DialogManager.d.ts +0 -1
- package/dist/components/dialog_manager/DialogManagerStore.d.ts +0 -1
- package/dist/components/dialog_manager/DialogManagerStore.js +1 -1
- package/dist/components/dialog_overlay/DialogOverlay.svelte +42 -34
- package/dist/components/dialog_overlay/DialogOverlay.svelte.d.ts +3 -14
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/layouts/SeaweedBaseLayout.svelte +80 -43
- package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +8 -21
- package/dist/components/navigation_component/NavigationComponent.svelte +52 -141
- package/dist/components/navigation_component/NavigationComponent.svelte.d.ts +17 -26
- package/dist/components/navigation_component/NavigationControl.svelte +52 -103
- package/dist/components/navigation_component/NavigationControl.svelte.d.ts +7 -17
- package/dist/components/overrideable_meta/OverridableMeta.svelte +37 -22
- package/dist/components/overrideable_meta/OverridableMeta.svelte.d.ts +9 -19
- package/dist/components/pineapple/PineappleBaseLayout.svelte +132 -188
- package/dist/components/pineapple/PineappleBaseLayout.svelte.d.ts +6 -17
- package/dist/components/pineapple/toast/DefaultToastBody.svelte +14 -16
- package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +7 -17
- package/dist/components/pineapple/toast/Toast.d.ts +0 -1
- package/dist/components/pineapple/toast/Toast.svelte +92 -64
- package/dist/components/pineapple/toast/Toast.svelte.d.ts +3 -14
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +22 -19
- package/dist/paraglide/messages/_index.d.ts +2 -0
- package/dist/paraglide/messages/_index.js +3 -0
- package/dist/paraglide/messages/example_message.d.ts +5 -0
- package/dist/paraglide/messages/example_message.js +39 -0
- package/dist/paraglide/messages/settings.d.ts +3 -0
- package/dist/paraglide/messages/settings.js +38 -0
- package/dist/paraglide/messages.d.ts +2 -0
- package/dist/paraglide/messages.js +4 -0
- package/dist/paraglide/registry.d.ts +21 -0
- package/dist/paraglide/registry.js +31 -0
- package/dist/paraglide/runtime.d.ts +400 -0
- package/dist/paraglide/runtime.js +1060 -0
- package/dist/paraglide/server.d.ts +64 -0
- package/dist/paraglide/server.js +161 -0
- package/dist/scripts/util/FileManagement.d.ts +1 -1
- package/dist/store.d.ts +0 -1
- package/dist/styles/app.css +53 -0
- package/dist/styles/turnip-theme.css +323 -0
- package/dist/template/seaweed/CreateUrlForm.svelte +50 -38
- package/dist/template/seaweed/CreateUrlForm.svelte.d.ts +5 -15
- package/dist/template/seaweed/SeaweedTemplate.svelte +244 -195
- package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +28 -25
- package/dist/template/seaweed/entries/ChefWings.svelte +37 -39
- package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +5 -15
- package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +32 -24
- package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +5 -15
- package/dist/template/seaweed/entries/Hepcat.svelte +58 -49
- package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +5 -15
- package/dist/template/seaweed/entries/Pengi.svelte +51 -43
- package/dist/template/seaweed/entries/Pengi.svelte.d.ts +5 -15
- package/dist/template/seaweed/entries/Soulwork.svelte +44 -36
- package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +5 -15
- package/dist/template/seaweed/entries/ThisWebpage.svelte +47 -38
- package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +5 -15
- package/dist/template/seaweed/entries/WorkExperience.svelte +109 -92
- package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +6 -16
- package/dist/template/seaweed/entries/Workset.svelte +51 -42
- package/dist/template/seaweed/entries/Workset.svelte.d.ts +5 -15
- package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +136 -259
- package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +10 -20
- package/dist/template/seaweed/seaweed.postcss +1 -9
- package/dist/{theme.postcss → theme.css} +1 -4
- package/dist/ui/components/FourPartCard.svelte +47 -0
- package/dist/ui/components/FourPartCard.svelte.d.ts +10 -0
- package/dist/ui/components/ModalBase.svelte +75 -0
- package/dist/ui/components/ModalBase.svelte.d.ts +8 -0
- package/dist/ui/components/SocialSection.svelte +87 -0
- package/dist/ui/components/SocialSection.svelte.d.ts +9 -0
- package/dist/ui/components/index.d.ts +3 -0
- package/dist/ui/components/index.js +3 -0
- package/dist/ui/components/randomized-background/RandomizedBackground.svelte +87 -0
- package/dist/ui/components/randomized-background/RandomizedBackground.svelte.d.ts +6 -0
- package/dist/ui/components/randomized-background/RandomizedImage.svelte +42 -0
- package/dist/ui/components/randomized-background/RandomizedImage.svelte.d.ts +7 -0
- package/dist/ui/elements/ColorScheme.d.ts +10 -0
- package/dist/ui/elements/ColorScheme.js +11 -0
- package/dist/ui/elements/GeneralUIProps.d.ts +12 -0
- package/dist/ui/elements/GeneralUIProps.js +1 -0
- package/dist/ui/elements/ImageIcon.svelte +54 -0
- package/dist/ui/elements/ImageIcon.svelte.d.ts +6 -0
- package/dist/ui/elements/OnBackground.d.ts +3 -0
- package/dist/ui/elements/OnBackground.js +4 -0
- package/dist/ui/elements/TextLink.svelte +17 -0
- package/dist/ui/elements/TextLink.svelte.d.ts +8 -0
- package/dist/ui/elements/WrapperProps.d.ts +4 -0
- package/dist/ui/elements/WrapperProps.js +1 -0
- package/dist/ui/elements/index.d.ts +8 -0
- package/dist/ui/elements/index.js +8 -0
- package/dist/ui/elements/pinya-button/component.svelte +47 -0
- package/dist/ui/elements/pinya-button/component.svelte.d.ts +4 -0
- package/dist/ui/elements/pinya-button/index.d.ts +2 -0
- package/dist/ui/elements/pinya-button/index.js +2 -0
- package/dist/ui/elements/pinya-button/props.d.ts +13 -0
- package/dist/ui/elements/pinya-button/props.js +6 -0
- package/dist/ui/elements/pinya-card/component.svelte +19 -0
- package/dist/ui/elements/pinya-card/component.svelte.d.ts +7 -0
- package/dist/ui/elements/pinya-card/index.d.ts +2 -0
- package/dist/ui/elements/pinya-card/index.js +2 -0
- package/dist/ui/elements/pinya-card/props.d.ts +7 -0
- package/dist/ui/elements/pinya-card/props.js +1 -0
- package/dist/ui/modules/index.d.ts +1 -0
- package/dist/ui/modules/index.js +1 -0
- package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +110 -0
- package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte.d.ts +4 -0
- package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +48 -0
- package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte.d.ts +3 -0
- package/dist/{template → ui/modules}/seaweed/ChumBucket.svelte +28 -28
- package/dist/ui/modules/seaweed/ChumBucket.svelte.d.ts +3 -0
- package/dist/ui/modules/seaweed/index.d.ts +3 -0
- package/dist/ui/modules/seaweed/index.js +4 -0
- package/dist/ui/templates/PinyaBase.svelte +45 -0
- package/dist/ui/templates/PinyaBase.svelte.d.ts +7 -0
- package/dist/ui/templates/confirmation-modal/component.svelte +47 -0
- package/dist/ui/templates/confirmation-modal/component.svelte.d.ts +4 -0
- package/dist/ui/templates/confirmation-modal/index.d.ts +2 -0
- package/dist/ui/templates/confirmation-modal/index.js +2 -0
- package/dist/ui/templates/confirmation-modal/props.d.ts +10 -0
- package/dist/ui/templates/confirmation-modal/props.js +1 -0
- package/dist/ui/templates/index.d.ts +3 -0
- package/dist/ui/templates/index.js +3 -0
- package/dist/ui/templates/pinya-page-layout/component.svelte +113 -0
- package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +8 -0
- package/dist/ui/templates/pinya-page-layout/index.d.ts +2 -0
- package/dist/ui/templates/pinya-page-layout/index.js +2 -0
- package/dist/ui/templates/pinya-page-layout/runes.svelte.d.ts +7 -0
- package/dist/ui/templates/pinya-page-layout/runes.svelte.js +3 -0
- package/package.json +36 -18
- package/src/lib/styles/app.css +53 -0
- package/src/lib/theme.css +114 -0
- package/dist/app.postcss +0 -212
- package/dist/components/SocialSection.svelte +0 -166
- package/dist/components/SocialSection.svelte.d.ts +0 -31
- package/dist/postcss.d.ts +0 -3
- package/dist/styles/DefaultGridContainer.css +0 -61
- package/dist/template/seaweed/ChumBucket.svelte.d.ts +0 -14
|
@@ -1,47 +1,45 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
window.open("https://selk.io/birb-project/trunk/");
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
};
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
|
|
3
|
+
import { type EntryProps } from "./EntryProps";
|
|
4
|
+
import HeaderChefWings from "../../../assets/game_dev/footage-chef-wings.gif";
|
|
5
|
+
import LinkIcon from "../../../assets/icons/link-icon.svg";
|
|
6
|
+
import Card from "../../../components/Card.svelte";
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
props: EntryProps;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { props }: Props = $props();
|
|
13
|
+
|
|
18
14
|
</script>
|
|
19
15
|
|
|
20
16
|
<Card>
|
|
21
|
-
|
|
22
|
-
<
|
|
23
|
-
|
|
17
|
+
{#snippet content()}
|
|
18
|
+
<section class="game-card" >
|
|
19
|
+
<img src={HeaderChefWings} alt="todo" loading="lazy">
|
|
20
|
+
<section class="game-card-body">
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
22
|
+
<h1>Chef Wings</h1>
|
|
23
|
+
<p>
|
|
24
|
+
A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
|
|
25
|
+
them to cook for customers and then critics!
|
|
26
|
+
</p>
|
|
27
|
+
<p>
|
|
28
|
+
I built and documented several of the game’s systems including the game state management
|
|
29
|
+
system that extends <span class="qt-unity">Unity’s</span> existing Monobehavior lifecycle with new events,
|
|
30
|
+
and the dialogue, event, and level systems that coordinate the game flow using the interactive
|
|
31
|
+
dialogue tool YarnSpinner
|
|
32
|
+
</p>
|
|
36
33
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
<section class="game-link-section">
|
|
35
|
+
<button type="button" class="game-button turnip-button"
|
|
36
|
+
title="https://selk.io/birb-project/trunk/"
|
|
37
|
+
onclick={()=>{alert('not implemented')}}>
|
|
38
|
+
<img alt="itch.io icon" src={LinkIcon}>
|
|
39
|
+
<span>selk.io/birb-project/trunk/</span>
|
|
40
|
+
</button>
|
|
41
|
+
</section>
|
|
44
42
|
</section>
|
|
45
43
|
</section>
|
|
46
|
-
|
|
44
|
+
{/snippet}
|
|
47
45
|
</Card>
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import { type EntryProps } from "./EntryProps";
|
|
3
|
-
|
|
4
|
-
props:
|
|
5
|
-
props: EntryProps;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type ChefWingsProps = typeof __propDef.props;
|
|
13
|
-
export type ChefWingsEvents = typeof __propDef.events;
|
|
14
|
-
export type ChefWingsSlots = typeof __propDef.slots;
|
|
15
|
-
export default class ChefWings extends SvelteComponent<ChefWingsProps, ChefWingsEvents, ChefWingsSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
props: EntryProps;
|
|
16
4
|
}
|
|
17
|
-
|
|
5
|
+
declare const ChefWings: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type ChefWings = ReturnType<typeof ChefWings>;
|
|
7
|
+
export default ChefWings;
|
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { type EntryProps } from "./EntryProps";
|
|
3
|
+
import Card from "../../../components/Card.svelte";
|
|
4
|
+
import GithubIcon from "../../../assets/icons/github-mark.svg";
|
|
5
|
+
import WeaverFootage from "../../../assets/others/weaver-footage.gif";
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
props: EntryProps;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let { props }: Props = $props();
|
|
6
12
|
</script>
|
|
7
13
|
|
|
8
14
|
|
|
9
15
|
<Card>
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
16
|
+
{#snippet content()}
|
|
17
|
+
<section class="project-card" >
|
|
18
|
+
<img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"
|
|
19
|
+
src={WeaverFootage} />
|
|
13
20
|
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
<div class="project-card-body">
|
|
22
|
+
<h2>Customized Yarnspinner interpreter and dialog runner</h2>
|
|
16
23
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
A custom dialog interpreter, written in <span class="qt-ts">Typescript</span>, that tokenizes then
|
|
25
|
+
transpiles custom Yarnspinner dialog into a <span class="qt-ts">Typescript</span> file. The said files can
|
|
26
|
+
be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
|
|
27
|
+
custom-flavor of YarnSpinner dialogs on <span class="qt-svelte">Svelte</span>.
|
|
21
28
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
<section class="game-link-section">
|
|
30
|
+
<button type="button" class="game-button turnip-button"
|
|
31
|
+
role="link"
|
|
32
|
+
title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md"
|
|
33
|
+
onclick={() => window.open("https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md")}>
|
|
34
|
+
<img src={GithubIcon} alt="github icon">
|
|
35
|
+
</button>
|
|
36
|
+
</section>
|
|
37
|
+
</div>
|
|
38
|
+
</section>
|
|
39
|
+
{/snippet}
|
|
32
40
|
</Card>
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import { type EntryProps } from "./EntryProps";
|
|
3
|
-
|
|
4
|
-
props:
|
|
5
|
-
props: EntryProps;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type CustomizedYarnspinnerProps = typeof __propDef.props;
|
|
13
|
-
export type CustomizedYarnspinnerEvents = typeof __propDef.events;
|
|
14
|
-
export type CustomizedYarnspinnerSlots = typeof __propDef.slots;
|
|
15
|
-
export default class CustomizedYarnspinner extends SvelteComponent<CustomizedYarnspinnerProps, CustomizedYarnspinnerEvents, CustomizedYarnspinnerSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
props: EntryProps;
|
|
16
4
|
}
|
|
17
|
-
|
|
5
|
+
declare const CustomizedYarnspinner: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type CustomizedYarnspinner = ReturnType<typeof CustomizedYarnspinner>;
|
|
7
|
+
export default CustomizedYarnspinner;
|
|
@@ -1,55 +1,64 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { EntryProps } from "./EntryProps";
|
|
3
|
+
import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
|
|
4
|
+
import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
|
|
5
|
+
import { ItchLogoHotLink } from "../../../consts";
|
|
6
|
+
import Card from "../../../components/Card.svelte";
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
props: EntryProps;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { props }: Props = $props();
|
|
6
13
|
</script>
|
|
7
14
|
|
|
8
15
|
<Card>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
16
|
+
{#snippet content()}
|
|
17
|
+
<section class="game-card" >
|
|
18
|
+
<!-- todo: move the image crop a bit lower -->
|
|
19
|
+
<video playsinline autoplay muted loop preload="none" id="hepcat-video">
|
|
20
|
+
<source src={HeaderHepCat} type="video/mp4">
|
|
21
|
+
</video>
|
|
22
|
+
|
|
23
|
+
<section class="game-card-body">
|
|
24
|
+
|
|
25
|
+
<h1>Hepcat</h1>
|
|
26
|
+
|
|
27
|
+
<blockquote>
|
|
28
|
+
"Cats, Jazz, and a little bit of Death. What more could anyone ask for?"
|
|
29
|
+
</blockquote>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<p>This is a course project made by a team of six for <a
|
|
33
|
+
href="https://sites.google.com/ualberta.ca/cmput250/">CMPUT 250</a>, and it won <a
|
|
34
|
+
href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/">Game of the year.</a>
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<p>
|
|
38
|
+
Hep Cat is a rhythm game made in <a
|
|
39
|
+
href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker">
|
|
40
|
+
RPG Maker MV</a> with the help of additional custom-made <span class="qt-js">Javascript</span> plugins. I
|
|
41
|
+
wrote the rhythm game plugin's framework. For this plugin to work, I
|
|
42
|
+
had to write a <span class="qt-python">Python</span> script that parses osu! files into readable JSON
|
|
43
|
+
files.
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
<section class="game-link-section">
|
|
48
|
+
<button type="button" class="game-button turnip-button"
|
|
49
|
+
role="link"
|
|
50
|
+
title="https://bitbucket.org/egginchicken/hep-cat/src/master/"
|
|
51
|
+
onclick={()=> window.open("https://bitbucket.org/egginchicken/hep-cat/src/master/")}>
|
|
52
|
+
<img alt="bitbucket icon" src={BitbucketIcon}>
|
|
53
|
+
</button>
|
|
54
|
+
<button type="button" class="game-button turnip-button"
|
|
55
|
+
role="link"
|
|
56
|
+
title="https://just-a-phantom.itch.io/hep-cat"
|
|
57
|
+
onclick={()=> window.open("https://just-a-phantom.itch.io/hep-cat")}>
|
|
58
|
+
<img alt="itch.io icon" src={ItchLogoHotLink}>
|
|
59
|
+
</button>
|
|
60
|
+
</section>
|
|
52
61
|
</section>
|
|
53
62
|
</section>
|
|
54
|
-
|
|
63
|
+
{/snippet}
|
|
55
64
|
</Card>
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type { EntryProps } from "./EntryProps";
|
|
3
|
-
|
|
4
|
-
props:
|
|
5
|
-
props: EntryProps;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type HepcatProps = typeof __propDef.props;
|
|
13
|
-
export type HepcatEvents = typeof __propDef.events;
|
|
14
|
-
export type HepcatSlots = typeof __propDef.slots;
|
|
15
|
-
export default class Hepcat extends SvelteComponent<HepcatProps, HepcatEvents, HepcatSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
props: EntryProps;
|
|
16
4
|
}
|
|
17
|
-
|
|
5
|
+
declare const Hepcat: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Hepcat = ReturnType<typeof Hepcat>;
|
|
7
|
+
export default Hepcat;
|
|
@@ -1,49 +1,57 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { type EntryProps } from "./EntryProps";
|
|
3
|
+
import HeaderPengi from "../../../assets/temp/header-pengi.mp4";
|
|
4
|
+
import GithubIcon from "../../../assets/icons/github-mark.svg";
|
|
5
|
+
import { ItchLogoHotLink } from "../../../consts";
|
|
6
|
+
import Card from "../../../components/Card.svelte";
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
props: EntryProps;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { props }: Props = $props();
|
|
7
13
|
</script>
|
|
8
14
|
|
|
9
15
|
<Card>
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
video
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
16
|
+
{#snippet content()}
|
|
17
|
+
<section class="game-card" >
|
|
18
|
+
<video playsinline autoplay muted loop preload="none">
|
|
19
|
+
video unavailable. original video contains pengi gameplay showing the dynamic dialog
|
|
20
|
+
layout and character animation.
|
|
21
|
+
<source src={HeaderPengi} type="video/mp4">
|
|
22
|
+
</video>
|
|
23
|
+
|
|
24
|
+
<section class="game-card-body">
|
|
25
|
+
|
|
26
|
+
<h1>Pengi</h1>
|
|
27
|
+
|
|
28
|
+
<blockquote>
|
|
29
|
+
Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
|
|
30
|
+
money...
|
|
31
|
+
</blockquote>
|
|
32
|
+
|
|
33
|
+
<p>
|
|
34
|
+
Pengi is a text-based adventure made in <span class="qt-unity">Unity</span>. I acted as the sole
|
|
35
|
+
programmer for the team. Most of the work revolves around UI and creating <a
|
|
36
|
+
href="https://yarnspinner.dev/" target="_blank">YarnSpinner</a> commands for writers
|
|
37
|
+
to use to create expressive stage directions in the script.
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
<section class="game-link-section">
|
|
41
|
+
<button type="button" class="game-button turnip-button"
|
|
42
|
+
role="link"
|
|
43
|
+
title="https://github.com/GreenTea-M/ProjectPengi"
|
|
44
|
+
onclick={()=> window.open("https://github.com/GreenTea-M/ProjectPengi")}>
|
|
45
|
+
<img alt="github icon" src={GithubIcon}>
|
|
46
|
+
</button>
|
|
47
|
+
<button type="button" class="game-button turnip-button"
|
|
48
|
+
role="link"
|
|
49
|
+
title="https://turnipxenon.itch.io/pengi"
|
|
50
|
+
onclick={()=> window.open("https://turnipxenon.itch.io/pengi")}>
|
|
51
|
+
<img alt="itch.io icon" src={ItchLogoHotLink}>
|
|
52
|
+
</button>
|
|
53
|
+
</section>
|
|
46
54
|
</section>
|
|
47
55
|
</section>
|
|
48
|
-
|
|
56
|
+
{/snippet}
|
|
49
57
|
</Card>
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import { type EntryProps } from "./EntryProps";
|
|
3
|
-
|
|
4
|
-
props:
|
|
5
|
-
props: EntryProps;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type PengiProps = typeof __propDef.props;
|
|
13
|
-
export type PengiEvents = typeof __propDef.events;
|
|
14
|
-
export type PengiSlots = typeof __propDef.slots;
|
|
15
|
-
export default class Pengi extends SvelteComponent<PengiProps, PengiEvents, PengiSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
props: EntryProps;
|
|
16
4
|
}
|
|
17
|
-
|
|
5
|
+
declare const Pengi: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Pengi = ReturnType<typeof Pengi>;
|
|
7
|
+
export default Pengi;
|
|
@@ -1,46 +1,54 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { type EntryProps } from "./EntryProps";
|
|
3
|
+
import HeaderSoulwork from "../../../assets/temp/header-soulwork.mp4";
|
|
4
|
+
import GithubIcon from "../../../assets/icons/github-mark.svg";
|
|
5
|
+
import { ItchLogoHotLink } from "../../../consts";
|
|
6
|
+
import Card from "../../../components/Card.svelte";
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
props: EntryProps;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { props }: Props = $props();
|
|
7
13
|
</script>
|
|
8
14
|
|
|
9
15
|
<Card>
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
{#snippet content()}
|
|
17
|
+
<section class="game-card" >
|
|
18
|
+
<video playsinline autoplay muted loop preload="none">
|
|
19
|
+
<source src={HeaderSoulwork} type="video/mp4">
|
|
20
|
+
</video>
|
|
21
|
+
<section class="game-card-body">
|
|
15
22
|
|
|
16
|
-
|
|
23
|
+
<h1>Soulwork</h1>
|
|
17
24
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
<p>
|
|
26
|
+
Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
|
|
27
|
+
This project is a Time to Game Jam entry, restricting game development to be under 48
|
|
28
|
+
hours.
|
|
29
|
+
</p>
|
|
30
|
+
<p>
|
|
31
|
+
I helped make the level designing tools used by the designers to drag-and-drop objects
|
|
32
|
+
on the stage. I also helped program the unique physics-based gameplay mechanic. This was
|
|
33
|
+
was made in <span class="qt-unity">Unity</span> written using <span class="qt-cs">C#</span>.
|
|
34
|
+
</p>
|
|
28
35
|
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
<section class="game-link-section">
|
|
38
|
+
<button type="button" class="game-button turnip-button"
|
|
39
|
+
role="link"
|
|
40
|
+
title="https://github.com/Zeyu-Li/Clockwork"
|
|
41
|
+
onclick={()=> window.open("https://github.com/Zeyu-Li/Clockwork")}>
|
|
42
|
+
<img alt="github icon" src={GithubIcon}>
|
|
43
|
+
</button>
|
|
44
|
+
<button type="button" class="game-button turnip-button"
|
|
45
|
+
role="link"
|
|
46
|
+
title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331"
|
|
47
|
+
onclick={()=> window.open("https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331")}>
|
|
48
|
+
<img alt="itch.io icon" src={ItchLogoHotLink}>
|
|
49
|
+
</button>
|
|
50
|
+
</section>
|
|
43
51
|
</section>
|
|
44
52
|
</section>
|
|
45
|
-
|
|
53
|
+
{/snippet}
|
|
46
54
|
</Card>
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import { type EntryProps } from "./EntryProps";
|
|
3
|
-
|
|
4
|
-
props:
|
|
5
|
-
props: EntryProps;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type SoulworkProps = typeof __propDef.props;
|
|
13
|
-
export type SoulworkEvents = typeof __propDef.events;
|
|
14
|
-
export type SoulworkSlots = typeof __propDef.slots;
|
|
15
|
-
export default class Soulwork extends SvelteComponent<SoulworkProps, SoulworkEvents, SoulworkSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
props: EntryProps;
|
|
16
4
|
}
|
|
17
|
-
|
|
5
|
+
declare const Soulwork: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Soulwork = ReturnType<typeof Soulwork>;
|
|
7
|
+
export default Soulwork;
|