Skip to content

Commit 12b115f

Browse files
committed
Make a HUGE refactoring. Not tested.
1 parent bb37df3 commit 12b115f

File tree

223 files changed

+2592
-2937
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

223 files changed

+2592
-2937
lines changed

lib/algorithms/jumpers_ranking/country_team_ranking_creator.dart

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import 'package:sj_manager/models/simulation/flow/jumper_dynamic_params.dart';
2-
import 'package:sj_manager/models/user_db/jumper/jumper.dart';
1+
import 'package:sj_manager/models/simulation/jumper/simulation_jumper.dart';
32

43
class CountryTeamRankingCreator {
54
const CountryTeamRankingCreator({
65
required this.jumpers,
7-
required this.dynamicParams,
86
});
97

10-
final List<Jumper> jumpers;
11-
final Map<Jumper, JumperDynamicParams> dynamicParams;
8+
final List<SimulationJumper> jumpers;
129

13-
List<Jumper> create() {
10+
List<SimulationJumper> create() {
1411
final ratings = {
1512
for (final jumper in jumpers) jumper: _calculateRating(jumper),
1613
};
@@ -21,12 +18,12 @@ class CountryTeamRankingCreator {
2118
return sorted;
2219
}
2320

24-
double _calculateRating(Jumper jumper) {
25-
return (jumper.skills.takeoffQuality / 1) +
26-
(jumper.skills.flightQuality / 1) +
27-
(jumper.skills.landingQuality / 10) +
28-
(dynamicParams[jumper]!.jumpsConsistency / 1.5) +
29-
(dynamicParams[jumper]!.form * 2);
21+
double _calculateRating(SimulationJumper jumper) {
22+
return (jumper.takeoffQuality / 1) +
23+
(jumper.flightQuality / 1) +
24+
(jumper.landingQuality / 10) +
25+
(jumper.jumpsConsistency / 1.5) +
26+
(jumper.form * 2);
3027
}
3128
}
3229

lib/algorithms/reports/default_jumper_level_report_creator.dart

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import 'package:sj_manager/models/simulation/flow/reports/jumper_level_description.dart';
2-
import 'package:sj_manager/models/simulation/flow/reports/jumper_reports.dart';
3-
import 'package:sj_manager/models/user_db/jumper/jumper.dart';
1+
import 'package:sj_manager/models/simulation/jumper/reports/jumper_level_description.dart';
2+
import 'package:sj_manager/models/simulation/jumper/reports/jumper_reports.dart';
3+
import 'package:sj_manager/models/simulation/jumper/simulation_jumper.dart';
44

55
class DefaultJumperLevelReportCreator {
66
DefaultJumperLevelReportCreator({
@@ -10,13 +10,9 @@ class DefaultJumperLevelReportCreator {
1010
final Map<JumperLevelDescription, double> requirements;
1111

1212
JumperLevelReport create({
13-
required Jumper jumper,
13+
required SimulationJumper jumper,
1414
}) {
15-
print(
16-
'Create a raport for: ${jumper.nameAndSurname(capitalizeSurname: true, reverse: true)}',
17-
);
18-
final takeoffAndFlightAvg =
19-
((jumper.skills.takeoffQuality) + (jumper.skills.flightQuality)) / 2;
15+
final takeoffAndFlightAvg = ((jumper.takeoffQuality) + (jumper.flightQuality)) / 2;
2016
var levelDescription = JumperLevelDescription.values.last;
2117
requirements.forEach((description, requirement) {
2218
if (takeoffAndFlightAvg > requirement) {
@@ -53,26 +49,26 @@ class DefaultJumperLevelReportCreator {
5349
return JumperCharacteristicOthernessStrength.values[indexInEnum];
5450
}
5551

56-
final averageSkillRating = (jumper.skills.takeoffQuality * 0.425) +
57-
(jumper.skills.flightQuality * 0.425) +
58-
(jumper.skills.landingQuality * 0.15);
52+
final averageSkillRating = (jumper.takeoffQuality * 0.425) +
53+
(jumper.flightQuality * 0.425) +
54+
(jumper.landingQuality * 0.15);
5955

6056
print('average skill rating: $averageSkillRating');
61-
print('jumper.skills.takeoffQuality: ${jumper.skills.takeoffQuality}');
62-
print('jumper.skills.flightQuality: ${jumper.skills.flightQuality}');
63-
print('jumper.skills.landingQuality: ${jumper.skills.landingQuality}');
57+
print('jumper.skills.takeoffQuality: ${jumper.takeoffQuality}');
58+
print('jumper.skills.flightQuality: ${jumper.flightQuality}');
59+
print('jumper.skills.landingQuality: ${jumper.landingQuality}');
6460

6561
return JumperLevelReport(
6662
levelDescription: levelDescription,
6763
characteristics: {
6864
JumperLevelCharacteristicCategory.takeoff: findAppropriateOthernessStrength(
69-
jumper.skills.takeoffQuality - averageSkillRating,
65+
jumper.takeoffQuality - averageSkillRating,
7066
),
7167
JumperLevelCharacteristicCategory.flight: findAppropriateOthernessStrength(
72-
jumper.skills.flightQuality - averageSkillRating,
68+
jumper.flightQuality - averageSkillRating,
7369
),
7470
JumperLevelCharacteristicCategory.landing: findAppropriateOthernessStrength(
75-
jumper.skills.landingQuality - averageSkillRating,
71+
jumper.landingQuality - averageSkillRating,
7672
),
7773
},
7874
);
Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:sj_manager/algorithms/reports/training_progress_report/training_report_creator.dart';
2-
import 'package:sj_manager/models/simulation/flow/reports/jumper_reports.dart';
2+
import 'package:sj_manager/models/simulation/jumper/reports/jumper_reports.dart';
33
import 'package:sj_manager/models/simulation/flow/simple_rating.dart';
44

55
class MonthlyJumperTrainingProgressReportCreator {
@@ -18,51 +18,51 @@ class MonthlyJumperTrainingProgressReportCreator {
1818

1919
static const double weekToMonthMultiplier = 2;
2020

21-
static const requirements = {
21+
static const Map<TrainingProgressCategory, Map<SimpleRating, double>> requirements = {
2222
TrainingProgressCategory.takeoff: {
23-
SimpleRating.excellent: 1,
24-
SimpleRating.veryGood: 0.66,
25-
SimpleRating.good: 0.33,
23+
SimpleRating.excellent: 0.4,
24+
SimpleRating.veryGood: 0.266,
25+
SimpleRating.good: 0.133,
2626
SimpleRating.correct: 0.0,
27-
SimpleRating.belowExpectations: -0.33,
28-
SimpleRating.poor: -0.66,
29-
SimpleRating.veryPoor: -1,
27+
SimpleRating.belowExpectations: -0.133,
28+
SimpleRating.poor: -0.266,
29+
SimpleRating.veryPoor: -0.4,
3030
},
3131
TrainingProgressCategory.flight: {
32-
SimpleRating.excellent: 1,
33-
SimpleRating.veryGood: 0.66,
34-
SimpleRating.good: 0.33,
32+
SimpleRating.excellent: 0.4,
33+
SimpleRating.veryGood: 0.266,
34+
SimpleRating.good: 0.133,
3535
SimpleRating.correct: 0.0,
36-
SimpleRating.belowExpectations: -0.33,
37-
SimpleRating.poor: -0.66,
38-
SimpleRating.veryPoor: -1,
36+
SimpleRating.belowExpectations: -0.133,
37+
SimpleRating.poor: -0.266,
38+
SimpleRating.veryPoor: -0.4,
3939
},
4040
TrainingProgressCategory.landing: {
41-
SimpleRating.excellent: 0.25,
42-
SimpleRating.veryGood: 0.15,
43-
SimpleRating.good: 0.075,
41+
SimpleRating.excellent: 0.2,
42+
SimpleRating.veryGood: 0.133,
43+
SimpleRating.good: 0.066,
4444
SimpleRating.correct: 0.0,
45-
SimpleRating.belowExpectations: -0.075,
46-
SimpleRating.poor: -0.15,
47-
SimpleRating.veryPoor: -0.25,
45+
SimpleRating.belowExpectations: -0.066,
46+
SimpleRating.poor: -0.133,
47+
SimpleRating.veryPoor: -0.2,
4848
},
4949
TrainingProgressCategory.consistency: {
50-
SimpleRating.excellent: 2,
51-
SimpleRating.veryGood: 1.33,
52-
SimpleRating.good: 0.66,
50+
SimpleRating.excellent: 5,
51+
SimpleRating.veryGood: 3,
52+
SimpleRating.good: 1.25,
5353
SimpleRating.correct: 0.0,
54-
SimpleRating.belowExpectations: -0.66,
55-
SimpleRating.poor: -1.33,
56-
SimpleRating.veryPoor: -2,
54+
SimpleRating.belowExpectations: -1.25,
55+
SimpleRating.poor: -3,
56+
SimpleRating.veryPoor: -5,
5757
},
5858
TrainingProgressCategory.form: {
59-
SimpleRating.excellent: 2.5,
60-
SimpleRating.veryGood: 1.666,
61-
SimpleRating.good: 0.833,
59+
SimpleRating.excellent: 3,
60+
SimpleRating.veryGood: 2,
61+
SimpleRating.good: 1,
6262
SimpleRating.correct: 0.0,
63-
SimpleRating.belowExpectations: -0.833,
64-
SimpleRating.poor: -1.666,
65-
SimpleRating.veryPoor: -2.5,
63+
SimpleRating.belowExpectations: -1,
64+
SimpleRating.poor: -2,
65+
SimpleRating.veryPoor: -3,
6666
},
6767
};
6868
}

lib/algorithms/reports/training_progress_report/training_report_creator.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:sj_manager/models/simulation/flow/reports/jumper_reports.dart';
1+
import 'package:sj_manager/models/simulation/jumper/reports/jumper_reports.dart';
22
import 'package:sj_manager/models/simulation/flow/simple_rating.dart';
33

44
class TrainingReportCreator {
@@ -8,7 +8,7 @@ class TrainingReportCreator {
88
});
99

1010
final Map<TrainingProgressCategory, List<double>> deltas;
11-
final Map<TrainingProgressCategory, Map<SimpleRating, num>> requirements;
11+
final Map<TrainingProgressCategory, Map<SimpleRating, double>> requirements;
1212

1313
TrainingReport? create() {
1414
final categories = deltas.keys;
@@ -47,11 +47,11 @@ class TrainingReportCreator {
4747
};
4848

4949
final averageRatingImpact =
50-
(ratings[TrainingProgressCategory.takeoff]!.impactValue * 30 +
51-
ratings[TrainingProgressCategory.flight]!.impactValue * 30 +
50+
(ratings[TrainingProgressCategory.takeoff]!.impactValue * 35 +
51+
ratings[TrainingProgressCategory.flight]!.impactValue * 35 +
5252
ratings[TrainingProgressCategory.landing]!.impactValue * 5 +
53-
ratings[TrainingProgressCategory.consistency]!.impactValue * 15 +
54-
ratings[TrainingProgressCategory.form]!.impactValue * 20) /
53+
ratings[TrainingProgressCategory.consistency]!.impactValue * 10 +
54+
ratings[TrainingProgressCategory.form]!.impactValue * 15) /
5555
100 *
5656
2.5;
5757
final generalRating = SimpleRating.fromImpactValue(averageRatingImpact.round());
Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:sj_manager/algorithms/reports/training_progress_report/training_report_creator.dart';
2-
import 'package:sj_manager/models/simulation/flow/reports/jumper_reports.dart';
2+
import 'package:sj_manager/models/simulation/jumper/reports/jumper_reports.dart';
33
import 'package:sj_manager/models/simulation/flow/simple_rating.dart';
44

55
class WeeklyJumperTrainingProgressReportCreator {
@@ -16,51 +16,51 @@ class WeeklyJumperTrainingProgressReportCreator {
1616
).create();
1717
}
1818

19-
static const requirements = {
19+
static const Map<TrainingProgressCategory, Map<SimpleRating, double>> requirements = {
2020
TrainingProgressCategory.takeoff: {
21-
SimpleRating.excellent: 0.5,
22-
SimpleRating.veryGood: 0.3,
23-
SimpleRating.good: 0.1,
21+
SimpleRating.excellent: 0.25,
22+
SimpleRating.veryGood: 0.125,
23+
SimpleRating.good: 0.075,
2424
SimpleRating.correct: 0.0,
25-
SimpleRating.belowExpectations: -0.1,
26-
SimpleRating.poor: -0.3,
27-
SimpleRating.veryPoor: -0.5,
25+
SimpleRating.belowExpectations: -0.075,
26+
SimpleRating.poor: -0.125,
27+
SimpleRating.veryPoor: -0.25,
2828
},
2929
TrainingProgressCategory.flight: {
30-
SimpleRating.excellent: 0.5,
31-
SimpleRating.veryGood: 0.3,
32-
SimpleRating.good: 0.1,
30+
SimpleRating.excellent: 0.25,
31+
SimpleRating.veryGood: 0.125,
32+
SimpleRating.good: 0.075,
3333
SimpleRating.correct: 0.0,
34-
SimpleRating.belowExpectations: -0.1,
35-
SimpleRating.poor: -0.3,
36-
SimpleRating.veryPoor: -0.5,
34+
SimpleRating.belowExpectations: -0.075,
35+
SimpleRating.poor: -0.125,
36+
SimpleRating.veryPoor: -0.25,
3737
},
3838
TrainingProgressCategory.landing: {
39-
SimpleRating.excellent: 0.15,
40-
SimpleRating.veryGood: 0.1,
41-
SimpleRating.good: 0.05,
39+
SimpleRating.excellent: 0.1,
40+
SimpleRating.veryGood: 0.066,
41+
SimpleRating.good: 0.033,
4242
SimpleRating.correct: 0.0,
43-
SimpleRating.belowExpectations: -0.05,
44-
SimpleRating.poor: -0.1,
45-
SimpleRating.veryPoor: -0.15,
43+
SimpleRating.belowExpectations: -0.033,
44+
SimpleRating.poor: -0.066,
45+
SimpleRating.veryPoor: -0.1,
4646
},
4747
TrainingProgressCategory.consistency: {
48-
SimpleRating.excellent: 0.6,
49-
SimpleRating.veryGood: 0.4,
50-
SimpleRating.good: 0.2,
48+
SimpleRating.excellent: 1.8,
49+
SimpleRating.veryGood: 1,
50+
SimpleRating.good: 0.4,
5151
SimpleRating.correct: 0.0,
52-
SimpleRating.belowExpectations: -0.2,
53-
SimpleRating.poor: -0.4,
54-
SimpleRating.veryPoor: -0.6,
52+
SimpleRating.belowExpectations: -0.4,
53+
SimpleRating.poor: -1,
54+
SimpleRating.veryPoor: -1.8,
5555
},
5656
TrainingProgressCategory.form: {
57-
SimpleRating.excellent: 1.2,
58-
SimpleRating.veryGood: 0.8,
59-
SimpleRating.good: 0.4,
57+
SimpleRating.excellent: 1.6,
58+
SimpleRating.veryGood: 1.06,
59+
SimpleRating.good: 0.53,
6060
SimpleRating.correct: 0.0,
61-
SimpleRating.belowExpectations: -0.4,
62-
SimpleRating.poor: -0.8,
63-
SimpleRating.veryPoor: -1.2,
61+
SimpleRating.belowExpectations: -0.53,
62+
SimpleRating.poor: -1.06,
63+
SimpleRating.veryPoor: -1.6,
6464
},
6565
};
6666
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import 'package:sj_manager/algorithms/start_form/start_form_algorithm.dart';
2+
import 'package:sj_manager/utils/random/random.dart';
3+
4+
class DefaultStartFormAlgorithm implements StartFormAlgorithm {
5+
const DefaultStartFormAlgorithm({
6+
required this.baseForm,
7+
});
8+
9+
/// Forma po zakończeniu poprzedniego sezonu
10+
final double baseForm;
11+
12+
@override
13+
double computeStartForm() {
14+
final random = normalDistributionRandom(
15+
(baseForm - 10) / 1.75,
16+
2,
17+
);
18+
var startForm = 6 + random;
19+
return startForm;
20+
}
21+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
abstract interface class StartFormAlgorithm {
2+
double computeStartForm();
3+
}
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import 'package:sj_manager/algorithms/subteam_appointments/overall/overall_appointments_algorithm.dart';
2-
import 'package:sj_manager/models/user_db/jumper/jumper.dart';
3-
import 'package:sj_manager/models/user_db/team/country_team/country_team.dart';
4-
import 'package:sj_manager/models/user_db/team/subteam.dart';
2+
import 'package:sj_manager/models/database/jumper/jumper_db_record.dart';
3+
import 'package:sj_manager/models/database/team/country_team/country_team.dart';
4+
import 'package:sj_manager/models/database/team/subteam.dart';
55

66
class DefaultOverallAppointmentsAlgorithm implements OverallAppointmentsAlgorithm {
77
@override
8-
Map<Subteam, List<Jumper>> createAppointments({required CountryTeam countryTeam}) {
8+
Map<Subteam, List<JumperDbRecord>> createAppointments(
9+
{required CountryTeam countryTeam}) {
910
throw UnimplementedError();
1011
}
1112
}
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import 'package:sj_manager/models/user_db/jumper/jumper.dart';
2-
import 'package:sj_manager/models/user_db/team/country_team/country_team.dart';
3-
import 'package:sj_manager/models/user_db/team/subteam.dart';
1+
import 'package:sj_manager/models/database/jumper/jumper_db_record.dart';
2+
import 'package:sj_manager/models/database/team/country_team/country_team.dart';
3+
import 'package:sj_manager/models/database/team/subteam.dart';
44

55
abstract interface class OverallAppointmentsAlgorithm {
66
const OverallAppointmentsAlgorithm();
77

8-
Map<Subteam, List<Jumper>> createAppointments({required CountryTeam countryTeam});
8+
Map<Subteam, List<JumperDbRecord>> createAppointments(
9+
{required CountryTeam countryTeam});
910
}

0 commit comments

Comments
 (0)