Browse Source

游戏加速优化逻辑

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

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

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

11
src/views/point/point.vue

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

Loading…
Cancel
Save