Removed social resource and added make bed action

plus some stuff I forgot to add in the last commit
This commit is contained in:
thepaperpilot 2021-08-26 22:24:56 -05:00
parent f516a3a092
commit fdfccefb67
6 changed files with 61 additions and 24 deletions

View file

@ -16,7 +16,7 @@
<svg class="stage" width="100%" height="100%"> <svg class="stage" width="100%" height="100%">
<g id="g1"> <g id="g1">
<transition-group name="link" appear> <transition-group name="link" appear>
<g v-for="(link, index) in board.links || []" :key="index"> <g v-for="link in board.links || []" :key="link">
<BoardLink :link="link" /> <BoardLink :link="link" />
</g> </g>
</transition-group> </transition-group>

View file

@ -229,7 +229,22 @@ export default defineComponent({
return this.board.selectedAction; return this.board.selectedAction;
}, },
actions(): BoardNodeAction[] | null | undefined { actions(): BoardNodeAction[] | null | undefined {
return getNodeTypeProperty(this.nodeType, this.node, "actions"); const actions = getNodeTypeProperty(this.nodeType, this.node, "actions") as
| BoardNodeAction[]
| null
| undefined;
if (actions) {
return actions.filter(action => {
if (action.enabled == null) {
return true;
}
if (typeof action.enabled === "function") {
return action.enabled();
}
return action.enabled;
});
}
return null;
}, },
draggable(): boolean { draggable(): boolean {
return getNodeTypeProperty(this.nodeType, this.node, "draggable"); return getNodeTypeProperty(this.nodeType, this.node, "draggable");
@ -363,17 +378,17 @@ export default defineComponent({
transform: rotate(-90deg); transform: rotate(-90deg);
} }
.action:hover circle, .action:not(.boardnode):hover circle,
.action.selected circle { .action:not(.boardnode).selected circle {
r: 25; r: 25;
} }
.action:hover text, .action:not(.boardnode):hover text,
.action.selected text { .action:not(.boardnode).selected text {
font-size: 187.5%; /* 150% * 1.25 */ font-size: 187.5%; /* 150% * 1.25 */
} }
.action text { .action:not(.boardnode) text {
text-anchor: middle; text-anchor: middle;
dominant-baseline: central; dominant-baseline: central;
} }

View file

@ -1,6 +1,7 @@
<template> <template>
<div v-if="devSpeed === 0">Game Paused</div> <div v-if="devSpeed === 0">Game Paused</div>
<div v-else-if="devSpeed && devSpeed !== 1">Dev Speed: {{ formattedDevSpeed }}x</div> <div v-else-if="devSpeed && devSpeed !== 1">Dev Speed: {{ formattedDevSpeed }}x</div>
<div>Day {{ day }}</div>
<Board id="main" /> <Board id="main" />
<Modal :show="showModal" @close="closeModal"> <Modal :show="showModal" @close="closeModal">
<template v-slot:header v-if="title"> <template v-slot:header v-if="title">
@ -70,7 +71,9 @@ export default defineComponent(function Main() {
const devSpeed = computed(() => player.devSpeed); const devSpeed = computed(() => player.devSpeed);
const formattedDevSpeed = computed(() => player.devSpeed && format(player.devSpeed)); const formattedDevSpeed = computed(() => player.devSpeed && format(player.devSpeed));
return { title, body, footer, showModal, closeModal, devSpeed, formattedDevSpeed }; const day = computed(() => player.day);
return { title, body, footer, showModal, closeModal, devSpeed, formattedDevSpeed, day };
}); });
</script> </script>
@ -82,4 +85,8 @@ export default defineComponent(function Main() {
.entry:not(:last-child) { .entry:not(:last-child) {
border-bottom: solid 4px var(--separator); border-bottom: solid 4px var(--separator);
} }
.boardnode.action .progressDiamond {
transition-duration: 0s;
}
</style> </style>

View file

@ -60,11 +60,9 @@ type Resource = {
const resources = { const resources = {
time: createResource("time", "#3EB489", 24 * 60 * 60, 24 * 60 * 60, [ time: createResource("time", "#3EB489", 24 * 60 * 60, 24 * 60 * 60, [
{ resource: "social", amount: 1 / (60 * 60), linkType: LinkType.LossOnly },
{ resource: "mental", amount: 1 / (120 * 60), linkType: LinkType.LossOnly } { resource: "mental", amount: 1 / (120 * 60), linkType: LinkType.LossOnly }
]), ]),
energy: createResource("energy", "#FFA500", 100, 100), energy: createResource("energy", "#FFA500", 100, 100),
social: createResource("social", "#800080", 100, 100),
mental: createResource("mental", "#32CD32", 100, 100), mental: createResource("mental", "#32CD32", 100, 100),
focus: createResource("focus", "#0000FF", 100, 0) focus: createResource("focus", "#0000FF", 100, 0)
} as Record<string, Resource>; } as Record<string, Resource>;
@ -159,6 +157,7 @@ type Action = {
amount: DecimalSource; amount: DecimalSource;
assign?: boolean; assign?: boolean;
}>; }>;
enabled?: boolean | (() => boolean);
}; };
const actions = { const actions = {
@ -190,7 +189,7 @@ const actions = {
] ]
}, },
sleep: { sleep: {
icon: "bed", icon: "mode_night",
tooltip: "Sleep", tooltip: "Sleep",
events: [ events: [
{ {
@ -309,6 +308,28 @@ const actions = {
{ resource: "energy", amount: 30 }, { resource: "energy", amount: 30 },
{ resource: "mental", amount: -5 } { resource: "mental", amount: -5 }
] ]
},
makeBed: {
icon: "king_bed",
tooltip: "Make Bed",
enabled: () =>
Decimal.lt(player.lastDayBedMade as DecimalSource, player.day as DecimalSource),
events: [
{
event: () => {
player.lastDayBedMade = player.day;
return {
description: `It's a small thing, but you feel better after making your bed`
};
},
weight: 1
}
],
baseChanges: [
{ resource: "time", amount: -10 * 60 },
{ resource: "energy", amount: -5 },
{ resource: "mental", amount: 5 }
]
} }
} as Record<string, Action>; } as Record<string, Action>;
@ -352,7 +373,7 @@ const actionNodes = {
display: "Web" display: "Web"
}, },
bed: { bed: {
actions: ["sleep", "rest"], actions: ["sleep", "rest", "makeBed"],
display: "Bed" display: "Bed"
} }
} as Record<string, ActionNode>; } as Record<string, ActionNode>;
@ -618,7 +639,8 @@ const actionNodeType = {
} as BoardNodeLink; } as BoardNodeLink;
}) })
]; ];
} },
enabled: action.enabled
} as BoardNodeAction; } as BoardNodeAction;
}) })
]; ];
@ -720,14 +742,6 @@ export default {
amount: new Decimal(100) amount: new Decimal(100)
} as ResourceNodeData } as ResourceNodeData
}, },
{
position: { x: 150, y: 0 },
type: "resource",
data: {
resourceType: "social",
amount: new Decimal(100)
} as ResourceNodeData
},
{ {
position: { x: -150, y: 0 }, position: { x: -150, y: 0 },
type: "resource", type: "resource",

View file

@ -1,7 +1,6 @@
import { RawLayer } from "@/typings/layer"; import { RawLayer } from "@/typings/layer";
import { PlayerData } from "@/typings/player"; import { PlayerData } from "@/typings/player";
import Decimal from "@/util/bignum"; import Decimal from "@/util/bignum";
import { hardReset } from "@/util/save";
import { computed } from "vue"; import { computed } from "vue";
import main from "./layers/main"; import main from "./layers/main";
@ -12,7 +11,9 @@ export const getInitialLayers = (
export function getStartingData(): Record<string, unknown> { export function getStartingData(): Record<string, unknown> {
return { return {
points: new Decimal(10) points: new Decimal(10),
day: new Decimal(1),
lastDayBedMade: new Decimal(0)
}; };
} }

View file

@ -1,7 +1,7 @@
import { Themes } from "@/data/themes"; import { Themes } from "@/data/themes";
import { DecimalSource } from "@/lib/break_eternity"; import { DecimalSource } from "@/lib/break_eternity";
import Decimal from "@/util/bignum"; import Decimal from "@/util/bignum";
import { BoardData, BoardNode } from "./features/board"; import { BoardData } from "./features/board";
import { MilestoneDisplay } from "./features/milestone"; import { MilestoneDisplay } from "./features/milestone";
import { State } from "./state"; import { State } from "./state";