Skip to content

Commit

Permalink
BREAKING CHANGE: restructure folder that contains events components
Browse files Browse the repository at this point in the history
made breaking renames and refactors to implement better naming
conventions for components and types
remove duplicate nested events/events dir

refactored file structure:

events
|
|-- case (contains specific occurrences of a given event)
|
|-- type (categorizes events into 2 types: Basic and Interactive)
|
|-- Card.vue, Container.vue

naming convention for case/ components is: verb + noun/thing (e.g. VotePlayer)

other refactors:
EventClientView -> EventCase
currentEventView -> currentEventCase
clientViewHandler -> eventCaseClientHandler

refs virtualcommons#764
  • Loading branch information
chrstngyn authored and chrstngyn committed Apr 18, 2022
1 parent 5f900fb commit 796dff6
Show file tree
Hide file tree
Showing 24 changed files with 639 additions and 620 deletions.
2 changes: 1 addition & 1 deletion client/src/api/tutorial/steps/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const steps: Array<Step> = [
of this round.)`,
flavorText: `Create contingencies for your contingencies and contingencies for
those contingencies. Then prepare to improvise.`,
clientViewHandler: "NO_CHANGE" as const,
eventCaseClientHandler: "NO_CHANGE" as const,
duration: 1
}
}
Expand Down
2 changes: 1 addition & 1 deletion client/src/components/game/HUDRight.vue
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ import { Vue, Component } from "vue-property-decorator";
import HUDRightButtons from "@port-of-mars/client/components/game/HUDRightButtons.vue";
import GameInformation from "./static/panels/GameInformation.vue";
import PhaseInstructions from "./static/panels/PhaseInstructions.vue";
import EventCard from "@port-of-mars/client/components/game/phases/events/EventCard.vue";
import EventCard from "@port-of-mars/client/components/game/phases/events/Card.vue";
import { Phase } from "@port-of-mars/shared/types";
import { HUDRightView } from "@port-of-mars/shared/game/client/panes";
Expand Down
4 changes: 2 additions & 2 deletions client/src/components/game/phases/Events.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@

<script lang="ts">
import { Component, Inject, Vue, Watch } from "vue-property-decorator";
import EventCard from "./events/EventCard.vue";
import EventContainer from "./events/events/EventContainer.vue";
import EventCard from "@port-of-mars/client/components/game/phases/events/Card.vue";
import EventContainer from "@port-of-mars/client/components/game/phases/events/Container.vue";
import AccomplishmentCard from "@port-of-mars/client/components/game/accomplishments/AccomplishmentCard.vue";
import { MarsEventData, Phase } from "@port-of-mars/shared/types";
import { GameRequestAPI } from "@port-of-mars/client/api/game/request";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,15 @@

<script lang="ts">
import { Component, Inject, Prop, Vue, Watch } from "vue-property-decorator";
import { EventClientView, MarsEventData, Phase } from "@port-of-mars/shared/types";
import { EventCase, MarsEventData, Phase } from "@port-of-mars/shared/types";
import { GameRequestAPI } from "@port-of-mars/client/api/game/request";
import EventModal from "@port-of-mars/client/components/game/modals/EventModal.vue";
import { isUndefined } from "lodash";
@Component({
components: { EventModal }
})
export default class EventCard extends Vue {
export default class Card extends Vue {
@Inject() readonly api!: GameRequestAPI;
@Prop({
Expand Down Expand Up @@ -117,7 +117,7 @@ export default class EventCard extends Vue {
currentEventModalId!: string;
//determining which type of events require which interactions
eventNoChangeViews: Array<EventClientView> = ["NO_CHANGE", "AUDIT", "DISABLE_CHAT"];
eventNoChangeViews: Array<EventCase> = ["NO_CHANGE", "AUDIT", "DISABLE_CHAT"];
modalIds: string[] = [];
mounted() {
Expand All @@ -142,7 +142,7 @@ export default class EventCard extends Vue {
}
get requiresInteraction() {
return !this.eventNoChangeViews.includes(this.event.clientViewHandler);
return !this.eventNoChangeViews.includes(this.event.eventCaseClientHandler);
}
async readyUp() {
Expand Down
47 changes: 47 additions & 0 deletions client/src/components/game/phases/events/Container.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<template>
<b-container class="h-100" fluid style="color: var(--light-shade)">
<b-row align-v="center" class="h-100 w-100">
<component :is="type" :case="eventCase"></component>
</b-row>
</b-container>
</template>

<script lang="ts">
import { Vue, Component, Prop } from "vue-property-decorator";
import { MarsEventData, EventCase } from "@port-of-mars/shared/types";
@Component({})
export default class Container extends Vue {
@Prop() event!: MarsEventData;
basicCases: Array<EventCase> = ["NO_CHANGE", "AUDIT", "DISABLE_CHAT"];
interactionCases: Array<EventCase> = [
// inventory
"DRAW_RESOURCE",
"SAVE_RESOURCE",
"DISCARD_ACCOMPLISHMENT",
// votes
"VOTE_YES_NO",
"VOTE_PLAYER",
"VOTE_HERO_PARIAH"
];
get eventCase() {
return this.event.eventCaseClientHandler;
}
get type(): string {
// TODO: NO_CHANGE VIEW (MAYBE)
if (this.basicCases.includes(this.eventCase)) {
return "Basic";
} else if (this.interactionCases.includes(this.eventCase)) {
return "Interaction";
}
return "";
}
}
</script>

<style lang="scss" scoped>
@import "~animate.css/source/attention_seekers/pulse.css";
</style>
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ import _ from "lodash";
AccomplishmentCard
}
})
export default class AccomplishmentsSelectPurchased extends Vue {
export default class DiscardAccomplishment extends Vue {
@Inject() readonly api!: GameRequestAPI;
purchasedAccomplishmentsLength: number = Object.keys(this.purchasedAccomplishments).length;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ import { Role, Resource } from "@port-of-mars/shared/types";
import { GameRequestAPI } from "@port-of-mars/client/api/game/request";
@Component({})
export default class InfluencesDraw extends Vue {
export default class DrawResource extends Vue {
drawnInfluence: string = "None Selected";
@Inject() api!: GameRequestAPI;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ import TimeBlockMeter from "@port-of-mars/client/components/game/phases/investme
InvestmentCard
}
})
export default class InfluencesSelect extends Vue {
export default class SaveResource extends Vue {
@Inject() readonly api!: GameRequestAPI;
icon = {
center: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ import { Role, ROLES } from "@port-of-mars/shared/types";
import { GameRequestAPI } from "@port-of-mars/client/api/game/request";
@Component({})
export default class VoteForPlayerHeroPariah extends Vue {
export default class VoteHeroPariah extends Vue {
@Inject() api!: GameRequestAPI;
voteHeroOrPariah: "hero" | "pariah" | "" = "";
role: Role | "" = "";
Expand Down
68 changes: 68 additions & 0 deletions client/src/components/game/phases/events/case/VotePlayer.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<template>
<div class="event-vote-for-player-single">
<p class="selected-player-title">Selected Player</p>
<div class="player-frame-container">
<div
v-for="member in members"
class="player-frame"
v-bind:class="{ 'selected-background': member === selectedPlayer }"
:key="member + 1"
>
<img
@click="handleSelectPlayer(member)"
:src="require(`@port-of-mars/client/assets/characters/${member}.png`)"
alt="Player"
/>
</div>
</div>
<p
:style="selectedPlayer === 'None Selected' ? 'color: var(--light-shade-25)' : ''"
class="selected-player-text"
>
{{ selectedPlayer }}
</p>
<button
type="button"
name="Submit Button"
:disabled="selectedPlayer === null"
@click="submitSelectedPlayer"
>
Done
</button>
</div>
</template>

<script lang="ts">
import { Vue, Component, Inject } from "vue-property-decorator";
import { Role, ROLES } from "@port-of-mars/shared/types";
import { GameRequestAPI } from "@port-of-mars/client/api/game/request";
import _ from "lodash";
@Component({})
export default class VotePlayer extends Vue {
selectedPlayer: Role | null = null;
@Inject()
api!: GameRequestAPI;
get members(): Array<Role> {
return ROLES;
}
handleSelectPlayer(member: Role): void {
this.selectedPlayer = member;
console.log("MEMBER: ", this.selectedPlayer);
}
submitSelectedPlayer(): void {
if (!_.isNull(this.selectedPlayer)) {
console.log("SUBMIT MEMBER: ", this.selectedPlayer);
this.api.voteForPhilanthropist(this.selectedPlayer);
}
}
}
</script>

<style lang="scss" scoped>
@import "@port-of-mars/client/stylesheets/game/phases/events/events/views/VoteForPlayerSingle.scss";
</style>

This file was deleted.

59 changes: 0 additions & 59 deletions client/src/components/game/phases/events/events/EventContainer.vue

This file was deleted.

This file was deleted.

49 changes: 0 additions & 49 deletions client/src/components/game/phases/events/events/EventNoChange.vue

This file was deleted.

Loading

0 comments on commit 796dff6

Please sign in to comment.