mirror of
https://github.com/Nereziel/cs2-WeaponPaints.git
synced 2026-03-09 16:18:48 +00:00
Implement WeaponHandler class to streamline weapon and knife selection logic in index.php, enhancing maintainability and clarity. Refactor weapon update handling to utilize the new class, improving organization and reducing code duplication. Update CSS for improved button styles and layout consistency.
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
<?php
|
||||
define('SKIN_LANGUAGE', 'skins_en');
|
||||
|
||||
define('DB_HOST', 'localhost');
|
||||
define('DB_HOST', '10.0.0.24');
|
||||
define('DB_PORT', '3306');
|
||||
define('DB_NAME', '');
|
||||
define('DB_USER', '');
|
||||
define('DB_PASS', '');
|
||||
define('DB_NAME', 'weaponskins_database');
|
||||
define('DB_USER', 'root');
|
||||
define('DB_PASS', 'DoOctwqOnohFSMvxLDGhGMaLGMJXjTSZBwROQeQcvFyfhkqEZHTEWMvQprOZLVco');
|
||||
|
||||
define('WEB_STYLE_DARK', true);
|
||||
|
||||
define('STEAM_API_KEY', '');
|
||||
define('STEAM_DOMAIN_NAME', '');
|
||||
define('STEAM_LOGOUT_PAGE', '');
|
||||
define('STEAM_LOGIN_PAGE', '');
|
||||
|
||||
define('STEAM_API_KEY', 'D4EA0D36F688221050E06AF062B5EA48');
|
||||
define('STEAM_DOMAIN_NAME', 'http://10.0.0.254');
|
||||
define('STEAM_LOGOUT_PAGE', 'index.php');
|
||||
define('STEAM_LOGIN_PAGE', 'index.php');
|
||||
304
website/class/weapon_handler.php
Normal file
304
website/class/weapon_handler.php
Normal file
@@ -0,0 +1,304 @@
|
||||
<?php
|
||||
require_once 'utils.php';
|
||||
require_once 'database.php';
|
||||
|
||||
class WeaponHandler
|
||||
{
|
||||
private $db;
|
||||
private $steamid;
|
||||
|
||||
public function __construct($steamid)
|
||||
{
|
||||
$this->db = new DataBase();
|
||||
$this->steamid = $steamid;
|
||||
}
|
||||
|
||||
public function handleWeaponUpdate($postData): bool
|
||||
{
|
||||
if (!isset($postData['forma'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$formaParts = explode("-", $postData['forma']);
|
||||
|
||||
if ($formaParts[0] === "knife") {
|
||||
return $this->handleKnifeSelection($formaParts[1]);
|
||||
} else {
|
||||
return $this->handleWeaponSkin($formaParts, $postData);
|
||||
}
|
||||
}
|
||||
|
||||
private function handleKnifeSelection($knifeId): bool
|
||||
{
|
||||
$knifes = UtilsClass::getKnifeTypes();
|
||||
|
||||
if (!isset($knifes[$knifeId])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$knifeData = $knifes[$knifeId];
|
||||
|
||||
// Clear existing knife data
|
||||
$this->clearKnifeData();
|
||||
|
||||
// Set new knife selection (insert for both teams separately)
|
||||
$this->db->query(
|
||||
"INSERT INTO `wp_player_knife` (`steamid`, `knife`, `weapon_team`) VALUES (:steamid, :knife, 2)",
|
||||
["steamid" => $this->steamid, "knife" => $knifeData['weapon_name']]
|
||||
);
|
||||
|
||||
$this->db->query(
|
||||
"INSERT INTO `wp_player_knife` (`steamid`, `knife`, `weapon_team`) VALUES (:steamid, :knife, 3)",
|
||||
["steamid" => $this->steamid, "knife" => $knifeData['weapon_name']]
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function handleWeaponSkin($formaParts, $postData): bool
|
||||
{
|
||||
$defindex = $formaParts[0];
|
||||
$paintId = $formaParts[1];
|
||||
|
||||
$skins = UtilsClass::skinsFromJson();
|
||||
|
||||
if (!isset($skins[$defindex][$paintId]) ||
|
||||
!isset($postData['wear']) ||
|
||||
!isset($postData['seed'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$wear = $this->validateWear($postData['wear']);
|
||||
$seed = $this->validateSeed($postData['seed']);
|
||||
|
||||
if ($wear === false || $seed === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Handle knife skins
|
||||
if (UtilsClass::isKnifeDefindex($defindex)) {
|
||||
$this->handleKnifeSkin($defindex, $paintId, $wear, $seed);
|
||||
} else {
|
||||
$this->handleRegularWeaponSkin($defindex, $paintId, $wear, $seed);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function handleKnifeSkin($defindex, $paintId, $wear, $seed): void
|
||||
{
|
||||
$knifeMapping = UtilsClass::getKnifeMapping();
|
||||
|
||||
// Clear existing knife data
|
||||
$this->clearKnifeData();
|
||||
|
||||
// Clear other knife skins
|
||||
$knifeDefindexes = UtilsClass::getKnifeDefindexes();
|
||||
foreach ($knifeDefindexes as $knifeDefindex) {
|
||||
if ($knifeDefindex != $defindex) {
|
||||
$this->db->query(
|
||||
"DELETE FROM `wp_player_skins` WHERE `steamid` = :steamid AND `weapon_defindex` = :weapon_defindex",
|
||||
["steamid" => $this->steamid, "weapon_defindex" => $knifeDefindex]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Set knife type in wp_player_knife table
|
||||
if (isset($knifeMapping[$defindex])) {
|
||||
$this->db->query(
|
||||
"INSERT INTO `wp_player_knife` (`steamid`, `knife`, `weapon_team`) VALUES (:steamid, :knife, 2)",
|
||||
["steamid" => $this->steamid, "knife" => $knifeMapping[$defindex]]
|
||||
);
|
||||
|
||||
$this->db->query(
|
||||
"INSERT INTO `wp_player_knife` (`steamid`, `knife`, `weapon_team`) VALUES (:steamid, :knife, 3)",
|
||||
["steamid" => $this->steamid, "knife" => $knifeMapping[$defindex]]
|
||||
);
|
||||
}
|
||||
|
||||
// Set knife skin
|
||||
$this->upsertWeaponSkin($defindex, $paintId, $wear, $seed);
|
||||
}
|
||||
|
||||
private function handleRegularWeaponSkin($defindex, $paintId, $wear, $seed): void
|
||||
{
|
||||
$this->upsertWeaponSkin($defindex, $paintId, $wear, $seed);
|
||||
}
|
||||
|
||||
private function upsertWeaponSkin($defindex, $paintId, $wear, $seed): void
|
||||
{
|
||||
$selectedSkins = $this->getSelectedSkins();
|
||||
|
||||
if (array_key_exists($defindex, $selectedSkins)) {
|
||||
// Update existing
|
||||
$this->db->query(
|
||||
"UPDATE wp_player_skins SET weapon_paint_id = :weapon_paint_id, weapon_wear = :weapon_wear, weapon_seed = :weapon_seed WHERE steamid = :steamid AND weapon_defindex = :weapon_defindex",
|
||||
[
|
||||
"weapon_paint_id" => $paintId,
|
||||
"weapon_wear" => $wear,
|
||||
"weapon_seed" => $seed,
|
||||
"steamid" => $this->steamid,
|
||||
"weapon_defindex" => $defindex
|
||||
]
|
||||
);
|
||||
} else {
|
||||
// Insert new for both teams
|
||||
$this->db->query(
|
||||
"INSERT INTO wp_player_skins (`steamid`, `weapon_defindex`, `weapon_paint_id`, `weapon_wear`, `weapon_seed`, `weapon_team`) VALUES (:steamid, :weapon_defindex, :weapon_paint_id, :weapon_wear, :weapon_seed, 2)",
|
||||
[
|
||||
"steamid" => $this->steamid,
|
||||
"weapon_defindex" => $defindex,
|
||||
"weapon_paint_id" => $paintId,
|
||||
"weapon_wear" => $wear,
|
||||
"weapon_seed" => $seed
|
||||
]
|
||||
);
|
||||
|
||||
$this->db->query(
|
||||
"INSERT INTO wp_player_skins (`steamid`, `weapon_defindex`, `weapon_paint_id`, `weapon_wear`, `weapon_seed`, `weapon_team`) VALUES (:steamid, :weapon_defindex, :weapon_paint_id, :weapon_wear, :weapon_seed, 3)",
|
||||
[
|
||||
"steamid" => $this->steamid,
|
||||
"weapon_defindex" => $defindex,
|
||||
"weapon_paint_id" => $paintId,
|
||||
"weapon_wear" => $wear,
|
||||
"weapon_seed" => $seed
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private function clearKnifeData(): void
|
||||
{
|
||||
$knifeDefindexes = UtilsClass::getKnifeDefindexes();
|
||||
|
||||
// Clear knife skins
|
||||
foreach ($knifeDefindexes as $knifeDefindex) {
|
||||
$this->db->query(
|
||||
"DELETE FROM `wp_player_skins` WHERE `steamid` = :steamid AND `weapon_defindex` = :weapon_defindex",
|
||||
["steamid" => $this->steamid, "weapon_defindex" => $knifeDefindex]
|
||||
);
|
||||
}
|
||||
|
||||
// Clear basic knife selection
|
||||
$this->db->query(
|
||||
"DELETE FROM `wp_player_knife` WHERE `steamid` = :steamid",
|
||||
["steamid" => $this->steamid]
|
||||
);
|
||||
}
|
||||
|
||||
private function validateWear($wear)
|
||||
{
|
||||
$wear = floatval($wear);
|
||||
return ($wear >= 0.00 && $wear <= 1.00) ? $wear : false;
|
||||
}
|
||||
|
||||
private function validateSeed($seed)
|
||||
{
|
||||
$seed = intval($seed);
|
||||
return ($seed >= 0) ? $seed : false;
|
||||
}
|
||||
|
||||
public function getSelectedSkins(): array
|
||||
{
|
||||
$query = $this->db->select(
|
||||
"SELECT `weapon_defindex`, MAX(`weapon_paint_id`) AS `weapon_paint_id`, MAX(`weapon_wear`) AS `weapon_wear`, MAX(`weapon_seed`) AS `weapon_seed`
|
||||
FROM `wp_player_skins`
|
||||
WHERE `steamid` = :steamid
|
||||
GROUP BY `weapon_defindex`, `steamid`",
|
||||
["steamid" => $this->steamid]
|
||||
);
|
||||
|
||||
return UtilsClass::getSelectedSkins($query ?: []);
|
||||
}
|
||||
|
||||
public function getSelectedKnife(): array
|
||||
{
|
||||
return $this->db->select(
|
||||
"SELECT * FROM `wp_player_knife` WHERE `steamid` = :steamid LIMIT 1",
|
||||
["steamid" => $this->steamid]
|
||||
) ?: [];
|
||||
}
|
||||
|
||||
public function getLoadoutData(): array
|
||||
{
|
||||
$weapons = UtilsClass::getWeaponsFromArray();
|
||||
$knifes = UtilsClass::getKnifeTypes();
|
||||
$selectedSkins = $this->getSelectedSkins();
|
||||
$selectedKnife = $this->getSelectedKnife();
|
||||
|
||||
return [
|
||||
'weapons' => $weapons,
|
||||
'knifes' => $knifes,
|
||||
'selectedSkins' => $selectedSkins,
|
||||
'selectedKnife' => $selectedKnife,
|
||||
'displayKnife' => $this->getDisplayKnife($selectedSkins, $selectedKnife, $knifes)
|
||||
];
|
||||
}
|
||||
|
||||
private function getDisplayKnife($selectedSkins, $selectedKnife, $knifes): array
|
||||
{
|
||||
$skins = UtilsClass::skinsFromJson();
|
||||
|
||||
// Check for knife skin first
|
||||
foreach ($selectedSkins as $defindex => $selectedSkin) {
|
||||
if (UtilsClass::isKnifeDefindex($defindex) && isset($skins[$defindex][$selectedSkin['weapon_paint_id']])) {
|
||||
return [
|
||||
'data' => $skins[$defindex][$selectedSkin['weapon_paint_id']],
|
||||
'source' => 'skin'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// Check for basic knife selection
|
||||
if (!empty($selectedKnife)) {
|
||||
foreach ($knifes as $knife) {
|
||||
if ($selectedKnife[0]['knife'] === $knife['weapon_name']) {
|
||||
return [
|
||||
'data' => $knife,
|
||||
'source' => 'basic'
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Default knife
|
||||
return [
|
||||
'data' => $knifes[0] ?? null,
|
||||
'source' => 'default'
|
||||
];
|
||||
}
|
||||
|
||||
public function getOrganizedWeapons(): array
|
||||
{
|
||||
$weapons = UtilsClass::getWeaponsFromArray();
|
||||
$knifes = UtilsClass::getKnifeTypes();
|
||||
$categories = UtilsClass::getWeaponCategories();
|
||||
|
||||
$organized = [
|
||||
'Knives' => [],
|
||||
'Gloves' => []
|
||||
];
|
||||
|
||||
// Add weapon categories
|
||||
foreach ($categories as $categoryName => $weaponIds) {
|
||||
$organized[$categoryName] = [];
|
||||
foreach ($weaponIds as $weaponId) {
|
||||
if (isset($weapons[$weaponId])) {
|
||||
$organized[$categoryName][$weaponId] = $weapons[$weaponId];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add knives (exclude default)
|
||||
foreach ($knifes as $knifeId => $knife) {
|
||||
if ($knifeId !== 0) {
|
||||
$organized['Knives'][$knifeId] = $knife;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove empty categories
|
||||
return array_filter($organized, function($category) {
|
||||
return !empty($category);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user