Skip to content

Commit

Permalink
Merge pull request #410 from Ariemeth/version_aware
Browse files Browse the repository at this point in the history
Moved existing files related to the v3 of the game to be under a v3
  • Loading branch information
Ariemeth authored Oct 18, 2024
2 parents 9a5d2d5 + 540b07e commit 34434b3
Show file tree
Hide file tree
Showing 184 changed files with 1,386 additions and 1,314 deletions.
102 changes: 57 additions & 45 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,81 +1,93 @@
import 'package:flutter/material.dart';
import 'package:gearforce/data/data.dart';
import 'package:gearforce/screens/roster/roster.dart';
import 'package:gearforce/v3/data/data.dart';
import 'package:gearforce/v3/screens/roster/roster.dart';
import 'package:gearforce/widgets/roster_id.dart';
import 'package:gearforce/widgets/settings.dart';
import 'package:gearforce/widgets/version_selector.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:provider/provider.dart';

const _title = 'Gearforce';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
final baseUri = Uri.base;
final idParam = baseUri.queryParameters['id'];

if (idParam != null && idParam.isNotEmpty) {
print('loading id: $idParam');
}

final appInfo = await PackageInfo.fromPlatform();
final settings = Settings();
await settings.load();

var data = Data();
data.load(settings).whenComplete(() {
runApp(MultiProvider(
providers: [
Provider(create: (_) => data),
Provider(create: (_) => settings),
],
child: GearForce(
data: data,
rosterId: RosterId(idParam),
version: appInfo.version,
settings: settings,
final versionSelector = VersionSelector();

final app = MaterialApp(
title: _title,
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
surface: Colors.white,
primary: Colors.blue,
),
));
});
),
initialRoute: '/v3.1',
routes: {
'/v3.1': (context) => GearForceV3(
rosterId: RosterId(idParam),
version: appInfo.version,
versionSelector: versionSelector,
),
},
);

runApp(app);
}

