namespace Fifa15
{
enum TRAIT1
{
INFLEXIBILITY = 0x1, //not used in fifa22
LONG_THROW_IN = 0x2,
TAKES_POWERFUL_DRIVEN_FREEKICKS = 0x4,
DIVER = 0x8, //not used in fifa22
INJURY_PRONE = 0x10,
SOLID_PLAYER = 0x20,
AVOIDS_USING_WEAKER_FOOT = 0x40, //not used in fifa22
DIVES_INTO_TACKLES = 0x80,
TRIES_TO_BEAT_OFFSIDE_TRAP = 0x100, //not used in fifa22
SELFISH = 0x200,
LEADERSHIP = 0x400,
ARGUES_WITH_OFFICIALS = 0x800, //not used in fifa22
EARLY_CROSSER = 0x1000,
FINESSE_SHOT = 0x2000,
FLAIR = 0x4000,
LONG_PASSER = 0x8000,
LONG_SHOT_TAKER = 0x10000,
SPEED_DRIBBLER = 0x20000,
PLAYMAKER = 0x40000,
GK_PUSHES_UP_FOR_CORNERS = 0x80000,
GK_PUNCHER = 0x100000,
GK_LONG_THROWER = 0x200000,
POWER_HEADER = 0x400000,
GK_ONE_ON_ONES = 0x800000,
GIANT_THROW_IN = 0x1000000,
OUTSIDE_FOOT_SHOT = 0x2000000,
CROWD_FAVOURITE = 0x4000000, //not used in fifa22
SWERVE = 0x8000000,
SECOND_WIND = 0x10000000,
ACROBATIC_CLEARANCE = 0x20000000 //not used in fifa22
};
enum TRAIT2
{
FANCY_FEET = 0x1, //not used in fifa22
FANCY_PASSES = 0x2,
FANCY_FLICKS = 0x4, //not used in fifa22
STUTTER_PENALTY = 0x8, //not used in fifa22
CHIPPED_PENALTY = 0x10, //not used in fifa22
BICYCLE_KICK = 0x20,
DIVING_HEADER = 0x40, //not used in fifa22
DRIVEN_PASS = 0x80, //not used in fifa22
GK_FLAT_KICK = 0x100,
ONE_CLUB_PLAYER = 0x200,
TEAM_PLAYER = 0x400,
CHIP_SHOT = 0x800,
TECHNICAL_DRIBBLE = 0x1000
};
};
namespace Fifa22
{
enum TRAIT1
{
LONG_THROW_IN = 0x1, //"long_throwin"
TAKES_POWERFUL_DRIVEN_FREEKICKS = 0x2, //"power_freekick"
INJURY_PRONE = 0x4, //"injury_prone"
SOLID_PLAYER = 0x8, //"solid_player"
DIVES_INTO_TACKLES = 0x10, //"dives_into_tackles_cpu"
SELFISH = 0x20, //"unknown_1", suspicion that selfish
LEADERSHIP = 0x40, //"leadership"
EARLY_CROSSER = 0x80, //"early_crosser"
FINESSE_SHOT = 0x100, //"finesse_shot"
FLAIR = 0x200, //"flair"
LONG_PASSER = 0x400, //"long_passer_cpu"
LONG_SHOT_TAKER = 0x800, //"long_shot_taker_cpu"
SPEED_DRIBBLER = 0x1000, //"speed_dribbler_cpu"
PLAYMAKER = 0x2000, //"playmaker_cpu"
GK_LONG_THROWER = 0x4000, //"gk_long_throw"
POWER_HEADER = 0x8000, //"power_header"
GIANT_THROW_IN = 0x10000, //"giant_throwin"
OUTSIDE_FOOT_SHOT = 0x20000, //"outside_foot_shot"
SWERVE = 0x40000, //"swerve_pass"
SECOND_WIND = 0x80000, //"second_wind"
FANCY_PASSES = 0x100000, //"flair_passes" (fifa15 trait2 param)
BICYCLE_KICK = 0x200000, //"bicycle_kicks" (fifa15 trait2 param)
GK_FLAT_KICK = 0x400000, //"gk_flat_kick" (fifa15 trait2 param)
ONE_CLUB_PLAYER = 0x800000, //"one_club_player" (fifa15 trait2 param)
TEAM_PLAYER = 0x1000000, //"team_player" (fifa15 trait2 param)
CHIP_SHOT = 0x2000000, //"chip_shot_cpu" (fifa15 trait2 param)
TECHNICAL_DRIBBLE = 0x4000000, //"technical_dribbler_cpu" (fifa15 trait2 param)
GK_ONE_ON_ONES = 0x8000000, //"gk_rushes_out_of_goal"
GK_PUSHES_UP_FOR_CORNERS = 0x10000000, //"gk_cautious_with_crosses"
GK_PUNCHER = 0x20000000 //"gk_comes_for_crosses"
};
enum TRAIT2
{
//nothing common with FIFA15
};
}
//when updating existing player or adding new one from fifa22 to ffia15:
void traitsConversionFifa22ToFifa15(std::string& fifa15trait1, std::string& fifa15trait2,
const std::string& fifa22trait1, const std::string& fifa22trait2)
{
unsigned trait1Fifa15 = std::stoul(fifa15trait1);
unsigned trait2Fifa15 = std::stoul(fifa15trait2);
const unsigned trait1Fifa22 = std::stoul(fifa22trait1);
const unsigned trait2Fifa22 = std::stoul(fifa22trait2);
//claer everything for player apart from params which don't appear in fifa22 traits
unsigned mask = Fifa15::INFLEXIBILITY | Fifa15::DIVER | Fifa15::AVOIDS_USING_WEAKER_FOOT |
Fifa15::TRIES_TO_BEAT_OFFSIDE_TRAP | Fifa15::ARGUES_WITH_OFFICIALS | Fifa15::CROWD_FAVOURITE |
Fifa15::ACROBATIC_CLEARANCE;
trait1Fifa15 &= mask;
mask = Fifa15::FANCY_FEET | Fifa15::FANCY_FLICKS | Fifa15::STUTTER_PENALTY | Fifa15::CHIPPED_PENALTY |
Fifa15::DIVING_HEADER | Fifa15::DRIVEN_PASS;
trait2Fifa15 &= mask;
if (trait1Fifa22 & Fifa22::LONG_THROW_IN)
trait1Fifa15 |= Fifa15::LONG_THROW_IN;
if (trait1Fifa22 & Fifa22::TAKES_POWERFUL_DRIVEN_FREEKICKS)
trait1Fifa15 |= Fifa15::TAKES_POWERFUL_DRIVEN_FREEKICKS;
if (trait1Fifa22 & Fifa22::INJURY_PRONE)
trait1Fifa15 |= Fifa15::INJURY_PRONE;
if (trait1Fifa22 & Fifa22::SOLID_PLAYER)
trait1Fifa15 |= Fifa15::SOLID_PLAYER;
if (trait1Fifa22 & Fifa22::DIVES_INTO_TACKLES)
trait1Fifa15 |= Fifa15::DIVES_INTO_TACKLES;
if (trait1Fifa22 & Fifa22::SELFISH)
trait1Fifa15 |= Fifa15::SELFISH;
if (trait1Fifa22 & Fifa22::LEADERSHIP)
trait1Fifa15 |= Fifa15::LEADERSHIP;
if (trait1Fifa22 & Fifa22::EARLY_CROSSER)
trait1Fifa15 |= Fifa15::EARLY_CROSSER;
if (trait1Fifa22 & Fifa22::FINESSE_SHOT)
trait1Fifa15 |= Fifa15::FINESSE_SHOT;
if (trait1Fifa22 & Fifa22::FLAIR)
trait1Fifa15 |= Fifa15::FLAIR;
if (trait1Fifa22 & Fifa22::LONG_PASSER)
trait1Fifa15 |= Fifa15::LONG_PASSER;
if (trait1Fifa22 & Fifa22::LONG_SHOT_TAKER)
trait1Fifa15 |= Fifa15::LONG_SHOT_TAKER;
if (trait1Fifa22 & Fifa22::SPEED_DRIBBLER)
trait1Fifa15 |= Fifa15::SPEED_DRIBBLER;
if (trait1Fifa22 & Fifa22::PLAYMAKER)
trait1Fifa15 |= Fifa15::PLAYMAKER;
if (trait1Fifa22 & Fifa22::GK_LONG_THROWER)
trait1Fifa15 |= Fifa15::GK_LONG_THROWER;
if (trait1Fifa22 & Fifa22::POWER_HEADER)
trait1Fifa15 |= Fifa15::POWER_HEADER;
if (trait1Fifa22 & Fifa22::GIANT_THROW_IN)
trait1Fifa15 |= Fifa15::GIANT_THROW_IN;
if (trait1Fifa22 & Fifa22::OUTSIDE_FOOT_SHOT)
trait1Fifa15 |= Fifa15::OUTSIDE_FOOT_SHOT;
if (trait1Fifa22 & Fifa22::SWERVE)
trait1Fifa15 |= Fifa15::SWERVE;
if (trait1Fifa22 & Fifa22::SECOND_WIND)
trait1Fifa15 |= Fifa15::SECOND_WIND;
if (trait1Fifa22 & Fifa22::FANCY_PASSES)
trait2Fifa15 |= Fifa15::FANCY_PASSES;
if (trait1Fifa22 & Fifa22::BICYCLE_KICK)
trait2Fifa15 |= Fifa15::BICYCLE_KICK;
if (trait1Fifa22 & Fifa22::FANCY_PASSES)
trait2Fifa15 |= Fifa15::FANCY_PASSES;
if (trait1Fifa22 & Fifa22::GK_FLAT_KICK)
trait2Fifa15 |= Fifa15::GK_FLAT_KICK;
if (trait1Fifa22 & Fifa22::ONE_CLUB_PLAYER)
trait2Fifa15 |= Fifa15::ONE_CLUB_PLAYER;
if (trait1Fifa22 & Fifa22::TEAM_PLAYER)
trait2Fifa15 |= Fifa15::TEAM_PLAYER;
if (trait1Fifa22 & Fifa22::CHIP_SHOT)
trait2Fifa15 |= Fifa15::CHIP_SHOT;
if (trait1Fifa22 & Fifa22::TECHNICAL_DRIBBLE)
trait2Fifa15 |= Fifa15::TECHNICAL_DRIBBLE;
if (trait1Fifa22 & Fifa22::GK_ONE_ON_ONES)
trait1Fifa15 |= Fifa15::GK_ONE_ON_ONES;
if (trait1Fifa22 & Fifa22::GK_PUSHES_UP_FOR_CORNERS)
trait1Fifa15 |= Fifa15::GK_PUSHES_UP_FOR_CORNERS;
if (trait1Fifa22 & Fifa22::GK_PUNCHER)
trait1Fifa15 |= Fifa15::GK_PUNCHER;
fifa15trait1 = std::to_string(trait1Fifa15);
fifa15trait2 = std::to_string(trait2Fifa15);
}