Skip to content

Commit

Permalink
Merge pull request #1442 from ebkr/develop
Browse files Browse the repository at this point in the history
3.1.50
  • Loading branch information
ebkr authored Sep 14, 2024
2 parents f91c88b + 59ee266 commit c4e44b0
Show file tree
Hide file tree
Showing 66 changed files with 1,973 additions and 1,104 deletions.
43 changes: 32 additions & 11 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,37 @@
### 3.1.50
#### Games added
- Risk of Rain Returns
- Hades II
- Among Us
- Ale & Tale Tavern
- Screw Drivers
- Nine Sols
- Goodbye Volcano High
- Gloomwood
- Below the Stone
- Back to the Dawn
- Supermarket Together
- Betrayal Beach
- Arcus Chroma
- Deep Rock Galactic: Survivor

#### Other changes
- Mods included in profile imports can now be seen before importing the profile.
- Improved visual appearance of modals

### 3.1.49
#### Games added
- Gladio Mori
- Slipstream: Rogue Space
- Panicore
- Magicraft
- Another Crab's Treasure
- Bopl Battle
- Vertigo 2
- Against the Storm
- Lycans
- Castle Story
- Balatro
- Gladio Mori
- Slipstream: Rogue Space
- Panicore
- Magicraft
- Another Crab's Treasure
- Bopl Battle
- Vertigo 2
- Against the Storm
- Lycans
- Castle Story
- Balatro

#### General fixes
- Better online mod filtering
Expand Down
7 changes: 0 additions & 7 deletions docs/Adding a game.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,6 @@
- EG: RoR2, NASB, TABS, etc.
- Pattern is lowercase although likely isn't necessary.

### Update SettingsDexieStore
You'll find a line similar to:
```ts
this.version(33).stores(store);
```
Bump this by one each time a game is added to GameManager.

