From a28fc52309358d3bec024210251514cace1aeeac Mon Sep 17 00:00:00 2001 From: hide_d Date: Mon, 30 Aug 2021 02:11:07 +0900 Subject: [PATCH] js2ts: join --- hwe/join.php | 2 +- hwe/js/join.js | 205 ----------------------------- hwe/select_general_from_pool.php | 2 +- hwe/ts/join.ts | 213 +++++++++++++++++++++++++++++++ webpack.config.cjs | 1 + 5 files changed, 216 insertions(+), 207 deletions(-) delete mode 100644 hwe/js/join.js create mode 100644 hwe/ts/join.ts diff --git a/hwe/join.php b/hwe/join.php index 94618e7d..5d08dabd 100644 --- a/hwe/join.php +++ b/hwe/join.php @@ -59,7 +59,7 @@ echo Json::encode((object)$charInfoText); - + diff --git a/hwe/js/join.js b/hwe/js/join.js deleted file mode 100644 index 0dff2e05..00000000 --- a/hwe/js/join.js +++ /dev/null @@ -1,205 +0,0 @@ - -jQuery(function($){ - var $leadership = $('#leadership'); - var $strength = $('#strength'); - var $intel = $('#intel'); - - function abilityRand(){ - var leadership = Math.random()*65 + 10; - var strength = Math.random()*65 + 10; - var intel = Math.random()*65 + 10; - var rate = leadership + strength + intel; - - leadership = Math.floor(leadership / rate * defaultStatTotal); - strength = Math.floor(strength / rate * defaultStatTotal); - intel = Math.floor(intel / rate * defaultStatTotal); - - - while(leadership+strength+intel < defaultStatTotal){ - leadership+=1; - } - - if(leadership > defaultStatMax || strength > defaultStatMax || intel > defaultStatMax || leadership < defaultStatMin || strength < defaultStatMin || intel < defaultStatMin){ - return abilityRand(); - } - - $leadership.val(leadership); - $strength.val(strength); - $intel.val(intel); - } - - - function abilityLeadpow(){ - var leadership = Math.random() * 6; - var strength = Math.random() * 6; - var intel = Math.random() * 1; - var rate = leadership + strength + intel; - - leadership = Math.floor(leadership / rate * defaultStatTotal); - strength = Math.floor(strength / rate * defaultStatTotal); - intel = Math.floor(intel / rate * defaultStatTotal); - - while(leadership+strength+intel < defaultStatTotal){ - strength+=1; - } - - if(intel < defaultStatMin){ - leadership -= defaultStatMin - intel; - intel = defaultStatMin; - } - - if(leadership > defaultStatMax){ - strength += leadership - defaultStatMax; - leadership = defaultStatMax; - } - - if(strength > defaultStatMax){ - leadership += strength - defaultStatMax; - strength = defaultStatMax; - } - - if(leadership > defaultStatMax){ - intel += leadership - defaultStatMax; - leadership = defaultStatMax; - } - - $leadership.val(leadership); - $strength.val(strength); - $intel.val(intel); - } - - function abilityLeadint(){ - var leadership = Math.random() * 6; - var strength = Math.random() * 1; - var intel = Math.random() * 6; - var rate = leadership + strength + intel; - - leadership = Math.floor(leadership / rate * defaultStatTotal); - strength = Math.floor(strength / rate * defaultStatTotal); - intel = Math.floor(intel / rate * defaultStatTotal); - - while(leadership+strength+intel < defaultStatTotal){ - intel+=1; - } - - if(strength < defaultStatMin){ - leadership -= defaultStatMin - strength; - strength = defaultStatMin; - } - - if(leadership > defaultStatMax){ - intel += leadership - defaultStatMax; - leadership = defaultStatMax; - } - - if(intel > defaultStatMax){ - leadership += intel - defaultStatMax; - intel = defaultStatMax; - } - - if(leadership > defaultStatMax){ - strength += leadership - defaultStatMax; - leadership = defaultStatMax; - } - - $leadership.val(leadership); - $strength.val(strength); - $intel.val(intel); - } - - function abilityPowint(){ - var leadership = Math.random() * 1; - var strength = Math.random() * 6; - var intel = Math.random() * 6; - var rate = leadership + strength + intel; - - leadership = Math.floor(leadership / rate * defaultStatTotal); - strength = Math.floor(strength / rate * defaultStatTotal); - intel = Math.floor(intel / rate * defaultStatTotal); - - while(leadership+strength+intel < defaultStatTotal){ - intel+=1; - } - - if(leadership < defaultStatMin){ - strength -= defaultStatMin - leadership; - leadership = defaultStatMin; - } - - if(strength > defaultStatMax){ - intel += strength - defaultStatMax; - strength = defaultStatMax; - } - - if(intel > defaultStatMax){ - strength += intel - defaultStatMax; - intel = defaultStatMax; - } - - if(strength > defaultStatMax){ - leadership += strength - defaultStatMax; - strength = defaultStatMax; - } - - $leadership.val(leadership); - $strength.val(strength); - $intel.val(intel); - } - - window.abilityRand = abilityRand; - window.abilityLeadpow = abilityLeadpow; - window.abilityLeadint = abilityLeadint; - window.abilityPowint = abilityPowint; - - var $charInfoText = $('#charInfoText'); - var $selChar = $('#selChar'); - $selChar.change(function(){ - var $this = $(this); - var char = $this.val(); - if(char in charInfoText){ - $charInfoText.html(charInfoText[char]); - } - else{ - $charInfoText.html(''); - } - }); - - var $generalName = $('#generalName'); - if($generalName.on('change keyup paste', function(){ - var generalName = $generalName.val(); - var len = mb_strwidth(generalName); - if(len == 0 || len > 18){ - $generalName.css('color','red'); - } - else{ - $generalName.css('color','white'); - } - })); - - $('#join_form').submit(function(){ - var generalName = $generalName.val(); - if(mb_strwidth(generalName) > 18){ - alert('장수 이름이 너무 깁니다!'); - return false; - } - var currentStatTotal = parseInt($leadership.val()) + parseInt($strength.val()) + parseInt($intel.val()); - if(currentStatTotal < defaultStatTotal){ - if(!confirm('현재 능력치 총합은 {0}으로, {1}보다 낮습니다. 장수 생성을 진행할까요?'.format(currentStatTotal, defaultStatTotal))){ - return false; - } - } - return true; - }); - - var randomGenType = Math.floor(Math.random()*7); - if(randomGenType < 3){ - abilityLeadpow(); - } - else if(randomGenType < 6){ - abilityLeadint(); - } - else{ - abilityPowint(); - } - -}); \ No newline at end of file diff --git a/hwe/select_general_from_pool.php b/hwe/select_general_from_pool.php index d80299e4..3886f16e 100644 --- a/hwe/select_general_from_pool.php +++ b/hwe/select_general_from_pool.php @@ -66,7 +66,7 @@ var validCustomOption = ; - + diff --git a/hwe/ts/join.ts b/hwe/ts/join.ts new file mode 100644 index 00000000..47be56c7 --- /dev/null +++ b/hwe/ts/join.ts @@ -0,0 +1,213 @@ +import $ from 'jquery'; +import { exportWindow } from './util/exportWindow'; +import { mb_strwidth } from './util/mb_strwidth'; +import { unwrap_any } from './util/unwrap_any'; + +declare const defaultStatTotal: number; +declare const defaultStatMax: number; +declare const defaultStatMin: number; +declare const charInfoText: Record; +$(function ($) { + const $leadership = $('#leadership'); + const $strength = $('#strength'); + const $intel = $('#intel'); + + function abilityRand(): void { + let leadership = Math.random() * 65 + 10; + let strength = Math.random() * 65 + 10; + let intel = Math.random() * 65 + 10; + const rate = leadership + strength + intel; + + leadership = Math.floor(leadership / rate * defaultStatTotal); + strength = Math.floor(strength / rate * defaultStatTotal); + intel = Math.floor(intel / rate * defaultStatTotal); + + + while (leadership + strength + intel < defaultStatTotal) { + leadership += 1; + } + + if (leadership > defaultStatMax || strength > defaultStatMax || intel > defaultStatMax || leadership < defaultStatMin || strength < defaultStatMin || intel < defaultStatMin) { + return abilityRand(); + } + + $leadership.val(leadership); + $strength.val(strength); + $intel.val(intel); + } + + + function abilityLeadpow() { + let leadership = Math.random() * 6; + let strength = Math.random() * 6; + let intel = Math.random() * 1; + const rate = leadership + strength + intel; + + leadership = Math.floor(leadership / rate * defaultStatTotal); + strength = Math.floor(strength / rate * defaultStatTotal); + intel = Math.floor(intel / rate * defaultStatTotal); + + while (leadership + strength + intel < defaultStatTotal) { + strength += 1; + } + + if (intel < defaultStatMin) { + leadership -= defaultStatMin - intel; + intel = defaultStatMin; + } + + if (leadership > defaultStatMax) { + strength += leadership - defaultStatMax; + leadership = defaultStatMax; + } + + if (strength > defaultStatMax) { + leadership += strength - defaultStatMax; + strength = defaultStatMax; + } + + if (leadership > defaultStatMax) { + intel += leadership - defaultStatMax; + leadership = defaultStatMax; + } + + $leadership.val(leadership); + $strength.val(strength); + $intel.val(intel); + } + + function abilityLeadint() { + let leadership = Math.random() * 6; + let strength = Math.random() * 1; + let intel = Math.random() * 6; + const rate = leadership + strength + intel; + + leadership = Math.floor(leadership / rate * defaultStatTotal); + strength = Math.floor(strength / rate * defaultStatTotal); + intel = Math.floor(intel / rate * defaultStatTotal); + + while (leadership + strength + intel < defaultStatTotal) { + intel += 1; + } + + if (strength < defaultStatMin) { + leadership -= defaultStatMin - strength; + strength = defaultStatMin; + } + + if (leadership > defaultStatMax) { + intel += leadership - defaultStatMax; + leadership = defaultStatMax; + } + + if (intel > defaultStatMax) { + leadership += intel - defaultStatMax; + intel = defaultStatMax; + } + + if (leadership > defaultStatMax) { + strength += leadership - defaultStatMax; + leadership = defaultStatMax; + } + + $leadership.val(leadership); + $strength.val(strength); + $intel.val(intel); + } + + function abilityPowint() { + let leadership = Math.random() * 1; + let strength = Math.random() * 6; + let intel = Math.random() * 6; + const rate = leadership + strength + intel; + + leadership = Math.floor(leadership / rate * defaultStatTotal); + strength = Math.floor(strength / rate * defaultStatTotal); + intel = Math.floor(intel / rate * defaultStatTotal); + + while (leadership + strength + intel < defaultStatTotal) { + intel += 1; + } + + if (leadership < defaultStatMin) { + strength -= defaultStatMin - leadership; + leadership = defaultStatMin; + } + + if (strength > defaultStatMax) { + intel += strength - defaultStatMax; + strength = defaultStatMax; + } + + if (intel > defaultStatMax) { + strength += intel - defaultStatMax; + intel = defaultStatMax; + } + + if (strength > defaultStatMax) { + leadership += strength - defaultStatMax; + strength = defaultStatMax; + } + + $leadership.val(leadership); + $strength.val(strength); + $intel.val(intel); + } + + exportWindow(abilityRand, 'abilityRand'); + exportWindow(abilityLeadpow, 'abilityLeadpow'); + exportWindow(abilityLeadint, 'abilityLeadint'); + exportWindow(abilityPowint, 'abilityPowint'); + + const $charInfoText = $('#charInfoText'); + const $selChar = $('#selChar'); + $selChar.change(function () { + const $this = $(this); + const char = unwrap_any($this.val()); + if (char in charInfoText) { + $charInfoText.html(charInfoText[char]); + } + else { + $charInfoText.html(''); + } + }); + + const $generalName = $('#generalName'); + $generalName.on('change keyup paste', function () { + const generalName = unwrap_any($generalName.val()); + const len = mb_strwidth(generalName); + if (len == 0 || len > 18) { + $generalName.css('color', 'red'); + } + else { + $generalName.css('color', 'white'); + } + }); + + $('#join_form').submit(function () { + const generalName = unwrap_any($generalName.val()); + if (mb_strwidth(generalName) > 18) { + alert('장수 이름이 너무 깁니다!'); + return false; + } + const currentStatTotal = parseInt(unwrap_any($leadership.val())) + parseInt(unwrap_any($strength.val())) + parseInt(unwrap_any($intel.val())); + if (currentStatTotal < defaultStatTotal) { + if (!confirm(`현재 능력치 총합은 ${currentStatTotal}으로, ${defaultStatTotal}보다 낮습니다. 그래도 생성할까요?`)) { + return false; + } + } + return true; + }); + + const randomGenType = Math.floor(Math.random() * 7); + if (randomGenType < 3) { + abilityLeadpow(); + } + else if (randomGenType < 6) { + abilityLeadint(); + } + else { + abilityPowint(); + } + +}); \ No newline at end of file diff --git a/webpack.config.cjs b/webpack.config.cjs index cd99a31d..c4e693a5 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -39,6 +39,7 @@ module.exports = (env, argv) => { currentCity: '@/currentCity.ts', hallOfFame: '@/hallOfFame.ts', history: '@/history.ts', + join: '@/join.ts', }, output: { filename: '[name].js',