|
32 | 32 | :players="players" :aoa="addOfflineAccount"
|
33 | 33 | :account="account"></player-list>
|
34 | 34 | <version-list v-else-if="ui === 'versionList'" :cur-ver="curVer"
|
35 |
| - @install="installVersion" |
36 |
| - @close="changeUI('main')" |
| 35 | + @install="installVersion" @install-func="installFunc" |
| 36 | + @close="changeUI('main')" :game-dir="gameDir" |
37 | 37 | :init="init"></version-list>
|
38 | 38 | <text-input v-else-if="ui === 'input'" @finish="input.resolveFunc" @close="goBack" :title="input.title"
|
39 | 39 | :desc="input.desc" :placeholder="input.placeholder"></text-input>
|
|
290 | 290 | {{ ver }}
|
291 | 291 | </div>
|
292 | 292 | <div class="float-right">
|
293 |
| - <button class="btn btn-sm btn-danger" @click="deleteVersion(ver)"> |
294 |
| - <i class="fa fa-trash"></i> |
295 |
| - </button> |
| 293 | + <div class="btn-group btn-group-sm" v-if="false"> |
| 294 | + <button class="btn btn-info" @click="$emit('installFunc', 'forge', ver)"> |
| 295 | + <i class="fa fa-cloud-download"></i> |
| 296 | + Forge |
| 297 | + </button> |
| 298 | + <button class="btn btn-info" @click="$emit('installFunc', 'fabric', ver)"> |
| 299 | + <i class="fa fa-cloud-download"></i> |
| 300 | + Fabric |
| 301 | + </button> |
| 302 | + <button class="btn btn-info" @click="$emit('installFunc', 'optifine', ver)"> |
| 303 | + <i class="fa fa-cloud-download"></i> |
| 304 | + OptiFine |
| 305 | + </button> |
| 306 | + <button class="btn btn-danger" @click="deleteVersion(ver)"> |
| 307 | + <i class="fa fa-trash"></i> |
| 308 | + </button> |
| 309 | + </div> |
296 | 310 | </div>
|
297 | 311 | </div>
|
298 | 312 | </transition-group>
|
299 | 313 | </div>
|
300 | 314 | </transition>
|
301 | 315 |
|
302 | 316 | </div>
|
| 317 | + <div class="btn-group btn-group-sm mt-2"> |
| 318 | + <button class="btn btn-secondary" @click="openFolder('')"> |
| 319 | + <i class="fa fa-folder-open"></i> |
| 320 | + {{ $t('gameFolder') }} |
| 321 | + </button> |
| 322 | + <button class="btn btn-secondary" @click="openFolder('saves')"> |
| 323 | + <i class="fa fa-folder-open"></i> |
| 324 | + {{ $t('savesFolder') }} |
| 325 | + </button> |
| 326 | + </div> |
303 | 327 | <button class="btn btn-info btn-block mt-2" @click="mode = 'install'">
|
304 | 328 | <i class="fa fa-download"></i>
|
305 | 329 | {{ $t('install') }}
|
|
349 | 373 | <script src="./vue-i18n.global.prod.js"></script>
|
350 | 374 | <script type="module">
|
351 | 375 | // TODO: Version
|
352 |
| - const VERSION = "0.2.0"; |
| 376 | + const VERSION = "0.3.0"; |
353 | 377 | const { createApp } = Vue;
|
354 | 378 | const { createI18n } = VueI18n;
|
355 | 379 | let api = null;
|
|
660 | 684 |
|
661 | 685 | // TODO: VersionList
|
662 | 686 | const VersionList = {
|
663 |
| - emits: ["close", "install"], |
| 687 | + emits: ["close", "install", "installFunc"], |
664 | 688 | props: {
|
665 | 689 | curVer: {
|
666 | 690 | type: String
|
667 | 691 | },
|
668 | 692 | init: {
|
669 | 693 | type: Function
|
| 694 | + }, |
| 695 | + gameDir: { |
| 696 | + type: String |
670 | 697 | }
|
671 | 698 | },
|
672 | 699 | components: {
|
|
744 | 771 | }
|
745 | 772 | await this.getVersions();
|
746 | 773 | }
|
| 774 | + }, |
| 775 | + async openFolder(path) { |
| 776 | + const exist = await api.open_file([this.gameDir, path]); |
| 777 | + if (!exist) { |
| 778 | + await api.makedirs([this.gameDir, path]); |
| 779 | + await api.open_file([this.gameDir, path]); |
| 780 | + } |
747 | 781 | }
|
748 | 782 | },
|
749 | 783 | async mounted() {
|
|
763 | 797 | oldAlpha: "Old Alpha",
|
764 | 798 | oldBeta: "Old Beta",
|
765 | 799 | deleteConfirm: "Are you sure to delete this version?",
|
766 |
| - deleteVersion: "Delete Version" |
| 800 | + deleteVersion: "Delete Version", |
| 801 | + gameFolder: "Game", |
| 802 | + savesFolder: "Saves", |
| 803 | + fix: "Fix" |
767 | 804 | },
|
768 | 805 | zh: {
|
769 | 806 | loading: "正在获取已安装的版本...",
|
|
777 | 814 | oldAlpha: "远古 Alpha 版",
|
778 | 815 | oldBeta: "远古 Beta 版",
|
779 | 816 | deleteConfirm: "确定要删除这个版本吗?",
|
780 |
| - deleteVersion: "删除版本" |
| 817 | + deleteVersion: "删除版本", |
| 818 | + gameFolder: "游戏", |
| 819 | + savesFolder: "地图", |
| 820 | + fix: "修复" |
781 | 821 | }
|
782 | 822 | }
|
783 | 823 | }
|
|
811 | 851 | handleCmdResult: null,
|
812 | 852 | actionAfterLaunch: null,
|
813 | 853 | downloadSource: 0,
|
| 854 | + gameDir: "", |
814 | 855 | input: {
|
815 | 856 | title: "",
|
816 | 857 | desc: "",
|
|
833 | 874 | return res;
|
834 | 875 | },
|
835 | 876 |
|
836 |
| - // TODO: installVersion |
837 | 877 | async installVersion(ver) {
|
838 |
| - this.startLoading(this.$t("install"), this.$t("installing", { ver }), (result, loading) => { |
| 878 | + await this.startLoading(this.$t("install"), this.$t("installing", { ver }), (result, loading) => { |
839 | 879 | const msg = result.replace(/\u0008/g, "").replace(/\(\d+%\)/g, "");
|
840 | 880 | console.log(msg);
|
841 | 881 | const reg = /\[(\d+)\/(\d+)\]/;
|
|
849 | 889 | }
|
850 | 890 | });
|
851 | 891 | const res = await api.cmcl_waiting(["install", ver]);
|
852 |
| - this.finishLoading(); |
| 892 | + await this.finishLoading(); |
853 | 893 | },
|
| 894 | + |
| 895 | + // TODO: Install xxx |
| 896 | + |
854 | 897 |
|
855 | 898 | async addOfflineAccount() {
|
856 | 899 | const name = await this.requestInput(
|
|
973 | 1016 | const curVer = this.curVer || this.$t("versionUnselected");
|
974 | 1017 | this.actionAfterLaunch = config.smclActionAfterLaunch;
|
975 | 1018 | this.downloadSource = config.downloadSource;
|
| 1019 | + this.gameDir = config.gameDir; |
976 | 1020 | await api.set_title(`SMCL ${VERSION} - Minecraft: ${curVer} - ${this.$t('player')}: ${playerName} - by xuanzhi33`);
|
977 | 1021 | }
|
978 | 1022 | },
|
|
0 commit comments