### Creating new installation rules
- See all files under `/src/r2mm/installing/default_installation_rules/`
- `game_rules` stores all game specific rules.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "r2modman",
"version": "3.1.49",
"version": "3.1.50",
"description": "A simple and easy to use mod manager for several games using Thunderstore.",
"productName": "r2modman",
"author": "ebkr",
Expand Down
3 changes: 3 additions & 0 deletions src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ import LinkProvider from './providers/components/LinkProvider';
import LinkImpl from './r2mm/component_override/LinkImpl';
import FsProvider from './providers/generic/file/FsProvider';
import NodeFs from './providers/generic/file/NodeFs';
import { DataFolderProvider } from './providers/ror2/system/DataFolderProvider';
import { DataFolderProviderImpl } from './r2mm/system/DataFolderProviderImpl';
import InteractionProvider from './providers/ror2/system/InteractionProvider';
import InteractionProviderImpl from './r2mm/system/InteractionProviderImpl';
import ZipProvider from './providers/generic/zip/ZipProvider';
Expand Down Expand Up @@ -117,6 +119,7 @@ export default class App extends mixins(UtilityMixin) {
LoggerProvider.provide(() => new Logger());
LinkProvider.provide(() => new LinkImpl());
InteractionProvider.provide(() => new InteractionProviderImpl());
DataFolderProvider.provide(() => new DataFolderProviderImpl());
PlatformInterceptorProvider.provide(() => new PlatformInterceptorImpl());
Expand Down
2 changes: 1 addition & 1 deletion src/_managerinf/ManagerInformation.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import VersionNumber from '../model/VersionNumber';

export default class ManagerInformation {
public static VERSION: VersionNumber = new VersionNumber('3.1.49');
public static VERSION: VersionNumber = new VersionNumber('3.1.50');
public static IS_PORTABLE: boolean = false;
public static APP_NAME: string = "r2modman";
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/AmongUs.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/ArcusChroma.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/Gloomwood.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/Hades2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/NineSols.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/ScrewDrivers.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 10 additions & 6 deletions src/components/ModalCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@
<header class="modal-card-head">
<slot name="header"/>
</header>
<section class="modal-card-body">
<slot name="body"/>
</section>
<footer class="modal-card-foot">
<slot name="footer"/>
</footer>
<template v-if="!!$slots.body">
<section class="modal-card-body">
<slot name="body"/>
</section>
</template>
<template v-if="!!$slots.footer">
<footer class="modal-card-foot">
<slot name="footer"/>
</footer>
</template>
</div>
<button v-if="canClose" class="modal-close is-large" aria-label="close" @click="closeModal()"/>
</div>
Expand Down
17 changes: 9 additions & 8 deletions src/components/importing/LocalFileImportModal.vue
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<template>
<div>
<Modal :show-close="true" @close-modal="emitClose" :open="visible">
<template slot="title">
<p class='card-header-title'>Import mod from file</p>
<ModalCard :can-close="true" @close-modal="emitClose" :is-active="visible">
<template v-slot:header>
<h2 class='modal-title'>Import mod from file</h2>
</template>
<template slot="footer" v-if="fileToImport === null">
<template v-slot:footer v-if="fileToImport === null">
<button class="button is-info" @click="selectFile">Select file</button>
</template>
<template slot="footer" v-else-if="fileToImport !== null">
<template v-slot:footer v-else>
<button class="button is-info" @click="importFile">Import local mod</button>
</template>

Expand All @@ -21,7 +21,7 @@
</template>
</template>

<template slot="body" v-if="fileToImport !== null">
<template v-slot:body v-if="fileToImport !== null">
<div class="notification is-warning" v-if="validationMessage !== null">
<p>{{ validationMessage }}</p>
</div>
Expand Down Expand Up @@ -58,7 +58,7 @@
</div>
</div>
</template>
</Modal>
</ModalCard>
</div>
</template>

Expand All @@ -75,9 +75,10 @@ import R2Error from '../../model/errors/R2Error';
import Profile from '../../model/Profile';
import ProfileModList from '../../r2mm/mods/ProfileModList';
import LocalModInstallerProvider from '../../providers/ror2/installing/LocalModInstallerProvider';
import ModalCard from '../ModalCard.vue';
@Component({
components: { Modal }
components: { ModalCard, Modal }
})
export default class LocalFileImportModal extends Vue {
Expand Down
37 changes: 37 additions & 0 deletions src/components/mixins/ProfilesMixin.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<script lang='ts'>
import Vue from 'vue';
import Component from 'vue-class-component';
import sanitize from "sanitize-filename";
@Component
export default class ProfilesMixin extends Vue {
get profileList(): string[] {
return this.$store.state.profiles.profileList;
}
get activeProfileName(): string {
return this.$store.getters['profile/activeProfileName'];
}
set activeProfileName(value: string) {
this.$store.dispatch('profiles/setSelectedProfile', {profileName: value, prewarmCache: false});
}
doesProfileExist(nameToCheck: string): boolean {
if ((nameToCheck.match(new RegExp('^([a-zA-Z0-9])(\\s|[a-zA-Z0-9]|_|-|[.])*$'))) === null) {
return true;
}
const safe: string = this.makeProfileNameSafe(nameToCheck);
return (this.profileList.some(function (profile: string) {
return profile.toLowerCase() === safe.toLowerCase()
}));
}
makeProfileNameSafe(nameToSanitize: string): string {
return sanitize(nameToSanitize);
}
}
</script>
11 changes: 6 additions & 5 deletions src/components/modals/CategoryFilterModal.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<modal v-show="isOpen" :open="isOpen" :show-close="false">
<template v-slot:title>
<p class="card-header-title">Filter mod categories</p>
<ModalCard v-show="isOpen" :is-active="isOpen" :can-close="false">
<template v-slot:header>
<h2 class="modal-title">Filter mod categories</h2>
</template>
<template v-slot:body>
<div>
Expand Down Expand Up @@ -58,17 +58,18 @@
Apply filters
</button>
</template>
</modal>
</ModalCard>
</template>

<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import { Modal } from '../../components/all';
import CategorySelectorModal from '../../components/modals/CategorySelectorModal.vue';
import ModalCard from '../../components/ModalCard.vue';
@Component({
components: { CategorySelectorModal, Modal }
components: { ModalCard, CategorySelectorModal, Modal }
})
export default class CategoryFilterModal extends Vue {
get allowNsfw(): boolean {
Expand Down
74 changes: 74 additions & 0 deletions src/components/profiles-modals/CreateProfileModal.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<script lang="ts">
import { Component } from 'vue-property-decorator';
import { ModalCard } from "../all";
import R2Error from "../../model/errors/R2Error";
import ProfilesMixin from "../../components/mixins/ProfilesMixin.vue";
@Component({
components: {ModalCard}
})
export default class CreateProfileModal extends ProfilesMixin {
private newProfileName = '';
get isOpen(): boolean {
return this.$store.state.modals.isCreateProfileModalOpen;
}
closeModal() {
this.newProfileName = '';
this.$store.commit('closeCreateProfileModal');
}
// User confirmed creation of a new profile with a name that didn't exist before.
async createProfile() {
const safeName = this.makeProfileNameSafe(this.newProfileName);
if (safeName !== '') {
try {
await this.$store.dispatch('profiles/addProfile', safeName);
this.closeModal();
} catch (e) {
const err = R2Error.fromThrownValue(e, 'Error whilst creating a profile');
this.$store.commit('error/handleError', err);
}
}
}
}
</script>
<template>
<ModalCard v-if="isOpen" :is-active="isOpen" @close-modal="closeModal">

<template v-slot:header>
<h2 class="modal-title">Create a profile</h2>
</template>

<template v-slot:body>
<p>This profile will store its own mods independently from other profiles.</p>
<br/>
<input
class="input"
v-model="newProfileName"
@keyup.enter="!doesProfileExist(newProfileName) && createProfile(newProfileName)"
id="create-profile-modal-new-profile-name"
ref="nameInput"
/>
<br/><br/>
<span class="tag is-dark" v-if="newProfileName === '' || makeProfileNameSafe(newProfileName) === ''">
Profile name required
</span>
<span class="tag is-success" v-else-if="!doesProfileExist(newProfileName)">
"{{makeProfileNameSafe(newProfileName)}}" is available
</span>
<span class="tag is-danger" v-else-if="doesProfileExist(newProfileName)">
"{{makeProfileNameSafe(newProfileName)}}" is either already in use, or contains invalid characters
</span>
</template>

<template v-slot:footer>
<button id="modal-create-profile-invalid" class="button is-danger" v-if="doesProfileExist(newProfileName)" disabled>Create</button>
<button id="modal-create-profile" class="button is-info" @click="createProfile(newProfileName)" v-else>Create</button>
</template>

</ModalCard>
</template>
11 changes: 4 additions & 7 deletions src/components/profiles-modals/DeleteProfileModal.vue
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
import { Component } from 'vue-property-decorator';
import { ModalCard } from "../all";
import R2Error from "../../model/errors/R2Error";
import ProfilesMixin from "../../components/mixins/ProfilesMixin.vue";
@Component({
components: {ModalCard}
})
export default class DeleteProfileModal extends Vue {
export default class DeleteProfileModal extends ProfilesMixin {
get isOpen(): boolean {
return this.$store.state.modals.isDeleteProfileModalOpen;
}
get profileList(): string[] {
return this.$store.state.profiles.profileList;
}
closeDeleteProfileModal() {
this.$store.commit('closeDeleteProfileModal');
}
Expand All @@ -35,7 +32,7 @@ export default class DeleteProfileModal extends Vue {
<ModalCard v-if="isOpen" :is-active="isOpen" @close-modal="closeDeleteProfileModal">

<template v-slot:header>
<p class="modal-card-title">Delete profile</p>
<h2 class="modal-title">Delete profile</h2>
</template>
<template v-slot:body>
<p>This will remove all mods, and their config files, installed within this profile.</p>
Expand Down
Loading

0 comments on commit c4e44b0

Please sign in to comment.