Compare commits
2 Commits
15de073215
...
8b6fcad851
Author | SHA1 | Date | |
---|---|---|---|
8b6fcad851 | |||
440bee16fb |
@ -1,12 +1,12 @@
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/installation_state.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/installation_state.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/progress_view_model.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/progress_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/range_view_model.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/range_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/main/application/use_case/download_file_use_case.dart';
|
import 'package:minecraft_server_installer/main/application/use_case/download_file_use_case.dart';
|
||||||
import 'package:minecraft_server_installer/main/application/use_case/grant_file_permission_use_case.dart';
|
import 'package:minecraft_server_installer/main/application/use_case/grant_file_permission_use_case.dart';
|
||||||
import 'package:minecraft_server_installer/main/application/use_case/write_file_use_case.dart';
|
import 'package:minecraft_server_installer/main/application/use_case/write_file_use_case.dart';
|
||||||
import 'package:minecraft_server_installer/main/constants.dart';
|
import 'package:minecraft_server_installer/main/constants.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/game_version_view_model.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/game_version_view_model.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
class InstallationBloc extends Bloc<InstallationEvent, InstallationState> {
|
class InstallationBloc extends Bloc<InstallationEvent, InstallationState> {
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/progress_view_model.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/progress_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/range_view_model.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/range_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/game_version_view_model.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/game_version_view_model.dart';
|
||||||
|
|
||||||
class InstallationState with EquatableMixin {
|
class InstallationState with EquatableMixin {
|
||||||
static const _defaultRamSize = RangeViewModel(min: 2048, max: 2048);
|
static const _defaultRamSize = RangeViewModel(min: 2048, max: 2048);
|
@ -2,9 +2,9 @@ import 'package:file_picker/file_picker.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:gap/gap.dart';
|
import 'package:gap/gap.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/installation_bloc.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/installation_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/installation_state.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/installation_state.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/range_view_model.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/range_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/main/constants.dart';
|
import 'package:minecraft_server_installer/main/constants.dart';
|
||||||
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
|
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/framework/ui/game_version_dropdown.dart';
|
import 'package:minecraft_server_installer/vanilla/framework/ui/game_version_dropdown.dart';
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/gateway/installation_repository_impl.dart';
|
import 'package:minecraft_server_installer/main/adapter/gateway/installation_repository_impl.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/installation_bloc.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/installation_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/navigation_bloc.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/navigation_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/application/use_case/download_file_use_case.dart';
|
import 'package:minecraft_server_installer/main/application/use_case/download_file_use_case.dart';
|
||||||
import 'package:minecraft_server_installer/main/application/use_case/grant_file_permission_use_case.dart';
|
import 'package:minecraft_server_installer/main/application/use_case/grant_file_permission_use_case.dart';
|
||||||
import 'package:minecraft_server_installer/main/application/use_case/write_file_use_case.dart';
|
import 'package:minecraft_server_installer/main/application/use_case/write_file_use_case.dart';
|
||||||
@ -13,7 +13,7 @@ import 'package:minecraft_server_installer/main/framework/ui/about_tab.dart';
|
|||||||
import 'package:minecraft_server_installer/main/framework/ui/basic_configuration_tab.dart';
|
import 'package:minecraft_server_installer/main/framework/ui/basic_configuration_tab.dart';
|
||||||
import 'package:minecraft_server_installer/main/framework/ui/side_navigation_bar.dart';
|
import 'package:minecraft_server_installer/main/framework/ui/side_navigation_bar.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/gateway/vanilla_repository_impl.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/gateway/vanilla_repository_impl.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/vanilla_bloc.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/vanilla_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/application/use_case/get_game_version_list_use_case.dart';
|
import 'package:minecraft_server_installer/vanilla/application/use_case/get_game_version_list_use_case.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/framework/api/vanilla_api_service_impl.dart';
|
import 'package:minecraft_server_installer/vanilla/framework/api/vanilla_api_service_impl.dart';
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:gap/gap.dart';
|
import 'package:gap/gap.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/navigation_bloc.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/navigation_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/constants.dart';
|
import 'package:minecraft_server_installer/main/constants.dart';
|
||||||
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
|
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
|
84
lib/properties/adapter/gateway/server_properties_dto.dart
Normal file
84
lib/properties/adapter/gateway/server_properties_dto.dart
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import 'package:minecraft_server_installer/properties/domain/entity/server_properties.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/domain/enum/difficulty.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/domain/enum/game_mode.dart';
|
||||||
|
|
||||||
|
class ServerPropertiesDto {
|
||||||
|
final int serverPort;
|
||||||
|
final int maxPlayers;
|
||||||
|
final int spawnProtection;
|
||||||
|
final int viewDistance;
|
||||||
|
final bool pvp;
|
||||||
|
final String gameMode;
|
||||||
|
final String difficulty;
|
||||||
|
final bool enableCommandBlock;
|
||||||
|
final bool onlineMode;
|
||||||
|
final String motd;
|
||||||
|
|
||||||
|
const ServerPropertiesDto({
|
||||||
|
required this.serverPort,
|
||||||
|
required this.maxPlayers,
|
||||||
|
required this.spawnProtection,
|
||||||
|
required this.viewDistance,
|
||||||
|
required this.pvp,
|
||||||
|
required this.gameMode,
|
||||||
|
required this.difficulty,
|
||||||
|
required this.enableCommandBlock,
|
||||||
|
required this.onlineMode,
|
||||||
|
required this.motd,
|
||||||
|
});
|
||||||
|
|
||||||
|
ServerPropertiesDto.fromEntity(ServerProperties serverProperties)
|
||||||
|
: serverPort = serverProperties.serverPort,
|
||||||
|
maxPlayers = serverProperties.maxPlayers,
|
||||||
|
spawnProtection = serverProperties.spawnProtection,
|
||||||
|
viewDistance = serverProperties.viewDistance,
|
||||||
|
pvp = serverProperties.pvp,
|
||||||
|
gameMode = serverProperties.gameMode.value,
|
||||||
|
difficulty = serverProperties.difficulty.value,
|
||||||
|
enableCommandBlock = serverProperties.enableCommandBlock,
|
||||||
|
onlineMode = serverProperties.onlineMode,
|
||||||
|
motd = serverProperties.motd;
|
||||||
|
|
||||||
|
Map<String, String> toStringMap() => {
|
||||||
|
'server-port': serverPort.toString(),
|
||||||
|
'max-players': maxPlayers.toString(),
|
||||||
|
'spawn-protection': spawnProtection.toString(),
|
||||||
|
'view-distance': viewDistance.toString(),
|
||||||
|
'pvp': pvp.toString(),
|
||||||
|
'gamemode': gameMode,
|
||||||
|
'difficulty': difficulty,
|
||||||
|
'enable-command-block': enableCommandBlock.toString(),
|
||||||
|
'online-mode': onlineMode.toString(),
|
||||||
|
'motd': motd,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
extension _GameModeExtension on GameMode {
|
||||||
|
String get value {
|
||||||
|
switch (this) {
|
||||||
|
case GameMode.survival:
|
||||||
|
return 'survival';
|
||||||
|
case GameMode.creative:
|
||||||
|
return 'creative';
|
||||||
|
case GameMode.adventure:
|
||||||
|
return 'adventure';
|
||||||
|
case GameMode.spectator:
|
||||||
|
return 'spectator';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension _DifficultyExtension on Difficulty {
|
||||||
|
String get value {
|
||||||
|
switch (this) {
|
||||||
|
case Difficulty.peaceful:
|
||||||
|
return 'peaceful';
|
||||||
|
case Difficulty.easy:
|
||||||
|
return 'easy';
|
||||||
|
case Difficulty.normal:
|
||||||
|
return 'normal';
|
||||||
|
case Difficulty.hard:
|
||||||
|
return 'hard';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
import 'package:minecraft_server_installer/properties/adapter/gateway/server_properties_dto.dart';
|
||||||
|
|
||||||
|
abstract interface class ServerPropertiesFileStorage {
|
||||||
|
Future<void> writeServerProperties(ServerPropertiesDto serverPropertiesDto, String directoryPath);
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
import 'package:minecraft_server_installer/properties/adapter/gateway/server_properties_dto.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/adapter/gateway/server_properties_file_storage.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/application/repository/server_properties_repository.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/domain/entity/server_properties.dart';
|
||||||
|
|
||||||
|
class ServerPropertiesRepositoryImpl implements ServerPropertiesRepository {
|
||||||
|
final ServerPropertiesFileStorage _serverPropertiesFileStorage;
|
||||||
|
|
||||||
|
ServerPropertiesRepositoryImpl(this._serverPropertiesFileStorage);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> writeServerProperties(ServerProperties serverProperties, String directoryPath) =>
|
||||||
|
_serverPropertiesFileStorage.writeServerProperties(
|
||||||
|
ServerPropertiesDto.fromEntity(serverProperties),
|
||||||
|
directoryPath,
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
import 'package:minecraft_server_installer/properties/domain/entity/server_properties.dart';
|
||||||
|
|
||||||
|
abstract interface class ServerPropertiesRepository {
|
||||||
|
Future<void> writeServerProperties(ServerProperties serverProperties, String directoryPath);
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
import 'package:minecraft_server_installer/properties/application/repository/server_properties_repository.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/domain/entity/server_properties.dart';
|
||||||
|
|
||||||
|
class WriteServerPropertiesUseCase {
|
||||||
|
final ServerPropertiesRepository _serverPropertiesRepository;
|
||||||
|
|
||||||
|
WriteServerPropertiesUseCase(this._serverPropertiesRepository);
|
||||||
|
|
||||||
|
Future<void> call(ServerProperties serverProperties, String directoryPath) =>
|
||||||
|
_serverPropertiesRepository.writeServerProperties(serverProperties, directoryPath);
|
||||||
|
}
|
43
lib/properties/domain/entity/server_properties.dart
Normal file
43
lib/properties/domain/entity/server_properties.dart
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/domain/enum/difficulty.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/domain/enum/game_mode.dart';
|
||||||
|
|
||||||
|
class ServerProperties with EquatableMixin {
|
||||||
|
final int serverPort;
|
||||||
|
final int maxPlayers;
|
||||||
|
final int spawnProtection;
|
||||||
|
final int viewDistance;
|
||||||
|
final bool pvp;
|
||||||
|
final GameMode gameMode;
|
||||||
|
final Difficulty difficulty;
|
||||||
|
final bool enableCommandBlock;
|
||||||
|
final bool onlineMode;
|
||||||
|
final String motd;
|
||||||
|
|
||||||
|
const ServerProperties({
|
||||||
|
required this.serverPort,
|
||||||
|
required this.maxPlayers,
|
||||||
|
required this.spawnProtection,
|
||||||
|
required this.viewDistance,
|
||||||
|
required this.pvp,
|
||||||
|
required this.gameMode,
|
||||||
|
required this.difficulty,
|
||||||
|
required this.enableCommandBlock,
|
||||||
|
required this.onlineMode,
|
||||||
|
required this.motd,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [
|
||||||
|
serverPort,
|
||||||
|
maxPlayers,
|
||||||
|
spawnProtection,
|
||||||
|
viewDistance,
|
||||||
|
pvp,
|
||||||
|
gameMode,
|
||||||
|
difficulty,
|
||||||
|
enableCommandBlock,
|
||||||
|
onlineMode,
|
||||||
|
motd,
|
||||||
|
];
|
||||||
|
}
|
6
lib/properties/domain/enum/difficulty.dart
Normal file
6
lib/properties/domain/enum/difficulty.dart
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
enum Difficulty {
|
||||||
|
peaceful,
|
||||||
|
easy,
|
||||||
|
normal,
|
||||||
|
hard,
|
||||||
|
}
|
6
lib/properties/domain/enum/game_mode.dart
Normal file
6
lib/properties/domain/enum/game_mode.dart
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
enum GameMode {
|
||||||
|
survival,
|
||||||
|
creative,
|
||||||
|
adventure,
|
||||||
|
spectator,
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:minecraft_server_installer/properties/adapter/gateway/server_properties_dto.dart';
|
||||||
|
import 'package:minecraft_server_installer/properties/adapter/gateway/server_properties_file_storage.dart';
|
||||||
|
|
||||||
|
class ServerPropertiesFileStorageImpl implements ServerPropertiesFileStorage {
|
||||||
|
@override
|
||||||
|
Future<void> writeServerProperties(ServerPropertiesDto serverPropertiesDto, String directoryPath) async {
|
||||||
|
File file = File('$directoryPath/server.properties');
|
||||||
|
await file.create(recursive: true);
|
||||||
|
|
||||||
|
final propertiesMap = serverPropertiesDto.toStringMap();
|
||||||
|
await file.writeAsString(propertiesMap.entries.map((e) => '${e.key}=${e.value}').join('\n'));
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/game_version_view_model.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/game_version_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/vanilla_state.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/vanilla_state.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/application/use_case/get_game_version_list_use_case.dart';
|
import 'package:minecraft_server_installer/vanilla/application/use_case/get_game_version_list_use_case.dart';
|
||||||
|
|
||||||
class VanillaBloc extends Bloc<VanillaEvent, VanillaState> {
|
class VanillaBloc extends Bloc<VanillaEvent, VanillaState> {
|
@ -1,5 +1,5 @@
|
|||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/game_version_view_model.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/game_version_view_model.dart';
|
||||||
|
|
||||||
class VanillaState with EquatableMixin {
|
class VanillaState with EquatableMixin {
|
||||||
final List<GameVersionViewModel> gameVersions;
|
final List<GameVersionViewModel> gameVersions;
|
@ -1,10 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/adapter/presentation/installation_bloc.dart';
|
import 'package:minecraft_server_installer/main/adapter/presenter/installation_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
|
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/vanilla_bloc.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/vanilla_bloc.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/game_version_view_model.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/game_version_view_model.dart';
|
||||||
import 'package:minecraft_server_installer/vanilla/adapter/presentation/vanilla_state.dart';
|
import 'package:minecraft_server_installer/vanilla/adapter/presenter/vanilla_state.dart';
|
||||||
|
|
||||||
class GameVersionDropdown extends StatelessWidget {
|
class GameVersionDropdown extends StatelessWidget {
|
||||||
const GameVersionDropdown({super.key});
|
const GameVersionDropdown({super.key});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user