From fc17eada24393cd2e0f573b691234a0faf43b56b Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Thu, 9 Nov 2023 19:24:47 +0200 Subject: [PATCH] refactor --- AI.php | 486 ++++++++++++++++++ _incl_data/Views/Locations/Shop.php | 15 +- _incl_data/class/Enum/ShopId.php | 35 ++ _incl_data/class/Enum/StatFilterCellName.php | 10 + _incl_data/class/Item.php | 228 -------- _incl_data/class/Item/Data/Bonuses.php | 84 +-- _incl_data/class/Item/Data/Requirements.php | 36 +- _incl_data/class/Item/DataModel.php | 7 +- _incl_data/class/Location/Shop.php | 150 ++---- _incl_data/class/Model/Constant/Constant.php | 18 + _incl_data/class/Model/Constant/ShopOtdel.php | 47 ++ _incl_data/class/Model/Constant/Stat.php | 40 ++ _incl_data/class/User.php | 194 ++++--- _incl_data/class/User/Parameters.php | 97 ---- _incl_data/class/User/Stats.php | 341 ++++-------- _incl_data/class/User/UserCalculatedStats.php | 56 +- _incl_data/class/User/UserStats.php | 53 +- css/inf.css | 300 +++++++++++ modules_data/location/shop_.php | 11 +- 19 files changed, 1255 insertions(+), 953 deletions(-) create mode 100644 AI.php create mode 100644 _incl_data/class/Enum/ShopId.php create mode 100644 _incl_data/class/Enum/StatFilterCellName.php delete mode 100644 _incl_data/class/Item.php create mode 100644 _incl_data/class/Model/Constant/Constant.php create mode 100644 _incl_data/class/Model/Constant/ShopOtdel.php create mode 100644 _incl_data/class/Model/Constant/Stat.php delete mode 100644 _incl_data/class/User/Parameters.php create mode 100644 css/inf.css diff --git a/AI.php b/AI.php new file mode 100644 index 00000000..4b4c2502 --- /dev/null +++ b/AI.php @@ -0,0 +1,486 @@ +info['testStats'], $user->info['testStats2']); +//exit(); + +$im = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'items_main'"); +$iu = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'items_users'"); + +$u = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'users'"); +$s = Db::getColumn("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'stats'"); + +$p = Db::getRows('select * from const_stats'); + +var_dump((new ShopOtdel())->getGroups()); +?> + + +
+
+ $user->[info]
+ info as $k => $v) { + if (isset($user->is[$k])) { + $k .= " [{$user->is[$k]}]"; + } + if ($k == 'stats') { + echo 'stats = ARRAY
'; + foreach (Conversion::dataStringToArray($v) as $dk => $dv) { + if (isset($user->is[$dk])) { + $dk .= " [{$user->is[$dk]}]"; + } + echo "$dk = $dv
"; + } + $k = ''; + $v = ''; + } + echo "$rr. $k = $v
"; + $rr++; + } + ?> +
+
+ $user->[stats]
+ stats as $k => $v) { + if (isset($user->is[$k])) { + $k .= " [{$user->is[$k]}]"; + } else { + $k = "$k"; + } + + echo "$rr. $k = $v
"; + $rr++; + if (is_array($v)) { + foreach ($v as $k2 => $v2) { + echo "$k2 = $v2
"; + + if (is_array($v2)) { + foreach ($v2 as $k3 => $v3) { + echo "$k3 = $v3
"; + if ($k3 === 'data' && $v3 !== '[]') { + $v3 .= '|add_mib2=43'; + $itemData = Conversion::dataStringToArray($v3); + + echo 'DATA TR_
'; + foreach ((new Requirements($itemData))->get() as $k => $v) { + echo "$k = $v
"; + } + echo 'DATA ADD_
'; + foreach ((new Bonuses($itemData))->get() as $k => $v) { + echo "$k = $v
"; + } + } + + } + } + } + } + } + + ?> +
+
+
+ Совпадения по параметрам $user->info и $user->stats. Возможно, это ничего не значит, а может и дублирование.

+ +info as $a => $b) { + if (isset($user->stats[$a])) { + echo "$i. info = stats: $a = $b
"; + $i++; + } +} +echo '
'; +foreach ($user->stats as $a2 => $b2) { + if (isset($user->info[$a2])) { + echo "$i2. stats = info: $a2 = $b2
"; + $i2++; + } +} +?> +
+
+
Поля в базе users + +
+
Поля в базе stats + +
+
+ + +
Отдельно, уже согласованные параметры предметов, которые могут находиться исключительно в поле data
+
+
sv_* (хотим убрать) + +
+
+ +
+
Поля в базе items_main + +
+
Поля в базе items_users + +
+
+ +
+
Параметры игрока.

+
+
Заскриптованные + is); ?> +
+
Хотим оставить + +
+
Хотим убрать + +
+
+
Все возможные поля в $user->stats. Некоторые имена полей генерируются динамически на лету, поэтому соответствия имени нет. А каких-то, возможно просто не существует.

+ $v) { + if (isset($user->is[$k])) { + $v = $user->is[$k]; + } + $stnames[$k] = $v; +} +var_dump($stnames); + +echo "
Текущая таблица параметров
"; +foreach ($p as $prow) { + echo "{$prow['sys_name']} → {$prow['name']}"; + if ($prow['is_percentage']) { + echo " (%)"; + } + if ($prow['is_requirement']) { + echo " [требуется] "; + } + if ($prow['is_bonus']) { + echo " [даёт] "; + } + echo "
"; +} \ No newline at end of file diff --git a/_incl_data/Views/Locations/Shop.php b/_incl_data/Views/Locations/Shop.php index 13e1fa94..2c62c7af 100644 --- a/_incl_data/Views/Locations/Shop.php +++ b/_incl_data/Views/Locations/Shop.php @@ -1,3 +1,8 @@ +