Browse Source

游戏加速优化逻辑

许孟阳 3 weeks ago
parent
commit
8008152e21
  1. 46
      src/views/backpack/equip-menu/reforge.vue
  2. 58
      src/views/backpack/equip-menu/strengthen.vue
  3. 11
      src/views/point/point.vue

46
src/views/backpack/equip-menu/reforge.vue

@ -1,5 +1,8 @@ @@ -1,5 +1,8 @@
<template>
<div class="equip-dialog" v-if="equip">
<div class="coins">
{{ t('coins.0') }}:{{ useCoins }}
</div>
<Tooltip :infos="[rt('desc.1'), rt('desc.2'), rt('desc.3'), rt('desc.4')]" width="8rem">
<div class="descript">- {{ rt('desc.0') }} -</div>
</Tooltip>
@ -10,7 +13,7 @@ @@ -10,7 +13,7 @@
{{ equip.strengthenLv ? '(+' + equip.strengthenLv + ')' : '' }}
</div>
</div>
<div @mouseover="reforgeFlag = true" @mouseleave="reforgeFlag = false; reforgeing = false;" @click="reforge">
<div @mouseover="reforgeFlag = true" @mouseleave="reforgeFlag = false; reforgeing = false;" @click="reforge()">
<div class="extraEntry" v-if="!reforgeFlag || reforgeing">
<div v-if="tempEntry" class="extraEntry-item" v-for="(v, k) in tempEntry" :key="k">
<button class="button">
@ -109,12 +112,31 @@ watch(() => prop.equip, (n) => { @@ -109,12 +112,31 @@ watch(() => prop.equip, (n) => {
tempEntry.value = null;
})
const reforge = () => {
const reforge = (times?) => {
times = times || 1;
const need = Math.ceil(reforgeNeed.value * (auto.value ? 1.5 : 1));
if (useCoins.value < need) {
if (useCoins.value < need * times) {
commit("set_sys_info", { msg: t('stNoCoins'), type: "warning", });
return
}
let i = 0;
let entrys = tempEntry.value || prop.equip.extraEntry;
for (; i < times; i++) {
if (!check(entrys)) {
auto.value = false;
break;
}
entrys = randomEntry();
}
commit("add_player_coins", -1 * need * i);
tempId.value = prop.equip.id;
tempEntry.value = entrys;
reforgeing.value = true;
auto.value && setTimeout(() => reforge(times), 200);
}
const randomEntry = () => {
const equip = prop.equip;
const quality = equip.quality.quality;
const extraQuality = equip.quality.extraQuality;
@ -125,12 +147,7 @@ const reforge = () => { @@ -125,12 +147,7 @@ const reforge = () => {
const entry = config[key](quality, equip.lv, extraQuality);
extraEntry.push(entry);
}
commit("add_player_coins", -1 * need);
tempId.value = equip.id;
tempEntry.value = extraEntry;
reforgeing.value = true;
check();
auto.value && setTimeout(reforge, 200 / state.speed);
return extraEntry;
}
const saveOld = () => {
@ -144,22 +161,19 @@ const saveNew = () => { @@ -144,22 +161,19 @@ const saveNew = () => {
tempEntry.value = null;
}
const check = () => {
debugger
if (!auto.value || !tempEntry.value) return;
const check = (entrys) => {
if (!auto.value) return true;
let cout = 0;
const entrys = tempEntry.value || prop.equip.extraEntry;
entrys.forEach(entry => {
if (entry.type == autoAttr.value) {
cout++;
}
})
auto.value = cout < autoNum.value;
return cout < autoNum.value;
}
const startAuto = () => {
auto.value = true;
check();
auto.value && reforge();
reforge(state.speed);
}
const stopAuto = () => {
auto.value = false;

58
src/views/backpack/equip-menu/strengthen.vue

@ -32,12 +32,12 @@ @@ -32,12 +32,12 @@
</div>
<div class="btn-group" v-if='!auto'>
<p>{{ t('stren.0') }}<span :class="{ 'red': useCoins < needCoins }">{{ needCoins }}</span></p>
<button class="button" @click="strengthen(false)">{{ t('stren.1') }}+{{ parseInt(equip.strengthenLv) + 1
<button class="button" @click="strengthen()">{{ t('stren.1') }}+{{ parseInt(equip.strengthenLv) + 1
}}</button>
</div>
<div class="btn-group" v-if='!auto'>
<p>{{ t('stren.0') }}<span :class="{ 'red': useCoins < needCoins }">{{ needCoins }}</span></p>
<button class="button" @click="strengthen(true)">{{ t('stren.2') }}</button>
<button class="button" @click="strengthenTest">{{ t('stren.2') }}</button>
<span v-if="testFlag">{{ equip.strengthenLv }}<span class="arror"></span>{{ testResult }}</span>
</div>
<div class="btn-group" v-if='!auto'>
@ -58,9 +58,8 @@ import { reactive, onMounted, ref, computed, watch } from "vue"; @@ -58,9 +58,8 @@ import { reactive, onMounted, ref, computed, watch } from "vue";
import { useI18n } from "vue3-i18n";
import { Tooltip, EquipIcon } from "@/components"
import { strengthenValue, strengthenCoins, replace } from "@/tool"
import { extra_entry_num, weaponExtraEntry, armorExtraEntry, neckExtraEntry, ringExtraEntry, strengthen_rates, jewelryExtraEntry, pantsExtraEntry, shoesExtraEntry, bracersExtraEntry, Entry } from "@/config";
import { strengthen_rates } from "@/config";
import { createt } from "@/config/i18n";
import Reforge from "./reforge.vue";
const mt = createt('backpack.');
const { t } = useI18n();
@ -84,37 +83,56 @@ const needCoins = computed(() => { @@ -84,37 +83,56 @@ const needCoins = computed(() => {
return strengthenCoins(prop.equip.lv, prop.equip.strengthenLv, prop.equip.quality.quality);
})
const strengthen = (test?) => {
const strengthen = (times?) => {
times = times || 1;
if (!checkCoins(times)) {
return;
}
testFlag.value = false;
let lv = prop.equip.strengthenLv;
let i = 0;
for (; i < times; i++) {
if (auto.value && prop.equip.strengthenLv >= autoLv.value) {
auto.value = false;
commit("set_sys_info", { msg: t('strengthenFinish'), type: "win", });
break;
}
lv += callResult(lv);
}
prop.equip.strengthenLv = lv;
dispatch('saveGame');
commit("add_player_coins", -1 * needCoins.value * i);
auto.value && setTimeout(() => strengthen(times), 200);
};
const strengthenTest = () => {
if (!checkCoins(1)) {
return;
}
if (useCoins.value < needCoins.value) {
const result = callResult(prop.equip.strengthenLv);
testResult.value = prop.equip.strengthenLv + result;
testFlag.value = true;
}
const checkCoins = (times) => {
if (useCoins.value < needCoins.value * times) {
auto.value = false;
commit("set_sys_info", { msg: t('stNoCoins'), type: "warning", });
return
return false;
}
return true;
}
const lv = prop.equip.strengthenLv;
const callResult = (lv) => {
const len = strengthen_rates.length;
const rate = lv < len ? strengthen_rates[lv] : strengthen_rates[len - 1];
const result = Math.random() < rate ? 1 : -1;
if (test) {
testFlag.value = true;
testResult.value = prop.equip.strengthenLv + result;
} else {
testFlag.value = false;
prop.equip.strengthenLv += result;
dispatch('saveGame');
return result;
}
commit("add_player_coins", -1 * needCoins.value);
auto.value && setTimeout(strengthen, 200 / state.speed);
};
const startAuto = () => {
auto.value = true;
strengthen();
strengthen(state.speed);
};
const stopAuto = () => {
auto.value = false;

11
src/views/point/point.vue

@ -113,17 +113,18 @@ const changeAttribute = () => { @@ -113,17 +113,18 @@ const changeAttribute = () => {
const point = rp.has;
const oldPoint = rp[curAttr];
let num = 0;
if (curNum > 0 && point > 0) {
num = point - curNum < 0 ? point : curNum;
} else if (curNum < 0 && oldPoint > 0) {
num = oldPoint + curNum < 0 ? oldPoint * -1 : curNum;
let tmp = curNum * state.speed;
if (tmp > 0 && point > 0) {
num = point - tmp < 0 ? point : tmp;
} else if (tmp < 0 && oldPoint > 0) {
num = oldPoint + tmp < 0 ? oldPoint * -1 : tmp;
}
if (num != 0) {
rp[curAttr] = oldPoint + num;
rp.has = point - num;
commit('set_points', rp)
}
setTimeout(changeAttribute, 200 / state.speed);
setTimeout(changeAttribute, 200);
}
}

Loading…
Cancel
Save