class GearForce extends StatefulWidget {
const GearForce({
class GearForceV3 extends StatefulWidget {
const GearForceV3({
Key? key,
required this.data,
required this.rosterId,
required this.version,
required this.settings,
required this.versionSelector,
}) : super(key: key);

final Data data;
final RosterId rosterId;
final String version;
final Settings settings;
final VersionSelector versionSelector;

@override
_GearForceState createState() => _GearForceState();
_GearForceV3State createState() => _GearForceV3State();
}

class _GearForceState extends State<GearForce> {
_GearForceState();
class _GearForceV3State extends State<GearForceV3> {
_GearForceV3State();

final Settings _settings = Settings();
final DataV3 _data = DataV3();

@override
void initState() {
super.initState();
_settings.load().then((_) {
_data.load(_settings).whenComplete(() {
setState(() {});
});
});
}

@override
Widget build(BuildContext context) {
final title = 'Gearforce';

return MaterialApp(
title: title,
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
surface: Colors.white,
primary: Colors.blue,
),
),
home: RosterWidget(
return MultiProvider(
providers: [
Provider(create: (_) => _data),
Provider(create: (_) => _settings),
],
child: RosterWidget(
title: title,
data: widget.data,
data: _data,
rosterId: widget.rosterId,
version: widget.version,
settings: widget.settings,
settings: _settings,
versionSelector: widget.versionSelector,
),
);
}
Expand Down
16 changes: 8 additions & 8 deletions lib/data/data.dart → lib/v3/data/data.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import 'dart:convert';
import 'package:flutter/services.dart';
import 'package:gearforce/data/unit_filter.dart';
import 'package:gearforce/models/factions/faction.dart';
import 'package:gearforce/models/factions/faction_type.dart';
import 'package:gearforce/models/unit/frame.dart';
import 'package:gearforce/models/unit/role.dart';
import 'package:gearforce/models/unit/unit.dart';
import 'package:gearforce/models/unit/unit_core.dart';
import 'package:gearforce/v3/data/unit_filter.dart';
import 'package:gearforce/v3/models/factions/faction.dart';
import 'package:gearforce/v3/models/factions/faction_type.dart';
import 'package:gearforce/v3/models/unit/frame.dart';
import 'package:gearforce/v3/models/unit/role.dart';
import 'package:gearforce/v3/models/unit/unit.dart';
import 'package:gearforce/v3/models/unit/unit_core.dart';
import 'package:gearforce/widgets/settings.dart';

const Map<FactionType, String> _factionUnitFiles = {
Expand All @@ -27,7 +27,7 @@ const Map<FactionType, String> _factionUnitFiles = {
FactionType.Utopia: 'assets/data/units/utopia.json',
};

class Data {
class DataV3 {
late List<Faction> _factions = [];

final Map<FactionType, List<Frame>> _factionFrames = {};
Expand Down
8 changes: 4 additions & 4 deletions lib/data/unit_filter.dart → lib/v3/data/unit_filter.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:gearforce/models/factions/faction_type.dart';
import 'package:gearforce/models/traits/trait.dart';
import 'package:gearforce/models/unit/model_type.dart';
import 'package:gearforce/models/unit/unit_core.dart';
import 'package:gearforce/v3/models/factions/faction_type.dart';
import 'package:gearforce/v3/models/traits/trait.dart';
import 'package:gearforce/v3/models/unit/model_type.dart';
import 'package:gearforce/v3/models/unit/unit_core.dart';

class UnitFilter {
final FactionType faction;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:gearforce/data/data.dart';
import 'package:gearforce/models/combatGroups/group.dart';
import 'package:gearforce/models/factions/faction.dart';
import 'package:gearforce/models/factions/faction_type.dart';
import 'package:gearforce/models/roster/roster.dart';
import 'package:gearforce/models/rules/options/combat_group_options.dart';
import 'package:gearforce/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/models/traits/trait.dart';
import 'package:gearforce/models/unit/command.dart';
import 'package:gearforce/models/unit/model_type.dart';
import 'package:gearforce/models/unit/unit.dart';
import 'package:gearforce/models/validation/validations.dart';
import 'package:gearforce/v3/data/data.dart';
import 'package:gearforce/v3/models/combatGroups/group.dart';
import 'package:gearforce/v3/models/factions/faction.dart';
import 'package:gearforce/v3/models/factions/faction_type.dart';
import 'package:gearforce/v3/models/roster/roster.dart';
import 'package:gearforce/v3/models/rules/options/combat_group_options.dart';
import 'package:gearforce/v3/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/v3/models/traits/trait.dart';
import 'package:gearforce/v3/models/unit/command.dart';
import 'package:gearforce/v3/models/unit/model_type.dart';
import 'package:gearforce/v3/models/unit/unit.dart';
import 'package:gearforce/v3/models/validation/validations.dart';

class CombatGroup extends ChangeNotifier {
Group _primary = Group(GroupType.Primary);
Expand Down Expand Up @@ -135,7 +135,7 @@ class CombatGroup extends ChangeNotifier {

factory CombatGroup.fromJson(
dynamic json,
Data data,
DataV3 data,
Faction faction,
RuleSet ruleset,
UnitRoster roster,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import 'package:flutter/material.dart';
import 'package:gearforce/models/combatGroups/combat_group.dart';
import 'package:gearforce/models/factions/faction.dart';
import 'package:gearforce/models/mods/veteranUpgrades/veteran_modification.dart';
import 'package:gearforce/models/roster/roster.dart';
import 'package:gearforce/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/models/traits/trait.dart';
import 'package:gearforce/models/unit/command.dart';
import 'package:gearforce/models/unit/model_type.dart';
import 'package:gearforce/models/unit/role.dart';
import 'package:gearforce/models/unit/unit.dart';
import 'package:gearforce/models/validation/validations.dart';
import 'package:gearforce/v3/models/combatGroups/combat_group.dart';
import 'package:gearforce/v3/models/factions/faction.dart';
import 'package:gearforce/v3/models/mods/veteranUpgrades/veteran_modification.dart';
import 'package:gearforce/v3/models/roster/roster.dart';
import 'package:gearforce/v3/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/v3/models/traits/trait.dart';
import 'package:gearforce/v3/models/unit/command.dart';
import 'package:gearforce/v3/models/unit/model_type.dart';
import 'package:gearforce/v3/models/unit/role.dart';
import 'package:gearforce/v3/models/unit/unit.dart';
import 'package:gearforce/v3/models/validation/validations.dart';

const RoleType _defaultRoleType = RoleType.GP;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import 'package:gearforce/data/data.dart';
import 'package:gearforce/models/factions/faction_type.dart';
import 'package:gearforce/models/rules/rulesets/black_talons/black_talons.dart';
import 'package:gearforce/models/rules/rulesets/caprice/caprice.dart';
import 'package:gearforce/models/rules/rulesets/cef/cef.dart';
import 'package:gearforce/models/rules/rulesets/eden/eden.dart';
import 'package:gearforce/models/rules/rulesets/leagueless/leagueless.dart';
import 'package:gearforce/models/rules/rulesets/north/north.dart';
import 'package:gearforce/models/rules/rulesets/nucoal/nucoal.dart';
import 'package:gearforce/models/rules/rulesets/peace_river/peace_river.dart';
import 'package:gearforce/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/models/rules/rulesets/south/south.dart';
import 'package:gearforce/models/rules/rulesets/utopia/utopia.dart';
import 'package:gearforce/v3/data/data.dart';
import 'package:gearforce/v3/models/factions/faction_type.dart';
import 'package:gearforce/v3/models/rules/rulesets/black_talons/black_talons.dart';
import 'package:gearforce/v3/models/rules/rulesets/caprice/caprice.dart';
import 'package:gearforce/v3/models/rules/rulesets/cef/cef.dart';
import 'package:gearforce/v3/models/rules/rulesets/eden/eden.dart';
import 'package:gearforce/v3/models/rules/rulesets/leagueless/leagueless.dart';
import 'package:gearforce/v3/models/rules/rulesets/north/north.dart';
import 'package:gearforce/v3/models/rules/rulesets/nucoal/nucoal.dart';
import 'package:gearforce/v3/models/rules/rulesets/peace_river/peace_river.dart';
import 'package:gearforce/v3/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/v3/models/rules/rulesets/south/south.dart';
import 'package:gearforce/v3/models/rules/rulesets/utopia/utopia.dart';
import 'package:gearforce/widgets/settings.dart';

const String _emptySubFactionName = '';
Expand All @@ -23,7 +23,7 @@ class Faction {

const Faction(this.factionType, this.rulesets, this.defaultSubFaction);

factory Faction.blackTalons(Data data, Settings settings) {
factory Faction.blackTalons(DataV3 data, Settings settings) {
final rulesets = [
BlackTalons(data, settings, name: _emptySubFactionName),
BlackTalons.BTRT(data, settings),
Expand All @@ -33,7 +33,7 @@ class Faction {
];
return Faction(FactionType.BlackTalon, rulesets, rulesets.first);
}
factory Faction.caprice(Data data, Settings settings) {
factory Faction.caprice(DataV3 data, Settings settings) {
final rulesets = [
Caprice(data, settings, name: _emptySubFactionName),
Caprice.CID(data, settings),
Expand All @@ -42,7 +42,7 @@ class Faction {
];
return Faction(FactionType.Caprice, rulesets, rulesets.first);
}
factory Faction.cef(Data data, Settings settings) {
factory Faction.cef(DataV3 data, Settings settings) {
final rulesets = [
CEF(data, settings, name: _emptySubFactionName),
CEF.CEFFF(data, settings),
Expand All @@ -51,7 +51,7 @@ class Faction {
];
return Faction(FactionType.CEF, rulesets, rulesets.first);
}
factory Faction.eden(Data data, Settings settings) {
factory Faction.eden(DataV3 data, Settings settings) {
final rulesets = [
Eden(data, settings, name: _emptySubFactionName),
Eden.EIF(data, settings),
Expand All @@ -60,7 +60,7 @@ class Faction {
];
return Faction(FactionType.Eden, rulesets, rulesets.first);
}
factory Faction.north(Data data, Settings settings) {
factory Faction.north(DataV3 data, Settings settings) {
final rulesets = [
North(data, settings, name: _emptySubFactionName),
North.NG(data, settings),
Expand All @@ -70,7 +70,7 @@ class Faction {
];
return Faction(FactionType.North, rulesets, rulesets.first);
}
factory Faction.nucoal(Data data, Settings settings) {
factory Faction.nucoal(DataV3 data, Settings settings) {
final rulesets = [
NuCoal(data, settings, name: _emptySubFactionName),
NuCoal.NSDF(data, settings),
Expand All @@ -82,7 +82,7 @@ class Faction {
];
return Faction(FactionType.NuCoal, rulesets, rulesets.first);
}
factory Faction.peaceRiver(Data data, Settings settings) {
factory Faction.peaceRiver(DataV3 data, Settings settings) {
final rulesets = [
PeaceRiver(data, settings, name: _emptySubFactionName),
PeaceRiver.PRDF(data, settings),
Expand All @@ -91,7 +91,7 @@ class Faction {
];
return Faction(FactionType.PeaceRiver, rulesets, rulesets.first);
}
factory Faction.south(Data data, Settings settings) {
factory Faction.south(DataV3 data, Settings settings) {
final rulesets = [
South(data, settings, name: _emptySubFactionName),
South.SRA(data, settings),
Expand All @@ -102,7 +102,7 @@ class Faction {
];
return Faction(FactionType.South, rulesets, rulesets.first);
}
factory Faction.utopia(Data data, Settings settings) {
factory Faction.utopia(DataV3 data, Settings settings) {
final rulesets = [
Utopia(data, settings, name: _emptySubFactionName),
Utopia.CAF(data, settings),
Expand All @@ -111,7 +111,7 @@ class Faction {
return Faction(FactionType.Utopia, rulesets, rulesets.first);
}

factory Faction.leagueless(Data data, Settings settings) {
factory Faction.leagueless(DataV3 data, Settings settings) {
final rulesets = [
Leagueless.North(data, settings),
Leagueless.South(data, settings),
Expand All @@ -122,7 +122,8 @@ class Faction {
return Faction(FactionType.Leagueless, rulesets, rulesets.first);
}

factory Faction.fromType(FactionType faction, Data data, Settings settings) {
factory Faction.fromType(
FactionType faction, DataV3 data, Settings settings) {
switch (faction) {
case FactionType.North:
return Faction.north(data, settings);
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'package:gearforce/models/combatGroups/combat_group.dart';
import 'package:gearforce/models/mods/modification_option.dart';
import 'package:gearforce/models/mods/saved_mod.dart';
import 'package:gearforce/models/roster/roster.dart';
import 'package:gearforce/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/models/rules/rule_types.dart';
import 'package:gearforce/models/unit/unit.dart';
import 'package:gearforce/models/unit/unit_attribute.dart';
import 'package:gearforce/v3/models/combatGroups/combat_group.dart';
import 'package:gearforce/v3/models/mods/modification_option.dart';
import 'package:gearforce/v3/models/mods/saved_mod.dart';
import 'package:gearforce/v3/models/roster/roster.dart';
import 'package:gearforce/v3/models/rules/rulesets/rule_set.dart';
import 'package:gearforce/v3/models/rules/rule_types.dart';
import 'package:gearforce/v3/models/unit/unit.dart';
import 'package:gearforce/v3/models/unit/unit_attribute.dart';

typedef RequirementCheck = bool Function(
RuleSet,
Expand Down
Loading

0 comments on commit 34434b3

Please sign in to comment.