ClientServer/Server/src/main/java/server/SpecialWeaponConfig.java
TG9six 03a642d635 first push
first push
2025-09-06 17:17:39 +04:00

81 lines
2.8 KiB
Java

package server;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class SpecialWeaponConfig {
private static List<WeaponConfig> weapons = new ArrayList<>();
static class WeaponConfig {
int itemId;
String name;
List<SkinBonus> skinBonuses;
boolean defaultCanFire;
}
static class SkinBonus {
String skin;
float damageMultiplier;
boolean canFire;
}
public static void loadConfig() {
try (FileReader reader = new FileReader("resources/special_weapons.json")) {
StringBuilder json = new StringBuilder();
int c;
while ((c = reader.read()) != -1) json.append((char) c);
JSONArray array = new JSONArray(json.toString());
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
WeaponConfig weapon = new WeaponConfig();
weapon.itemId = obj.getInt("itemId");
weapon.name = obj.getString("name");
weapon.defaultCanFire = obj.getBoolean("defaultCanFire");
weapon.skinBonuses = new ArrayList<>();
JSONArray bonuses = obj.getJSONArray("skinBonuses");
for (int j = 0; j < bonuses.length(); j++) {
JSONObject bonus = bonuses.getJSONObject(j);
SkinBonus skinBonus = new SkinBonus();
skinBonus.skin = bonus.getString("skin");
skinBonus.damageMultiplier = (float) bonus.getDouble("damageMultiplier");
skinBonus.canFire = bonus.getBoolean("canFire");
weapon.skinBonuses.add(skinBonus);
}
weapons.add(weapon);
}
} catch (Exception e) {
System.err.println("Error loading special_weapons.json: " + e);
}
}
public static float getDamageMultiplier(int itemId, String skin) {
for (WeaponConfig weapon : weapons) {
if (weapon.itemId == itemId) {
for (SkinBonus bonus : weapon.skinBonuses) {
if (bonus.skin.equals(skin)) {
return bonus.damageMultiplier;
}
}
break;
}
}
return 1.0f; // No bonus
}
public static boolean canFire(int itemId, String skin) {
for (WeaponConfig weapon : weapons) {
if (weapon.itemId == itemId) {
for (SkinBonus bonus : weapon.skinBonuses) {
if (bonus.skin.equals(skin)) {
return bonus.canFire;
}
}
return weapon.defaultCanFire;
}
}
return true; // Default for non-special weapons
}
}