mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 10:47:04 +02:00
feat: more proto
This commit is contained in:
1 parent
5881b5b533
commit
67f312075a
5 files changed
+82
-78
No files matched your search
@@ -5,3 +5,5 @@
|
||||
`Blitz/Config/DefaultDlc.ini` contains DLC info; essentially extra `pak` containers
|
||||
|
||||
`Blitz/Content/TanksStuff/Common/DT_TankClasses.uasset` seems to have all tank classes
|
||||
|
||||
`C:\Users\coola\AppData\Local\Blitz\Saved\PersistentDownloadDir\http\dl-wotblitz-gc.wargaming.net\dlc\p14y73c7_p5e_b10gg3RS_big_play\ue_localizations\development\general` has all localization files
|
||||
@@ -2,6 +2,6 @@ syntax = "proto2";
|
||||
|
||||
package blitzkit;
|
||||
|
||||
message I18nString {
|
||||
message I18n {
|
||||
map<string, string> locales = 1;
|
||||
}
|
||||
@@ -1,83 +1,82 @@
|
||||
syntax = "proto2";
|
||||
|
||||
import "packages/core/src/protos/i18n.proto";
|
||||
|
||||
package blitzkit;
|
||||
|
||||
message Tank {
|
||||
required ModuleHealth turret_rotator_health = 1;
|
||||
required ModuleHealth surveying_device_health = 2;
|
||||
required ModuleHealth gun_health = 3;
|
||||
required ModuleHealth chassis_health = 4;
|
||||
required ModuleHealth ammo_bay_health = 5;
|
||||
required ModuleHealth engine_health = 6;
|
||||
required ModuleHealth fuel_tank_health = 7;
|
||||
required string id = 1;
|
||||
required I18n name = 2;
|
||||
required string set = 3;
|
||||
required string class = 4;
|
||||
// nations have been renamed to factions
|
||||
required string faction = 5;
|
||||
|
||||
map<string, float> crew_healths = 8;
|
||||
required ModuleHealth turret_rotator_health = 6;
|
||||
required ModuleHealth surveying_device_health = 7;
|
||||
required ModuleHealth gun_health = 8;
|
||||
required ModuleHealth chassis_health = 9;
|
||||
required ModuleHealth ammo_bay_health = 10;
|
||||
required ModuleHealth engine_health = 11;
|
||||
required ModuleHealth fuel_tank_health = 12;
|
||||
map<string, float> crew_health = 13;
|
||||
required float max_health = 14;
|
||||
required float health_burn_per_second = 15;
|
||||
required float fire_starting_chance = 16;
|
||||
|
||||
required float concealment_stationary = 17;
|
||||
required float concealment_moving = 18;
|
||||
required float concealment_factor_on_shot = 19;
|
||||
|
||||
required float turret_turn_rate = 20;
|
||||
required float circular_vision_radius = 21;
|
||||
|
||||
required float max_health = 9;
|
||||
required float concealment_stationary = 10;
|
||||
required float concealment_moving = 11;
|
||||
required float concealment_on_shot = 12;
|
||||
|
||||
repeated PitchLimit up_pitch_limits = 13;
|
||||
repeated PitchLimit down_pitch_limits = 14;
|
||||
|
||||
required float turret_turn_rate = 15;
|
||||
required float spotting_range = 16;
|
||||
|
||||
repeated Shell shells = 17;
|
||||
|
||||
required float reload_time = 18;
|
||||
|
||||
required float dispersion_stationary = 19;
|
||||
required float dispersion_turret_rotation = 20;
|
||||
required float dispersion_moving = 21;
|
||||
required float dispersion_hull_rotation = 22;
|
||||
|
||||
required float gun_turn_rate = 23;
|
||||
required float mass = 24;
|
||||
required float engine_power = 25;
|
||||
required float max_speed_forwards = 26;
|
||||
required float max_speed_backwards = 27;
|
||||
required float rotation_speed = 28;
|
||||
|
||||
required float terrain_resistance_hard = 29;
|
||||
required float terrain_resistance_medium = 30;
|
||||
required float terrain_resistance_soft = 31;
|
||||
|
||||
required float brake_force = 32;
|
||||
repeated Shell shells = 22;
|
||||
required float reload_time = 23;
|
||||
required float dispersion_angle = 24;
|
||||
required float shot_dispersion_factor = 25;
|
||||
required float turret_rotation_dispersion_factor = 26;
|
||||
required float aiming_time = 27;
|
||||
required float gun_turn_rate = 28;
|
||||
|
||||
required float mass = 29;
|
||||
required float engine_power = 30;
|
||||
required float forward_max_speed = 31;
|
||||
required float backward_max_speed = 32;
|
||||
required float rotation_speed = 33;
|
||||
required float terrain_resistance_hard = 34;
|
||||
required float brake_force = 35;
|
||||
required bool b_rotation_is_around_center = 36;
|
||||
}
|
||||
|
||||
message Shell {
|
||||
required float speed = 1;
|
||||
required float armor_damage = 2;
|
||||
required float module_damage = 3;
|
||||
required float caliber = 4;
|
||||
required float penetration = 5;
|
||||
required float penetration_500m = 6;
|
||||
required float normalization = 7;
|
||||
required float range = 8;
|
||||
required float ricochet = 9;
|
||||
required float penetration_loss_by_distance = 10;
|
||||
required float explosion_radius = 11;
|
||||
required int32 max_count = 12;
|
||||
}
|
||||
|
||||
message PitchLimit {
|
||||
required float angle = 1;
|
||||
required float value = 2;
|
||||
required float gravity = 2;
|
||||
required float armor_damage = 3;
|
||||
required float module_damage = 4;
|
||||
required float caliber = 5;
|
||||
required float piercing_power = 6;
|
||||
required float piercing_power_500m = 7;
|
||||
required float normalization = 8;
|
||||
required float max_distance = 9;
|
||||
required float ricochet_angle = 10;
|
||||
required float piercing_power_loss_factor_by_distance = 11;
|
||||
required float explosion_radius = 12;
|
||||
required int32 max_count = 13;
|
||||
}
|
||||
|
||||
message ModuleHealth {
|
||||
// max health, assigned by default at the start of the battle
|
||||
required float max = 1;
|
||||
required float max_health = 1;
|
||||
// max health reached as the module regenerates after breaking
|
||||
required float max_regen = 2;
|
||||
required float max_regen_health = 2;
|
||||
// the range from 0 to this where the module is "red" and doesn't function
|
||||
// all the while healing; after surpassing this, the "yellow" phase is reached
|
||||
required float hysteresis = 3;
|
||||
required float hysteresis_health = 3;
|
||||
// the heal rate (per second); this won't apply if the health is at or above
|
||||
// max_regen hence always leaving it in the "yellow" phase until repaired
|
||||
required float heal_rate = 4;
|
||||
// damage received (per second) to the modules when caught on fire
|
||||
required float burn_rate = 5;
|
||||
required float health_regen_per_second = 4;
|
||||
// damage received (per second) to the modules when caught on fire; this can
|
||||
// be undefined for some modules like the gun or chassis
|
||||
optional float health_burn_per_second = 5;
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
using Blitzkit;
|
||||
using BlitzKit.CLI.Models;
|
||||
using BlitzKit.CLI.Utils;
|
||||
using CUE4Parse.FileProvider.Objects;
|
||||
using Google.Protobuf;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace BlitzKit.CLI.Functions
|
||||
{
|
||||
@@ -8,6 +11,7 @@ namespace BlitzKit.CLI.Functions
|
||||
{
|
||||
public static void Mangle()
|
||||
{
|
||||
Tanks tanks = new();
|
||||
BlitzProvider provider = new();
|
||||
|
||||
foreach (var nation in provider.RootDirectory.GetDirectory("Blitz/Content/Tanks").Directories)
|
||||
@@ -20,13 +24,14 @@ namespace BlitzKit.CLI.Functions
|
||||
if (tank.Key != "R90_IS_4")
|
||||
continue;
|
||||
|
||||
tanks.Tanks_.Add(tank.Key);
|
||||
var attributeFileName = $"DA_{tank.Key}_Attributes.uasset";
|
||||
var hasAttributesFile = tank.Value.HasFile(attributeFileName);
|
||||
GameFile? attributes = null;
|
||||
GameFile? attributesFile = null;
|
||||
|
||||
if (hasAttributesFile)
|
||||
{
|
||||
attributes = tank.Value.GetFile(attributeFileName);
|
||||
attributesFile = tank.Value.GetFile(attributeFileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -38,12 +43,12 @@ namespace BlitzKit.CLI.Functions
|
||||
{
|
||||
if (file.Key.EndsWith("_Attributes.uasset"))
|
||||
{
|
||||
attributes = file.Value;
|
||||
attributesFile = file.Value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (attributes == null)
|
||||
if (attributesFile == null)
|
||||
{
|
||||
PrettyLog.Error(
|
||||
$"No suffixed attributes file found for {nation.Key}/{tank.Key}; skipping..."
|
||||
@@ -52,20 +57,18 @@ namespace BlitzKit.CLI.Functions
|
||||
}
|
||||
}
|
||||
|
||||
var objects = provider.LoadAllObjects(attributes.Path);
|
||||
var objectsCount = objects.Count();
|
||||
var exports = provider.LoadAllObjects(attributesFile.Path);
|
||||
|
||||
if (objectsCount != 1)
|
||||
{
|
||||
throw new Exception($"Expected 1 object for attribute objects, got {objectsCount}");
|
||||
}
|
||||
var tankAttributesDataAsset =
|
||||
exports.First((export) => export.ExportType == "TankAttributesDataAsset")
|
||||
?? throw new Exception("TankAttributesDataAsset not found");
|
||||
var attr = JObject.FromObject(tankAttributesDataAsset);
|
||||
|
||||
foreach (var obj in objects)
|
||||
{
|
||||
Console.WriteLine(obj.Properties);
|
||||
}
|
||||
Console.WriteLine(attr);
|
||||
}
|
||||
}
|
||||
|
||||
var tanksBytes = tanks.ToByteArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ namespace BlitzKit.CLI.Models
|
||||
var directory =
|
||||
directoryPath == null || directoryPath.Length == 0 ? this : GetDirectory(directoryPath);
|
||||
|
||||
return directory.Files[name];
|
||||
return directory.Files[fileName];
|
||||
}
|
||||
|
||||
public bool HasDirectory(string name) => Directories.ContainsKey(name);
|
||||
|
||||
Reference in new issue
Block a user