@turnipxenon/pineapple 3.0.0-alpha.9 → 3.1.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/components/blog_template/BlogTemplate.svelte +2 -2
- package/dist/components/blog_template/BlogTemplate.svelte.d.ts +1 -1
- package/dist/components/blog_template/BlogTemplateInner.svelte +1 -1
- package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +1 -1
- package/dist/components/dialog_manager/DialogManager.d.ts +2 -1
- package/dist/components/dialog_manager/DialogMangerInit.d.ts +2 -15
- package/dist/components/dialog_manager/DialogMangerInit.js +8 -2
- package/dist/components/dialog_manager/IDialogManager.d.ts +39 -0
- package/dist/components/dialog_manager/IDialogManager.js +4 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +3 -0
- package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +15 -3
- package/dist/components/dialog_overlay/DialogOverlay.svelte +155 -36
- package/dist/components/layouts/SeaweedBaseLayout.svelte +0 -6
- package/dist/components/pineapple/PineappleBaseLayout.svelte +2 -21
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -3
- package/dist/styles/app.css +9 -14
- package/dist/ui/components/ModalBase.svelte +74 -74
- package/dist/ui/components/SocialSection.svelte +6 -2
- package/dist/ui/components/accordion/PinyaAccordion.svelte +20 -20
- package/dist/ui/components/accordion/PinyaAccordionItem.svelte +28 -28
- package/dist/ui/elements/CodeBlock/CodeBlock.svelte +64 -64
- package/dist/ui/elements/ImageIcon.svelte +53 -53
- package/dist/ui/elements/{pinya-button/component.svelte → PinyaButton/PinyaButton.svelte} +4 -3
- package/dist/ui/elements/PinyaButton/PinyaButton.svelte.d.ts +4 -0
- package/dist/ui/elements/{pinya-button/props.d.ts → PinyaButton/PinyaButtonProps.d.ts} +1 -0
- package/dist/ui/elements/PinyaButton/index.d.ts +2 -0
- package/dist/ui/elements/PinyaButton/index.js +2 -0
- package/dist/ui/elements/{pinya-card/component.svelte → PinyaCard/PinyaCard.svelte} +21 -20
- package/dist/ui/elements/PinyaCard/PinyaCard.svelte.d.ts +7 -0
- package/dist/ui/elements/PinyaCard/index.d.ts +2 -0
- package/dist/ui/elements/PinyaCard/index.js +2 -0
- package/dist/ui/elements/Placeholder.svelte +17 -17
- package/dist/ui/elements/TextLink.svelte +16 -16
- package/dist/ui/elements/index.d.ts +2 -2
- package/dist/ui/elements/index.js +2 -2
- package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +34 -34
- package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +1 -0
- package/dist/ui/elements/text-chip/TextChip.svelte +14 -14
- package/dist/{components/navigation_component → ui/modules/NavigationMenu}/NavigationControl.svelte +24 -20
- package/dist/{components/navigation_component/NavigationComponent.svelte → ui/modules/NavigationMenu/NavigationMenu.svelte} +69 -43
- package/dist/{components/navigation_component/NavigationComponent.svelte.d.ts → ui/modules/NavigationMenu/NavigationMenu.svelte.d.ts} +6 -6
- package/dist/{components/navigation_component → ui/modules/NavigationMenu}/PageMeta.d.ts +4 -4
- package/dist/ui/modules/NavigationMenu/index.d.ts +2 -0
- package/dist/ui/modules/NavigationMenu/index.js +2 -0
- package/dist/ui/modules/index.d.ts +1 -1
- package/dist/ui/modules/index.js +1 -1
- package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +109 -109
- package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +42 -37
- package/dist/ui/modules/projects/Hepcat.svelte +6 -4
- package/dist/ui/modules/projects/Hepcat.svelte.d.ts +1 -1
- package/dist/ui/modules/projects/Pengi.svelte +61 -59
- package/dist/ui/modules/projects/Pengi.svelte.d.ts +1 -1
- package/dist/ui/modules/projects/Soulwork.svelte +7 -5
- package/dist/ui/modules/projects/ThisWebpage.svelte +19 -16
- package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +1 -1
- package/dist/ui/templates/{pinya-page-layout/component.svelte → PinyaPageLayout/PinyaPageLayout.svelte} +1 -1
- package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts +9 -0
- package/dist/ui/templates/PinyaPageLayout/index.d.ts +2 -0
- package/dist/ui/templates/PinyaPageLayout/index.js +2 -0
- package/dist/ui/templates/{pinya-page-layout → PinyaPageLayout}/runes.svelte.d.ts +3 -0
- package/dist/ui/templates/PinyaPageLayout/runes.svelte.js +4 -0
- package/dist/ui/{modules/seaweed → templates/SeaweedLayout}/ChumBucket.svelte +1 -1
- package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte +2 -2
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte +65 -88
- package/dist/ui/templates/SeaweedLayout/EntryOrderConfig.svelte.d.ts +9 -0
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.d.ts +1 -0
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte +316 -316
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte.d.ts +1 -1
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.md +3 -3
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte +278 -276
- package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.d.ts +2 -2
- package/dist/ui/templates/confirmation-modal/component.svelte +46 -46
- package/dist/ui/templates/index.d.ts +2 -2
- package/dist/ui/templates/index.js +2 -2
- package/package.json +3 -2
- package/src/lib/styles/app.css +9 -14
- package/dist/components/navigation_component/index.d.ts +0 -2
- package/dist/components/navigation_component/index.js +0 -3
- package/dist/template/seaweed/ParseQueryTerms.d.ts +0 -1
- package/dist/template/seaweed/ParseQueryTerms.js +0 -23
- package/dist/template/seaweed/RunChaos.d.ts +0 -1
- package/dist/template/seaweed/RunChaos.js +0 -41
- package/dist/template/seaweed/SeaweedTemplate.svelte +0 -336
- package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +0 -32
- package/dist/template/seaweed/SeaweedTemplateData.d.ts +0 -30
- package/dist/template/seaweed/SeaweedTemplateData.js +0 -79
- package/dist/template/seaweed/entries/ChefWings.svelte +0 -45
- package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +0 -7
- package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +0 -40
- package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +0 -7
- package/dist/template/seaweed/entries/EntryProps.d.ts +0 -16
- package/dist/template/seaweed/entries/EntryProps.js +0 -5
- package/dist/template/seaweed/entries/Hepcat.svelte +0 -64
- package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +0 -7
- package/dist/template/seaweed/entries/Pengi.svelte +0 -57
- package/dist/template/seaweed/entries/Pengi.svelte.d.ts +0 -7
- package/dist/template/seaweed/entries/Soulwork.svelte +0 -54
- package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +0 -7
- package/dist/template/seaweed/entries/ThisWebpage.svelte +0 -55
- package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +0 -7
- package/dist/template/seaweed/entries/WorkExperience.svelte +0 -130
- package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +0 -8
- package/dist/template/seaweed/entries/Workset.svelte +0 -57
- package/dist/template/seaweed/entries/Workset.svelte.d.ts +0 -7
- package/dist/template/seaweed/entry_order_config/EntryOrderConfig.d.ts +0 -1
- package/dist/template/seaweed/entry_order_config/EntryOrderConfig.js +0 -8
- package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +0 -297
- package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +0 -12
- package/dist/template/seaweed/entry_order_config/entry-order-config.postcss +0 -35
- package/dist/template/seaweed/index.d.ts +0 -4
- package/dist/template/seaweed/index.js +0 -4
- package/dist/template/seaweed/seaweed.postcss +0 -125
- package/dist/ui/elements/pinya-button/component.svelte.d.ts +0 -4
- package/dist/ui/elements/pinya-button/index.d.ts +0 -2
- package/dist/ui/elements/pinya-button/index.js +0 -2
- package/dist/ui/elements/pinya-card/component.svelte.d.ts +0 -7
- package/dist/ui/elements/pinya-card/index.d.ts +0 -2
- package/dist/ui/elements/pinya-card/index.js +0 -2
- package/dist/ui/modules/seaweed/index.d.ts +0 -3
- package/dist/ui/modules/seaweed/index.js +0 -4
- package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +0 -9
- package/dist/ui/templates/pinya-page-layout/index.d.ts +0 -2
- package/dist/ui/templates/pinya-page-layout/index.js +0 -2
- package/dist/ui/templates/pinya-page-layout/runes.svelte.js +0 -3
- package/dist/ui/templates/seaweed-layout/EntryOrderConfig2.svelte.d.ts +0 -9
- /package/dist/ui/elements/{pinya-button/props.js → PinyaButton/PinyaButtonProps.js} +0 -0
- /package/dist/ui/elements/{pinya-card/props.d.ts → PinyaCard/PinyaCardProps.d.ts} +0 -0
- /package/dist/{template/seaweed/ToastSettings.js → ui/elements/PinyaCard/PinyaCardProps.js} +0 -0
- /package/dist/{components/navigation_component → ui/modules/NavigationMenu}/NavigationControl.svelte.d.ts +0 -0
- /package/dist/{components/navigation_component → ui/modules/NavigationMenu}/PageMeta.js +0 -0
- /package/dist/ui/{modules/seaweed → templates/SeaweedLayout}/ChumBucket.svelte.d.ts +0 -0
- /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte.d.ts +0 -0
- /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte.d.ts +0 -0
- /package/dist/ui/templates/{seaweed-layout/EntryOrderConfig2.svelte → SeaweedLayout/EntryOrderConfig.svelte} +0 -0
- /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.js +0 -0
- /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte.d.ts +0 -0
- /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/ToastSettings.d.ts +0 -0
- /package/dist/ui/{elements/pinya-card/props.js → templates/SeaweedLayout/ToastSettings.js} +0 -0
- /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.d.ts +0 -0
- /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.js +0 -0
- /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.js +0 -0
|
@@ -1,45 +0,0 @@
|
|
|
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
|
-
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<Card>
|
|
17
|
-
{#snippet content()}
|
|
18
|
-
<section class="game-card" >
|
|
19
|
-
<img src={HeaderChefWings} alt="todo" loading="lazy">
|
|
20
|
-
<section class="game-card-body">
|
|
21
|
-
|
|
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>
|
|
33
|
-
|
|
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>
|
|
42
|
-
</section>
|
|
43
|
-
</section>
|
|
44
|
-
{/snippet}
|
|
45
|
-
</Card>
|
|
@@ -1,40 +0,0 @@
|
|
|
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();
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<Card>
|
|
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} />
|
|
20
|
-
|
|
21
|
-
<div class="project-card-body">
|
|
22
|
-
<h2>Customized Yarnspinner interpreter and dialog runner</h2>
|
|
23
|
-
|
|
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>.
|
|
28
|
-
|
|
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}
|
|
40
|
-
</Card>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type EntryProps } from "./EntryProps";
|
|
2
|
-
interface Props {
|
|
3
|
-
props: EntryProps;
|
|
4
|
-
}
|
|
5
|
-
declare const CustomizedYarnspinner: import("svelte").Component<Props, {}, "">;
|
|
6
|
-
type CustomizedYarnspinner = ReturnType<typeof CustomizedYarnspinner>;
|
|
7
|
-
export default CustomizedYarnspinner;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { SeaweedTemplateData } from "../SeaweedTemplateData";
|
|
2
|
-
export declare enum DefaultHeader {
|
|
3
|
-
Games = "Games",
|
|
4
|
-
Projects = "Projects"
|
|
5
|
-
}
|
|
6
|
-
export interface EntryProps {
|
|
7
|
-
email: string;
|
|
8
|
-
letChaos: boolean;
|
|
9
|
-
linkedinSlug: string;
|
|
10
|
-
name: string;
|
|
11
|
-
seaweedTemplateData: SeaweedTemplateData;
|
|
12
|
-
}
|
|
13
|
-
export interface GroupedEntry {
|
|
14
|
-
header: string;
|
|
15
|
-
entryList: EntryProps[];
|
|
16
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
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();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<Card>
|
|
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>
|
|
61
|
-
</section>
|
|
62
|
-
</section>
|
|
63
|
-
{/snippet}
|
|
64
|
-
</Card>
|
|
@@ -1,57 +0,0 @@
|
|
|
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();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<Card>
|
|
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>
|
|
54
|
-
</section>
|
|
55
|
-
</section>
|
|
56
|
-
{/snippet}
|
|
57
|
-
</Card>
|
|
@@ -1,54 +0,0 @@
|
|
|
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();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<Card>
|
|
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">
|
|
22
|
-
|
|
23
|
-
<h1>Soulwork</h1>
|
|
24
|
-
|
|
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>
|
|
35
|
-
|
|
36
|
-
|
|
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>
|
|
51
|
-
</section>
|
|
52
|
-
</section>
|
|
53
|
-
{/snippet}
|
|
54
|
-
</Card>
|
|
@@ -1,55 +0,0 @@
|
|
|
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 ThisWebsiteFootage from "../../../assets/others/seaweed-showcase.mp4";
|
|
6
|
-
import { Chip } from "../../../components/index";
|
|
7
|
-
|
|
8
|
-
// noinspection JSUnusedGlobalSymbols
|
|
9
|
-
interface Props {
|
|
10
|
-
props: EntryProps;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let { props }: Props = $props();
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<Card>
|
|
17
|
-
{#snippet content()}
|
|
18
|
-
<section class="project-card" >
|
|
19
|
-
|
|
20
|
-
<video playsinline autoplay muted loop preload="none">
|
|
21
|
-
<source src={ThisWebsiteFootage} type="video/mp4">
|
|
22
|
-
video unavailable. original video contains clips of this website being resized and light-dark mode being
|
|
23
|
-
toggled.
|
|
24
|
-
</video>
|
|
25
|
-
<div class="project-card-body">
|
|
26
|
-
<h2>This webpage!</h2>
|
|
27
|
-
|
|
28
|
-
<p>
|
|
29
|
-
The webpage is made with two parts. The webpage that has the content for everything here, I've lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.
|
|
30
|
-
</p>
|
|
31
|
-
<p>The webpage can dynamically emphasize terms, rearrange the layout, use different terms, and save all these configurations as a shortened link. Additionally fetches the latest blog entries from turnipxenon.com via REST calls.</p>
|
|
32
|
-
|
|
33
|
-
<p>
|
|
34
|
-
<Chip>Svelte</Chip>
|
|
35
|
-
<Chip>Skeleton (Svelte UI library)</Chip>
|
|
36
|
-
<Chip>Typescript</Chip>
|
|
37
|
-
<Chip>Vercel</Chip>
|
|
38
|
-
<Chip>YarnSpinner</Chip>
|
|
39
|
-
<Chip>Postgres (SQL database)</Chip>
|
|
40
|
-
<Chip>Prisma ORM</Chip>
|
|
41
|
-
<Chip>RESTful API</Chip>
|
|
42
|
-
</p>
|
|
43
|
-
|
|
44
|
-
<section class="game-link-section">
|
|
45
|
-
<button type="button" class="btn preset-filled-primary-500 turnip-button"
|
|
46
|
-
role="link"
|
|
47
|
-
title="https://github.com/TurnipXenon/pineapple"
|
|
48
|
-
onclick={() => window.open("https://github.com/TurnipXenon/pineapple")}>
|
|
49
|
-
<img src={GithubIcon} class="long-btn-image" alt="github icon">
|
|
50
|
-
</button>
|
|
51
|
-
</section>
|
|
52
|
-
</div>
|
|
53
|
-
</section>
|
|
54
|
-
{/snippet}
|
|
55
|
-
</Card>
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import SocialSection from "../../../ui/components/SocialSection.svelte";
|
|
3
|
-
import Card from "../../../components/Card.svelte";
|
|
4
|
-
import ElementVisibilityDetector from "../../../ui/elements/ElementVisibilityDetector.svelte";
|
|
5
|
-
import type { EntryProps } from "./EntryProps";
|
|
6
|
-
|
|
7
|
-
interface Props {
|
|
8
|
-
entryProps: EntryProps;
|
|
9
|
-
isVisible: boolean;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let { entryProps, isVisible = $bindable() }: Props = $props();
|
|
13
|
-
let { email, letChaos, linkedinSlug, name } = entryProps;
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<div class="experience-and-about-div">
|
|
17
|
-
|
|
18
|
-
<div class="greater-about-div">
|
|
19
|
-
|
|
20
|
-
<Card includeDataNoSnippet={false}>
|
|
21
|
-
{#snippet content()}
|
|
22
|
-
<section class="section-card">
|
|
23
|
-
|
|
24
|
-
<h1>About</h1>
|
|
25
|
-
|
|
26
|
-
<p>
|
|
27
|
-
Hi! My name is {name}! I work as a software developer. Outside of that, I like making games, and
|
|
28
|
-
trying to do everything in between required to make one. I have some showcased below, our visit
|
|
29
|
-
my itch.io page for more of them.
|
|
30
|
-
</p>
|
|
31
|
-
<!-- todo: link the degree details idk -->
|
|
32
|
-
<p>
|
|
33
|
-
I also graduated with BS Computing Science, Specializing in Software Practice, and a
|
|
34
|
-
certificate in Computer Game Development at University of Alberta.
|
|
35
|
-
</p>
|
|
36
|
-
{#if entryProps.seaweedTemplateData.shouldAddFunNote}
|
|
37
|
-
<p>
|
|
38
|
-
I'm inspired by games like Harvest Moon: Friends of Mineral Town, Rune Factory 4, Theatrhythm,
|
|
39
|
-
Bravely Default: Flying Fairy, Boku no Natsuyasumi 2, and A Short Hike.
|
|
40
|
-
</p>
|
|
41
|
-
{/if}
|
|
42
|
-
|
|
43
|
-
<!-- todo: maybe put cute stuff here -->
|
|
44
|
-
<!-- </ToggleableContent>-->
|
|
45
|
-
</section>
|
|
46
|
-
{/snippet}
|
|
47
|
-
</Card>
|
|
48
|
-
|
|
49
|
-
<Card>
|
|
50
|
-
{#snippet content()}
|
|
51
|
-
<section class="section-card">
|
|
52
|
-
<SocialSection email={email} linkedinSlug={linkedinSlug}></SocialSection>
|
|
53
|
-
<ElementVisibilityDetector bind:isVisible={isVisible}>
|
|
54
|
-
</ElementVisibilityDetector>
|
|
55
|
-
</section>
|
|
56
|
-
{/snippet}
|
|
57
|
-
</Card>
|
|
58
|
-
|
|
59
|
-
</div>
|
|
60
|
-
|
|
61
|
-
<Card>
|
|
62
|
-
{#snippet content()}
|
|
63
|
-
<section class="section-card">
|
|
64
|
-
<h1>Experience</h1>
|
|
65
|
-
|
|
66
|
-
<h2>Highlight</h2>
|
|
67
|
-
<p>I like French Fries</p>
|
|
68
|
-
|
|
69
|
-
<h2>Software Engineer</h2>
|
|
70
|
-
<div class="two-column-separated">
|
|
71
|
-
<div>July 2023 – January 2024</div>
|
|
72
|
-
<div style="text-align: end">Control, Remote</div>
|
|
73
|
-
</div>
|
|
74
|
-
<ul>
|
|
75
|
-
<li>
|
|
76
|
-
Developed things
|
|
77
|
-
</li>
|
|
78
|
-
<li>
|
|
79
|
-
Woah
|
|
80
|
-
</li>
|
|
81
|
-
</ul>
|
|
82
|
-
<br>
|
|
83
|
-
|
|
84
|
-
<h2>Software Engineer Intern</h2>
|
|
85
|
-
<div class="two-column-separated">
|
|
86
|
-
<div>May 2022 – Aug 2022</div>
|
|
87
|
-
<div style="text-align: end">Pou Company</div>
|
|
88
|
-
</div>
|
|
89
|
-
<ul>
|
|
90
|
-
<li>
|
|
91
|
-
Stuff
|
|
92
|
-
</li>
|
|
93
|
-
<li>
|
|
94
|
-
Golang
|
|
95
|
-
</li>
|
|
96
|
-
</ul>
|
|
97
|
-
<br>
|
|
98
|
-
<!-- todo: turn off flashing when accordion is expanded -->
|
|
99
|
-
<!-- todo: migrate accordion -->
|
|
100
|
-
<!-- <Accordion>-->
|
|
101
|
-
<!-- <Accordion.Item>-->
|
|
102
|
-
<!-- {#snippet summary()}-->
|
|
103
|
-
<!-- <div>-->
|
|
104
|
-
<!-- <h2 class="accordion-header">More experience</h2>-->
|
|
105
|
-
<!-- </div>-->
|
|
106
|
-
<!-- {/snippet}-->
|
|
107
|
-
<!-- {#snippet content()}-->
|
|
108
|
-
|
|
109
|
-
<!-- <section class="more-section">-->
|
|
110
|
-
<!-- <h2>Software Engineer Intern</h2>-->
|
|
111
|
-
<!-- <div class="two-column-separated">-->
|
|
112
|
-
<!-- <div>May 2021 – Dec 2021</div>-->
|
|
113
|
-
<!-- <div style="text-align: end">Testing</div>-->
|
|
114
|
-
<!-- </div>-->
|
|
115
|
-
<!-- <ul>-->
|
|
116
|
-
<!-- <li>-->
|
|
117
|
-
<!-- Amazing-->
|
|
118
|
-
<!-- </li>-->
|
|
119
|
-
<!-- </ul>-->
|
|
120
|
-
<!-- <br>-->
|
|
121
|
-
<!-- </section>-->
|
|
122
|
-
|
|
123
|
-
<!-- {/snippet}-->
|
|
124
|
-
<!-- </Accordion.Item>-->
|
|
125
|
-
<!-- </Accordion>-->
|
|
126
|
-
</section>
|
|
127
|
-
{/snippet}
|
|
128
|
-
</Card>
|
|
129
|
-
|
|
130
|
-
</div>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { EntryProps } from "./EntryProps";
|
|
2
|
-
interface Props {
|
|
3
|
-
entryProps: EntryProps;
|
|
4
|
-
isVisible: boolean;
|
|
5
|
-
}
|
|
6
|
-
declare const WorkExperience: import("svelte").Component<Props, {}, "isVisible">;
|
|
7
|
-
type WorkExperience = ReturnType<typeof WorkExperience>;
|
|
8
|
-
export default WorkExperience;
|
|
@@ -1,57 +0,0 @@
|
|
|
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 WindowSetGraph from "../../../assets/others/window-set.png";
|
|
6
|
-
|
|
7
|
-
// noinspection JSUnusedGlobalSymbols
|
|
8
|
-
interface Props {
|
|
9
|
-
props: EntryProps;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let { props }: Props = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<Card>
|
|
16
|
-
{#snippet content()}
|
|
17
|
-
<section class="project-card" >
|
|
18
|
-
<img
|
|
19
|
-
alt="A graph that visualizes the number of memory pages made by Quicksort cached within the window set as
|
|
20
|
-
time goes by. The trend appears to look like a damping harmonic motion that does not go below the zero line. More
|
|
21
|
-
details include the data size being 200000 entries, each data point skips 1060174 data points, with a
|
|
22
|
-
page size of 4096 bytes, and window size of 100000 bytes."
|
|
23
|
-
src={WindowSetGraph} />
|
|
24
|
-
<div class="project-card-body">
|
|
25
|
-
<h2>Working set simulation</h2>
|
|
26
|
-
|
|
27
|
-
<p>
|
|
28
|
-
A <span class="qt-c">C</span> program that simulates the working set model based on the output of memory
|
|
29
|
-
addresses
|
|
30
|
-
<span class="qt-valgrind">valgrind</span> detects as being accessed by a program being ran. It's
|
|
31
|
-
implemented using a nested hashmap <span class="qt-foundation">data structure</span> implemented from
|
|
32
|
-
scratch. The working set is the collection of memory pages referenced by a program within a certain time
|
|
33
|
-
frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span
|
|
34
|
-
class="qt-foundation">algorithms</span> heapsort, quicksort, and radixsort, is affected by the window set
|
|
35
|
-
size, page size, and their input size.
|
|
36
|
-
</p>
|
|
37
|
-
|
|
38
|
-
<section class="game-link-section">
|
|
39
|
-
<button type="button" class="game-button turnip-button"
|
|
40
|
-
role="link"
|
|
41
|
-
title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf"
|
|
42
|
-
onclick={() => window.open("https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf")}>
|
|
43
|
-
<img src={GithubIcon} class="long-btn-image" alt="github icon">
|
|
44
|
-
<span>Benchmark report</span>
|
|
45
|
-
</button>
|
|
46
|
-
<button type="button" class="game-button turnip-button"
|
|
47
|
-
role="link"
|
|
48
|
-
title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md"
|
|
49
|
-
onclick={() => window.open("https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md")}>
|
|
50
|
-
<img src={GithubIcon} class="long-btn-image" alt="github icon">
|
|
51
|
-
<span>Design</span>
|
|
52
|
-
</button>
|
|
53
|
-
</section>
|
|
54
|
-
</div>
|
|
55
|
-
</section>
|
|
56
|
-
{/snippet}
|
|
57
|
-
</Card>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const removeProxyWrapperOnString: (wrapped: string) => string;
|