feat: unp4k data forge support

This commit is contained in:
xkeyC 2025-12-11 00:19:13 +08:00
parent 23e909e330
commit 0126ae811e
29 changed files with 6235 additions and 1154 deletions

View File

@ -32,6 +32,7 @@ import 'ui/home/game_doctor/game_doctor_ui.dart';
import 'ui/home/localization/advanced_localization_ui.dart';
import 'ui/index_ui.dart';
import 'ui/settings/upgrade_dialog.dart';
import 'ui/tools/unp4kc/dcb_viewer_ui.dart';
import 'ui/tools/unp4kc/unp4kc_ui.dart';
part 'app.g.dart';
@ -84,6 +85,11 @@ GoRouter router(Ref ref) {
builder: (_, _) => const SizedBox(),
routes: [
GoRoute(path: 'unp4kc', pageBuilder: (context, state) => myPageBuilder(context, state, const UnP4kcUI())),
GoRoute(
path: 'dcb_viewer',
pageBuilder: (context, state) =>
myPageBuilder(context, state, DcbViewerUI(initialFilePath: (state.extra as Map?)?['path'])),
),
],
),
GoRoute(path: '/guide', pageBuilder: (context, state) => myPageBuilder(context, state, const GuideUI())),

View File

@ -48,7 +48,7 @@ final class RouterProvider
}
}
String _$routerHash() => r'62dd494daf9b176547e30da83b1923ccdea13b4f';
String _$routerHash() => r'e89f3f0277879147cdce5373cbe2554821e9cd31';
@ProviderFor(AppGlobalModel)
const appGlobalModelProvider = AppGlobalModelProvider._();

View File

@ -38,6 +38,80 @@ Future<void> p4KExtractToDisk({
/// P4K
Future<void> p4KClose() => RustLib.instance.api.crateApiUnp4KApiP4KClose();
/// DataForge/DCB
Future<bool> dcbIsDataforge({required List<int> data}) =>
RustLib.instance.api.crateApiUnp4KApiDcbIsDataforge(data: data);
/// DCB
Future<void> dcbOpen({required List<int> data}) =>
RustLib.instance.api.crateApiUnp4KApiDcbOpen(data: data);
/// DCB
Future<BigInt> dcbGetRecordCount() =>
RustLib.instance.api.crateApiUnp4KApiDcbGetRecordCount();
/// DCB
Future<List<DcbRecordItem>> dcbGetRecordList() =>
RustLib.instance.api.crateApiUnp4KApiDcbGetRecordList();
/// XML
Future<String> dcbRecordToXml({required String path}) =>
RustLib.instance.api.crateApiUnp4KApiDcbRecordToXml(path: path);
/// XML
Future<String> dcbRecordToXmlByIndex({required BigInt index}) =>
RustLib.instance.api.crateApiUnp4KApiDcbRecordToXmlByIndex(index: index);
/// DCB
Future<List<DcbSearchResult>> dcbSearchAll({
required String query,
required BigInt maxResults,
}) => RustLib.instance.api.crateApiUnp4KApiDcbSearchAll(
query: query,
maxResults: maxResults,
);
/// DCB
/// merge: true = XMLfalse = XML
Future<void> dcbExportToDisk({
required String outputPath,
required String dcbPath,
required bool merge,
}) => RustLib.instance.api.crateApiUnp4KApiDcbExportToDisk(
outputPath: outputPath,
dcbPath: dcbPath,
merge: merge,
);
/// DCB
Future<void> dcbClose() => RustLib.instance.api.crateApiUnp4KApiDcbClose();
/// DCB
@freezed
sealed class DcbRecordItem with _$DcbRecordItem {
const factory DcbRecordItem({required String path, required BigInt index}) =
_DcbRecordItem;
}
@freezed
sealed class DcbSearchMatch with _$DcbSearchMatch {
const factory DcbSearchMatch({
required BigInt lineNumber,
required String lineContent,
}) = _DcbSearchMatch;
}
/// DCB
///
@freezed
sealed class DcbSearchResult with _$DcbSearchResult {
const factory DcbSearchResult({
required String path,
required BigInt index,
required List<DcbSearchMatch> matches,
}) = _DcbSearchResult;
}
/// P4K
@freezed
sealed class P4kFileItem with _$P4kFileItem {

View File

@ -11,6 +11,777 @@ part of 'unp4k_api.dart';
// dart format off
T _$identity<T>(T value) => value;
/// @nodoc
mixin _$DcbRecordItem {
String get path; BigInt get index;
/// Create a copy of DcbRecordItem
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$DcbRecordItemCopyWith<DcbRecordItem> get copyWith => _$DcbRecordItemCopyWithImpl<DcbRecordItem>(this as DcbRecordItem, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbRecordItem&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index));
}
@override
int get hashCode => Object.hash(runtimeType,path,index);
@override
String toString() {
return 'DcbRecordItem(path: $path, index: $index)';
}
}
/// @nodoc
abstract mixin class $DcbRecordItemCopyWith<$Res> {
factory $DcbRecordItemCopyWith(DcbRecordItem value, $Res Function(DcbRecordItem) _then) = _$DcbRecordItemCopyWithImpl;
@useResult
$Res call({
String path, BigInt index
});
}
/// @nodoc
class _$DcbRecordItemCopyWithImpl<$Res>
implements $DcbRecordItemCopyWith<$Res> {
_$DcbRecordItemCopyWithImpl(this._self, this._then);
final DcbRecordItem _self;
final $Res Function(DcbRecordItem) _then;
/// Create a copy of DcbRecordItem
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? path = null,Object? index = null,}) {
return _then(_self.copyWith(
path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable
as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable
as BigInt,
));
}
}
/// Adds pattern-matching-related methods to [DcbRecordItem].
extension DcbRecordItemPatterns on DcbRecordItem {
/// A variant of `map` that fallback to returning `orElse`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _DcbRecordItem value)? $default,{required TResult orElse(),}){
final _that = this;
switch (_that) {
case _DcbRecordItem() when $default != null:
return $default(_that);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// Callbacks receives the raw object, upcasted.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case final Subclass2 value:
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _DcbRecordItem value) $default,){
final _that = this;
switch (_that) {
case _DcbRecordItem():
return $default(_that);}
}
/// A variant of `map` that fallback to returning `null`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _DcbRecordItem value)? $default,){
final _that = this;
switch (_that) {
case _DcbRecordItem() when $default != null:
return $default(_that);case _:
return null;
}
}
/// A variant of `when` that fallback to an `orElse` callback.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String path, BigInt index)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _DcbRecordItem() when $default != null:
return $default(_that.path,_that.index);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// As opposed to `map`, this offers destructuring.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case Subclass2(:final field2):
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String path, BigInt index) $default,) {final _that = this;
switch (_that) {
case _DcbRecordItem():
return $default(_that.path,_that.index);}
}
/// A variant of `when` that fallback to returning `null`
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String path, BigInt index)? $default,) {final _that = this;
switch (_that) {
case _DcbRecordItem() when $default != null:
return $default(_that.path,_that.index);case _:
return null;
}
}
}
/// @nodoc
class _DcbRecordItem implements DcbRecordItem {
const _DcbRecordItem({required this.path, required this.index});
@override final String path;
@override final BigInt index;
/// Create a copy of DcbRecordItem
/// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
_$DcbRecordItemCopyWith<_DcbRecordItem> get copyWith => __$DcbRecordItemCopyWithImpl<_DcbRecordItem>(this, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbRecordItem&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index));
}
@override
int get hashCode => Object.hash(runtimeType,path,index);
@override
String toString() {
return 'DcbRecordItem(path: $path, index: $index)';
}
}
/// @nodoc
abstract mixin class _$DcbRecordItemCopyWith<$Res> implements $DcbRecordItemCopyWith<$Res> {
factory _$DcbRecordItemCopyWith(_DcbRecordItem value, $Res Function(_DcbRecordItem) _then) = __$DcbRecordItemCopyWithImpl;
@override @useResult
$Res call({
String path, BigInt index
});
}
/// @nodoc
class __$DcbRecordItemCopyWithImpl<$Res>
implements _$DcbRecordItemCopyWith<$Res> {
__$DcbRecordItemCopyWithImpl(this._self, this._then);
final _DcbRecordItem _self;
final $Res Function(_DcbRecordItem) _then;
/// Create a copy of DcbRecordItem
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? path = null,Object? index = null,}) {
return _then(_DcbRecordItem(
path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable
as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable
as BigInt,
));
}
}
/// @nodoc
mixin _$DcbSearchMatch {
BigInt get lineNumber; String get lineContent;
/// Create a copy of DcbSearchMatch
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$DcbSearchMatchCopyWith<DcbSearchMatch> get copyWith => _$DcbSearchMatchCopyWithImpl<DcbSearchMatch>(this as DcbSearchMatch, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbSearchMatch&&(identical(other.lineNumber, lineNumber) || other.lineNumber == lineNumber)&&(identical(other.lineContent, lineContent) || other.lineContent == lineContent));
}
@override
int get hashCode => Object.hash(runtimeType,lineNumber,lineContent);
@override
String toString() {
return 'DcbSearchMatch(lineNumber: $lineNumber, lineContent: $lineContent)';
}
}
/// @nodoc
abstract mixin class $DcbSearchMatchCopyWith<$Res> {
factory $DcbSearchMatchCopyWith(DcbSearchMatch value, $Res Function(DcbSearchMatch) _then) = _$DcbSearchMatchCopyWithImpl;
@useResult
$Res call({
BigInt lineNumber, String lineContent
});
}
/// @nodoc
class _$DcbSearchMatchCopyWithImpl<$Res>
implements $DcbSearchMatchCopyWith<$Res> {
_$DcbSearchMatchCopyWithImpl(this._self, this._then);
final DcbSearchMatch _self;
final $Res Function(DcbSearchMatch) _then;
/// Create a copy of DcbSearchMatch
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? lineNumber = null,Object? lineContent = null,}) {
return _then(_self.copyWith(
lineNumber: null == lineNumber ? _self.lineNumber : lineNumber // ignore: cast_nullable_to_non_nullable
as BigInt,lineContent: null == lineContent ? _self.lineContent : lineContent // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// Adds pattern-matching-related methods to [DcbSearchMatch].
extension DcbSearchMatchPatterns on DcbSearchMatch {
/// A variant of `map` that fallback to returning `orElse`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _DcbSearchMatch value)? $default,{required TResult orElse(),}){
final _that = this;
switch (_that) {
case _DcbSearchMatch() when $default != null:
return $default(_that);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// Callbacks receives the raw object, upcasted.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case final Subclass2 value:
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _DcbSearchMatch value) $default,){
final _that = this;
switch (_that) {
case _DcbSearchMatch():
return $default(_that);}
}
/// A variant of `map` that fallback to returning `null`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _DcbSearchMatch value)? $default,){
final _that = this;
switch (_that) {
case _DcbSearchMatch() when $default != null:
return $default(_that);case _:
return null;
}
}
/// A variant of `when` that fallback to an `orElse` callback.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( BigInt lineNumber, String lineContent)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _DcbSearchMatch() when $default != null:
return $default(_that.lineNumber,_that.lineContent);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// As opposed to `map`, this offers destructuring.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case Subclass2(:final field2):
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( BigInt lineNumber, String lineContent) $default,) {final _that = this;
switch (_that) {
case _DcbSearchMatch():
return $default(_that.lineNumber,_that.lineContent);}
}
/// A variant of `when` that fallback to returning `null`
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( BigInt lineNumber, String lineContent)? $default,) {final _that = this;
switch (_that) {
case _DcbSearchMatch() when $default != null:
return $default(_that.lineNumber,_that.lineContent);case _:
return null;
}
}
}
/// @nodoc
class _DcbSearchMatch implements DcbSearchMatch {
const _DcbSearchMatch({required this.lineNumber, required this.lineContent});
@override final BigInt lineNumber;
@override final String lineContent;
/// Create a copy of DcbSearchMatch
/// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
_$DcbSearchMatchCopyWith<_DcbSearchMatch> get copyWith => __$DcbSearchMatchCopyWithImpl<_DcbSearchMatch>(this, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbSearchMatch&&(identical(other.lineNumber, lineNumber) || other.lineNumber == lineNumber)&&(identical(other.lineContent, lineContent) || other.lineContent == lineContent));
}
@override
int get hashCode => Object.hash(runtimeType,lineNumber,lineContent);
@override
String toString() {
return 'DcbSearchMatch(lineNumber: $lineNumber, lineContent: $lineContent)';
}
}
/// @nodoc
abstract mixin class _$DcbSearchMatchCopyWith<$Res> implements $DcbSearchMatchCopyWith<$Res> {
factory _$DcbSearchMatchCopyWith(_DcbSearchMatch value, $Res Function(_DcbSearchMatch) _then) = __$DcbSearchMatchCopyWithImpl;
@override @useResult
$Res call({
BigInt lineNumber, String lineContent
});
}
/// @nodoc
class __$DcbSearchMatchCopyWithImpl<$Res>
implements _$DcbSearchMatchCopyWith<$Res> {
__$DcbSearchMatchCopyWithImpl(this._self, this._then);
final _DcbSearchMatch _self;
final $Res Function(_DcbSearchMatch) _then;
/// Create a copy of DcbSearchMatch
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? lineNumber = null,Object? lineContent = null,}) {
return _then(_DcbSearchMatch(
lineNumber: null == lineNumber ? _self.lineNumber : lineNumber // ignore: cast_nullable_to_non_nullable
as BigInt,lineContent: null == lineContent ? _self.lineContent : lineContent // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// @nodoc
mixin _$DcbSearchResult {
String get path; BigInt get index; List<DcbSearchMatch> get matches;
/// Create a copy of DcbSearchResult
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$DcbSearchResultCopyWith<DcbSearchResult> get copyWith => _$DcbSearchResultCopyWithImpl<DcbSearchResult>(this as DcbSearchResult, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbSearchResult&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index)&&const DeepCollectionEquality().equals(other.matches, matches));
}
@override
int get hashCode => Object.hash(runtimeType,path,index,const DeepCollectionEquality().hash(matches));
@override
String toString() {
return 'DcbSearchResult(path: $path, index: $index, matches: $matches)';
}
}
/// @nodoc
abstract mixin class $DcbSearchResultCopyWith<$Res> {
factory $DcbSearchResultCopyWith(DcbSearchResult value, $Res Function(DcbSearchResult) _then) = _$DcbSearchResultCopyWithImpl;
@useResult
$Res call({
String path, BigInt index, List<DcbSearchMatch> matches
});
}
/// @nodoc
class _$DcbSearchResultCopyWithImpl<$Res>
implements $DcbSearchResultCopyWith<$Res> {
_$DcbSearchResultCopyWithImpl(this._self, this._then);
final DcbSearchResult _self;
final $Res Function(DcbSearchResult) _then;
/// Create a copy of DcbSearchResult
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? path = null,Object? index = null,Object? matches = null,}) {
return _then(_self.copyWith(
path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable
as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable
as BigInt,matches: null == matches ? _self.matches : matches // ignore: cast_nullable_to_non_nullable
as List<DcbSearchMatch>,
));
}
}
/// Adds pattern-matching-related methods to [DcbSearchResult].
extension DcbSearchResultPatterns on DcbSearchResult {
/// A variant of `map` that fallback to returning `orElse`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _DcbSearchResult value)? $default,{required TResult orElse(),}){
final _that = this;
switch (_that) {
case _DcbSearchResult() when $default != null:
return $default(_that);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// Callbacks receives the raw object, upcasted.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case final Subclass2 value:
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _DcbSearchResult value) $default,){
final _that = this;
switch (_that) {
case _DcbSearchResult():
return $default(_that);}
}
/// A variant of `map` that fallback to returning `null`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _DcbSearchResult value)? $default,){
final _that = this;
switch (_that) {
case _DcbSearchResult() when $default != null:
return $default(_that);case _:
return null;
}
}
/// A variant of `when` that fallback to an `orElse` callback.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String path, BigInt index, List<DcbSearchMatch> matches)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _DcbSearchResult() when $default != null:
return $default(_that.path,_that.index,_that.matches);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// As opposed to `map`, this offers destructuring.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case Subclass2(:final field2):
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String path, BigInt index, List<DcbSearchMatch> matches) $default,) {final _that = this;
switch (_that) {
case _DcbSearchResult():
return $default(_that.path,_that.index,_that.matches);}
}
/// A variant of `when` that fallback to returning `null`
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String path, BigInt index, List<DcbSearchMatch> matches)? $default,) {final _that = this;
switch (_that) {
case _DcbSearchResult() when $default != null:
return $default(_that.path,_that.index,_that.matches);case _:
return null;
}
}
}
/// @nodoc
class _DcbSearchResult implements DcbSearchResult {
const _DcbSearchResult({required this.path, required this.index, required final List<DcbSearchMatch> matches}): _matches = matches;
@override final String path;
@override final BigInt index;
final List<DcbSearchMatch> _matches;
@override List<DcbSearchMatch> get matches {
if (_matches is EqualUnmodifiableListView) return _matches;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_matches);
}
/// Create a copy of DcbSearchResult
/// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
_$DcbSearchResultCopyWith<_DcbSearchResult> get copyWith => __$DcbSearchResultCopyWithImpl<_DcbSearchResult>(this, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbSearchResult&&(identical(other.path, path) || other.path == path)&&(identical(other.index, index) || other.index == index)&&const DeepCollectionEquality().equals(other._matches, _matches));
}
@override
int get hashCode => Object.hash(runtimeType,path,index,const DeepCollectionEquality().hash(_matches));
@override
String toString() {
return 'DcbSearchResult(path: $path, index: $index, matches: $matches)';
}
}
/// @nodoc
abstract mixin class _$DcbSearchResultCopyWith<$Res> implements $DcbSearchResultCopyWith<$Res> {
factory _$DcbSearchResultCopyWith(_DcbSearchResult value, $Res Function(_DcbSearchResult) _then) = __$DcbSearchResultCopyWithImpl;
@override @useResult
$Res call({
String path, BigInt index, List<DcbSearchMatch> matches
});
}
/// @nodoc
class __$DcbSearchResultCopyWithImpl<$Res>
implements _$DcbSearchResultCopyWith<$Res> {
__$DcbSearchResultCopyWithImpl(this._self, this._then);
final _DcbSearchResult _self;
final $Res Function(_DcbSearchResult) _then;
/// Create a copy of DcbSearchResult
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? path = null,Object? index = null,Object? matches = null,}) {
return _then(_DcbSearchResult(
path: null == path ? _self.path : path // ignore: cast_nullable_to_non_nullable
as String,index: null == index ? _self.index : index // ignore: cast_nullable_to_non_nullable
as BigInt,matches: null == matches ? _self._matches : matches // ignore: cast_nullable_to_non_nullable
as List<DcbSearchMatch>,
));
}
}
/// @nodoc
mixin _$P4kFileItem {

View File

@ -72,7 +72,7 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
String get codegenVersion => '2.11.1';
@override
int get rustContentHash => -1482626931;
int get rustContentHash => -1903117367;
static const kDefaultExternalLibraryLoaderConfig =
ExternalLibraryLoaderConfig(
@ -94,6 +94,31 @@ abstract class RustLibApi extends BaseApi {
required String shortcutName,
});
Future<void> crateApiUnp4KApiDcbClose();
Future<void> crateApiUnp4KApiDcbExportToDisk({
required String outputPath,
required String dcbPath,
required bool merge,
});
Future<BigInt> crateApiUnp4KApiDcbGetRecordCount();
Future<List<DcbRecordItem>> crateApiUnp4KApiDcbGetRecordList();
Future<bool> crateApiUnp4KApiDcbIsDataforge({required List<int> data});
Future<void> crateApiUnp4KApiDcbOpen({required List<int> data});
Future<String> crateApiUnp4KApiDcbRecordToXml({required String path});
Future<String> crateApiUnp4KApiDcbRecordToXmlByIndex({required BigInt index});
Future<List<DcbSearchResult>> crateApiUnp4KApiDcbSearchAll({
required String query,
required BigInt maxResults,
});
Future<List<String>> crateApiHttpApiDnsLookupIps({required String host});
Future<List<String>> crateApiHttpApiDnsLookupTxt({required String host});
@ -464,6 +489,240 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
argNames: ["targetPath", "shortcutName"],
);
@override
Future<void> crateApiUnp4KApiDcbClose() {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
return wire.wire__crate__api__unp4k_api__dcb_close(port_);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_unit,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbCloseConstMeta,
argValues: [],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbCloseConstMeta =>
const TaskConstMeta(debugName: "dcb_close", argNames: []);
@override
Future<void> crateApiUnp4KApiDcbExportToDisk({
required String outputPath,
required String dcbPath,
required bool merge,
}) {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_String(outputPath);
var arg1 = cst_encode_String(dcbPath);
var arg2 = cst_encode_bool(merge);
return wire.wire__crate__api__unp4k_api__dcb_export_to_disk(
port_,
arg0,
arg1,
arg2,
);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_unit,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbExportToDiskConstMeta,
argValues: [outputPath, dcbPath, merge],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbExportToDiskConstMeta =>
const TaskConstMeta(
debugName: "dcb_export_to_disk",
argNames: ["outputPath", "dcbPath", "merge"],
);
@override
Future<BigInt> crateApiUnp4KApiDcbGetRecordCount() {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
return wire.wire__crate__api__unp4k_api__dcb_get_record_count(port_);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_usize,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbGetRecordCountConstMeta,
argValues: [],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbGetRecordCountConstMeta =>
const TaskConstMeta(debugName: "dcb_get_record_count", argNames: []);
@override
Future<List<DcbRecordItem>> crateApiUnp4KApiDcbGetRecordList() {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
return wire.wire__crate__api__unp4k_api__dcb_get_record_list(port_);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_list_dcb_record_item,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbGetRecordListConstMeta,
argValues: [],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbGetRecordListConstMeta =>
const TaskConstMeta(debugName: "dcb_get_record_list", argNames: []);
@override
Future<bool> crateApiUnp4KApiDcbIsDataforge({required List<int> data}) {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_list_prim_u_8_loose(data);
return wire.wire__crate__api__unp4k_api__dcb_is_dataforge(
port_,
arg0,
);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_bool,
decodeErrorData: null,
),
constMeta: kCrateApiUnp4KApiDcbIsDataforgeConstMeta,
argValues: [data],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbIsDataforgeConstMeta =>
const TaskConstMeta(debugName: "dcb_is_dataforge", argNames: ["data"]);
@override
Future<void> crateApiUnp4KApiDcbOpen({required List<int> data}) {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_list_prim_u_8_loose(data);
return wire.wire__crate__api__unp4k_api__dcb_open(port_, arg0);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_unit,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbOpenConstMeta,
argValues: [data],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbOpenConstMeta =>
const TaskConstMeta(debugName: "dcb_open", argNames: ["data"]);
@override
Future<String> crateApiUnp4KApiDcbRecordToXml({required String path}) {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_String(path);
return wire.wire__crate__api__unp4k_api__dcb_record_to_xml(
port_,
arg0,
);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_String,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbRecordToXmlConstMeta,
argValues: [path],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbRecordToXmlConstMeta =>
const TaskConstMeta(debugName: "dcb_record_to_xml", argNames: ["path"]);
@override
Future<String> crateApiUnp4KApiDcbRecordToXmlByIndex({
required BigInt index,
}) {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_usize(index);
return wire.wire__crate__api__unp4k_api__dcb_record_to_xml_by_index(
port_,
arg0,
);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_String,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbRecordToXmlByIndexConstMeta,
argValues: [index],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbRecordToXmlByIndexConstMeta =>
const TaskConstMeta(
debugName: "dcb_record_to_xml_by_index",
argNames: ["index"],
);
@override
Future<List<DcbSearchResult>> crateApiUnp4KApiDcbSearchAll({
required String query,
required BigInt maxResults,
}) {
return handler.executeNormal(
NormalTask(
callFfi: (port_) {
var arg0 = cst_encode_String(query);
var arg1 = cst_encode_usize(maxResults);
return wire.wire__crate__api__unp4k_api__dcb_search_all(
port_,
arg0,
arg1,
);
},
codec: DcoCodec(
decodeSuccessData: dco_decode_list_dcb_search_result,
decodeErrorData: dco_decode_AnyhowException,
),
constMeta: kCrateApiUnp4KApiDcbSearchAllConstMeta,
argValues: [query, maxResults],
apiImpl: this,
),
);
}
TaskConstMeta get kCrateApiUnp4KApiDcbSearchAllConstMeta =>
const TaskConstMeta(
debugName: "dcb_search_all",
argNames: ["query", "maxResults"],
);
@override
Future<List<String>> crateApiHttpApiDnsLookupIps({required String host}) {
return handler.executeNormal(
@ -2660,6 +2919,43 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
return dco_decode_web_view_configuration(raw);
}
@protected
DcbRecordItem dco_decode_dcb_record_item(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
final arr = raw as List<dynamic>;
if (arr.length != 2)
throw Exception('unexpected arr length: expect 2 but see ${arr.length}');
return DcbRecordItem(
path: dco_decode_String(arr[0]),
index: dco_decode_usize(arr[1]),
);
}
@protected
DcbSearchMatch dco_decode_dcb_search_match(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
final arr = raw as List<dynamic>;
if (arr.length != 2)
throw Exception('unexpected arr length: expect 2 but see ${arr.length}');
return DcbSearchMatch(
lineNumber: dco_decode_usize(arr[0]),
lineContent: dco_decode_String(arr[1]),
);
}
@protected
DcbSearchResult dco_decode_dcb_search_result(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
final arr = raw as List<dynamic>;
if (arr.length != 3)
throw Exception('unexpected arr length: expect 3 but see ${arr.length}');
return DcbSearchResult(
path: dco_decode_String(arr[0]),
index: dco_decode_usize(arr[1]),
matches: dco_decode_list_dcb_search_match(arr[2]),
);
}
@protected
DownloadGlobalStat dco_decode_download_global_stat(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
@ -2725,6 +3021,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
return (raw as List<dynamic>).map(dco_decode_String).toList();
}
@protected
List<DcbRecordItem> dco_decode_list_dcb_record_item(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
return (raw as List<dynamic>).map(dco_decode_dcb_record_item).toList();
}
@protected
List<DcbSearchMatch> dco_decode_list_dcb_search_match(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
return (raw as List<dynamic>).map(dco_decode_dcb_search_match).toList();
}
@protected
List<DcbSearchResult> dco_decode_list_dcb_search_result(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
return (raw as List<dynamic>).map(dco_decode_dcb_search_result).toList();
}
@protected
List<DownloadTaskInfo> dco_decode_list_download_task_info(dynamic raw) {
// Codec=Dco (DartCObject based), see doc to use other codecs
@ -3083,6 +3397,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
return (sse_decode_web_view_configuration(deserializer));
}
@protected
DcbRecordItem sse_decode_dcb_record_item(SseDeserializer deserializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
var var_path = sse_decode_String(deserializer);
var var_index = sse_decode_usize(deserializer);
return DcbRecordItem(path: var_path, index: var_index);
}
@protected
DcbSearchMatch sse_decode_dcb_search_match(SseDeserializer deserializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
var var_lineNumber = sse_decode_usize(deserializer);
var var_lineContent = sse_decode_String(deserializer);
return DcbSearchMatch(
lineNumber: var_lineNumber,
lineContent: var_lineContent,
);
}
@protected
DcbSearchResult sse_decode_dcb_search_result(SseDeserializer deserializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
var var_path = sse_decode_String(deserializer);
var var_index = sse_decode_usize(deserializer);
var var_matches = sse_decode_list_dcb_search_match(deserializer);
return DcbSearchResult(
path: var_path,
index: var_index,
matches: var_matches,
);
}
@protected
DownloadGlobalStat sse_decode_download_global_stat(
SseDeserializer deserializer,
@ -3168,6 +3514,48 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
return ans_;
}
@protected
List<DcbRecordItem> sse_decode_list_dcb_record_item(
SseDeserializer deserializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
var len_ = sse_decode_i_32(deserializer);
var ans_ = <DcbRecordItem>[];
for (var idx_ = 0; idx_ < len_; ++idx_) {
ans_.add(sse_decode_dcb_record_item(deserializer));
}
return ans_;
}
@protected
List<DcbSearchMatch> sse_decode_list_dcb_search_match(
SseDeserializer deserializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
var len_ = sse_decode_i_32(deserializer);
var ans_ = <DcbSearchMatch>[];
for (var idx_ = 0; idx_ < len_; ++idx_) {
ans_.add(sse_decode_dcb_search_match(deserializer));
}
return ans_;
}
@protected
List<DcbSearchResult> sse_decode_list_dcb_search_result(
SseDeserializer deserializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
var len_ = sse_decode_i_32(deserializer);
var ans_ = <DcbSearchResult>[];
for (var idx_ = 0; idx_ < len_; ++idx_) {
ans_.add(sse_decode_dcb_search_result(deserializer));
}
return ans_;
}
@protected
List<DownloadTaskInfo> sse_decode_list_download_task_info(
SseDeserializer deserializer,
@ -3711,6 +4099,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
sse_encode_web_view_configuration(self, serializer);
}
@protected
void sse_encode_dcb_record_item(
DcbRecordItem self,
SseSerializer serializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_String(self.path, serializer);
sse_encode_usize(self.index, serializer);
}
@protected
void sse_encode_dcb_search_match(
DcbSearchMatch self,
SseSerializer serializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_usize(self.lineNumber, serializer);
sse_encode_String(self.lineContent, serializer);
}
@protected
void sse_encode_dcb_search_result(
DcbSearchResult self,
SseSerializer serializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_String(self.path, serializer);
sse_encode_usize(self.index, serializer);
sse_encode_list_dcb_search_match(self.matches, serializer);
}
@protected
void sse_encode_download_global_stat(
DownloadGlobalStat self,
@ -3778,6 +4197,42 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
}
}
@protected
void sse_encode_list_dcb_record_item(
List<DcbRecordItem> self,
SseSerializer serializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_i_32(self.length, serializer);
for (final item in self) {
sse_encode_dcb_record_item(item, serializer);
}
}
@protected
void sse_encode_list_dcb_search_match(
List<DcbSearchMatch> self,
SseSerializer serializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_i_32(self.length, serializer);
for (final item in self) {
sse_encode_dcb_search_match(item, serializer);
}
}
@protected
void sse_encode_list_dcb_search_result(
List<DcbSearchResult> self,
SseSerializer serializer,
) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_i_32(self.length, serializer);
for (final item in self) {
sse_encode_dcb_search_result(item, serializer);
}
}
@protected
void sse_encode_list_download_task_info(
List<DownloadTaskInfo> self,

View File

@ -61,6 +61,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
dynamic raw,
);
@protected
DcbRecordItem dco_decode_dcb_record_item(dynamic raw);
@protected
DcbSearchMatch dco_decode_dcb_search_match(dynamic raw);
@protected
DcbSearchResult dco_decode_dcb_search_result(dynamic raw);
@protected
DownloadGlobalStat dco_decode_download_global_stat(dynamic raw);
@ -82,6 +91,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
@protected
List<String> dco_decode_list_String(dynamic raw);
@protected
List<DcbRecordItem> dco_decode_list_dcb_record_item(dynamic raw);
@protected
List<DcbSearchMatch> dco_decode_list_dcb_search_match(dynamic raw);
@protected
List<DcbSearchResult> dco_decode_list_dcb_search_result(dynamic raw);
@protected
List<DownloadTaskInfo> dco_decode_list_download_task_info(dynamic raw);
@ -220,6 +238,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
SseDeserializer deserializer,
);
@protected
DcbRecordItem sse_decode_dcb_record_item(SseDeserializer deserializer);
@protected
DcbSearchMatch sse_decode_dcb_search_match(SseDeserializer deserializer);
@protected
DcbSearchResult sse_decode_dcb_search_result(SseDeserializer deserializer);
@protected
DownloadGlobalStat sse_decode_download_global_stat(
SseDeserializer deserializer,
@ -245,6 +272,21 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
@protected
List<String> sse_decode_list_String(SseDeserializer deserializer);
@protected
List<DcbRecordItem> sse_decode_list_dcb_record_item(
SseDeserializer deserializer,
);
@protected
List<DcbSearchMatch> sse_decode_list_dcb_search_match(
SseDeserializer deserializer,
);
@protected
List<DcbSearchResult> sse_decode_list_dcb_search_result(
SseDeserializer deserializer,
);
@protected
List<DownloadTaskInfo> sse_decode_list_download_task_info(
SseDeserializer deserializer,
@ -457,6 +499,41 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
return ans;
}
@protected
ffi.Pointer<wire_cst_list_dcb_record_item> cst_encode_list_dcb_record_item(
List<DcbRecordItem> raw,
) {
// Codec=Cst (C-struct based), see doc to use other codecs
final ans = wire.cst_new_list_dcb_record_item(raw.length);
for (var i = 0; i < raw.length; ++i) {
cst_api_fill_to_wire_dcb_record_item(raw[i], ans.ref.ptr[i]);
}
return ans;
}
@protected
ffi.Pointer<wire_cst_list_dcb_search_match> cst_encode_list_dcb_search_match(
List<DcbSearchMatch> raw,
) {
// Codec=Cst (C-struct based), see doc to use other codecs
final ans = wire.cst_new_list_dcb_search_match(raw.length);
for (var i = 0; i < raw.length; ++i) {
cst_api_fill_to_wire_dcb_search_match(raw[i], ans.ref.ptr[i]);
}
return ans;
}
@protected
ffi.Pointer<wire_cst_list_dcb_search_result>
cst_encode_list_dcb_search_result(List<DcbSearchResult> raw) {
// Codec=Cst (C-struct based), see doc to use other codecs
final ans = wire.cst_new_list_dcb_search_result(raw.length);
for (var i = 0; i < raw.length; ++i) {
cst_api_fill_to_wire_dcb_search_result(raw[i], ans.ref.ptr[i]);
}
return ans;
}
@protected
ffi.Pointer<wire_cst_list_download_task_info>
cst_encode_list_download_task_info(List<DownloadTaskInfo> raw) {
@ -611,6 +688,34 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
cst_api_fill_to_wire_web_view_configuration(apiObj, wireObj.ref);
}
@protected
void cst_api_fill_to_wire_dcb_record_item(
DcbRecordItem apiObj,
wire_cst_dcb_record_item wireObj,
) {
wireObj.path = cst_encode_String(apiObj.path);
wireObj.index = cst_encode_usize(apiObj.index);
}
@protected
void cst_api_fill_to_wire_dcb_search_match(
DcbSearchMatch apiObj,
wire_cst_dcb_search_match wireObj,
) {
wireObj.line_number = cst_encode_usize(apiObj.lineNumber);
wireObj.line_content = cst_encode_String(apiObj.lineContent);
}
@protected
void cst_api_fill_to_wire_dcb_search_result(
DcbSearchResult apiObj,
wire_cst_dcb_search_result wireObj,
) {
wireObj.path = cst_encode_String(apiObj.path);
wireObj.index = cst_encode_usize(apiObj.index);
wireObj.matches = cst_encode_list_dcb_search_match(apiObj.matches);
}
@protected
void cst_api_fill_to_wire_download_global_stat(
DownloadGlobalStat apiObj,
@ -865,6 +970,21 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
SseSerializer serializer,
);
@protected
void sse_encode_dcb_record_item(DcbRecordItem self, SseSerializer serializer);
@protected
void sse_encode_dcb_search_match(
DcbSearchMatch self,
SseSerializer serializer,
);
@protected
void sse_encode_dcb_search_result(
DcbSearchResult self,
SseSerializer serializer,
);
@protected
void sse_encode_download_global_stat(
DownloadGlobalStat self,
@ -895,6 +1015,24 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
@protected
void sse_encode_list_String(List<String> self, SseSerializer serializer);
@protected
void sse_encode_list_dcb_record_item(
List<DcbRecordItem> self,
SseSerializer serializer,
);
@protected
void sse_encode_list_dcb_search_match(
List<DcbSearchMatch> self,
SseSerializer serializer,
);
@protected
void sse_encode_list_dcb_search_result(
List<DcbSearchResult> self,
SseSerializer serializer,
);
@protected
void sse_encode_list_download_task_info(
List<DownloadTaskInfo> self,
@ -1147,6 +1285,198 @@ class RustLibWire implements BaseWire {
)
>();
void wire__crate__api__unp4k_api__dcb_close(int port_) {
return _wire__crate__api__unp4k_api__dcb_close(port_);
}
late final _wire__crate__api__unp4k_api__dcb_closePtr =
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int64)>>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_close',
);
late final _wire__crate__api__unp4k_api__dcb_close =
_wire__crate__api__unp4k_api__dcb_closePtr
.asFunction<void Function(int)>();
void wire__crate__api__unp4k_api__dcb_export_to_disk(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_strict> output_path,
ffi.Pointer<wire_cst_list_prim_u_8_strict> dcb_path,
bool merge,
) {
return _wire__crate__api__unp4k_api__dcb_export_to_disk(
port_,
output_path,
dcb_path,
merge,
);
}
late final _wire__crate__api__unp4k_api__dcb_export_to_diskPtr =
_lookup<
ffi.NativeFunction<
ffi.Void Function(
ffi.Int64,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Bool,
)
>
>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_export_to_disk',
);
late final _wire__crate__api__unp4k_api__dcb_export_to_disk =
_wire__crate__api__unp4k_api__dcb_export_to_diskPtr
.asFunction<
void Function(
int,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
bool,
)
>();
void wire__crate__api__unp4k_api__dcb_get_record_count(int port_) {
return _wire__crate__api__unp4k_api__dcb_get_record_count(port_);
}
late final _wire__crate__api__unp4k_api__dcb_get_record_countPtr =
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int64)>>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_get_record_count',
);
late final _wire__crate__api__unp4k_api__dcb_get_record_count =
_wire__crate__api__unp4k_api__dcb_get_record_countPtr
.asFunction<void Function(int)>();
void wire__crate__api__unp4k_api__dcb_get_record_list(int port_) {
return _wire__crate__api__unp4k_api__dcb_get_record_list(port_);
}
late final _wire__crate__api__unp4k_api__dcb_get_record_listPtr =
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int64)>>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_get_record_list',
);
late final _wire__crate__api__unp4k_api__dcb_get_record_list =
_wire__crate__api__unp4k_api__dcb_get_record_listPtr
.asFunction<void Function(int)>();
void wire__crate__api__unp4k_api__dcb_is_dataforge(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_loose> data,
) {
return _wire__crate__api__unp4k_api__dcb_is_dataforge(port_, data);
}
late final _wire__crate__api__unp4k_api__dcb_is_dataforgePtr =
_lookup<
ffi.NativeFunction<
ffi.Void Function(
ffi.Int64,
ffi.Pointer<wire_cst_list_prim_u_8_loose>,
)
>
>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_is_dataforge',
);
late final _wire__crate__api__unp4k_api__dcb_is_dataforge =
_wire__crate__api__unp4k_api__dcb_is_dataforgePtr
.asFunction<
void Function(int, ffi.Pointer<wire_cst_list_prim_u_8_loose>)
>();
void wire__crate__api__unp4k_api__dcb_open(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_loose> data,
) {
return _wire__crate__api__unp4k_api__dcb_open(port_, data);
}
late final _wire__crate__api__unp4k_api__dcb_openPtr =
_lookup<
ffi.NativeFunction<
ffi.Void Function(
ffi.Int64,
ffi.Pointer<wire_cst_list_prim_u_8_loose>,
)
>
>('frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_open');
late final _wire__crate__api__unp4k_api__dcb_open =
_wire__crate__api__unp4k_api__dcb_openPtr
.asFunction<
void Function(int, ffi.Pointer<wire_cst_list_prim_u_8_loose>)
>();
void wire__crate__api__unp4k_api__dcb_record_to_xml(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_strict> path,
) {
return _wire__crate__api__unp4k_api__dcb_record_to_xml(port_, path);
}
late final _wire__crate__api__unp4k_api__dcb_record_to_xmlPtr =
_lookup<
ffi.NativeFunction<
ffi.Void Function(
ffi.Int64,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
)
>
>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_record_to_xml',
);
late final _wire__crate__api__unp4k_api__dcb_record_to_xml =
_wire__crate__api__unp4k_api__dcb_record_to_xmlPtr
.asFunction<
void Function(int, ffi.Pointer<wire_cst_list_prim_u_8_strict>)
>();
void wire__crate__api__unp4k_api__dcb_record_to_xml_by_index(
int port_,
int index,
) {
return _wire__crate__api__unp4k_api__dcb_record_to_xml_by_index(
port_,
index,
);
}
late final _wire__crate__api__unp4k_api__dcb_record_to_xml_by_indexPtr =
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int64, ffi.UintPtr)>>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_record_to_xml_by_index',
);
late final _wire__crate__api__unp4k_api__dcb_record_to_xml_by_index =
_wire__crate__api__unp4k_api__dcb_record_to_xml_by_indexPtr
.asFunction<void Function(int, int)>();
void wire__crate__api__unp4k_api__dcb_search_all(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_strict> query,
int max_results,
) {
return _wire__crate__api__unp4k_api__dcb_search_all(
port_,
query,
max_results,
);
}
late final _wire__crate__api__unp4k_api__dcb_search_allPtr =
_lookup<
ffi.NativeFunction<
ffi.Void Function(
ffi.Int64,
ffi.Pointer<wire_cst_list_prim_u_8_strict>,
ffi.UintPtr,
)
>
>(
'frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_search_all',
);
late final _wire__crate__api__unp4k_api__dcb_search_all =
_wire__crate__api__unp4k_api__dcb_search_allPtr
.asFunction<
void Function(int, ffi.Pointer<wire_cst_list_prim_u_8_strict>, int)
>();
void wire__crate__api__http_api__dns_lookup_ips(
int port_,
ffi.Pointer<wire_cst_list_prim_u_8_strict> host,
@ -2989,6 +3319,54 @@ class RustLibWire implements BaseWire {
late final _cst_new_list_String = _cst_new_list_StringPtr
.asFunction<ffi.Pointer<wire_cst_list_String> Function(int)>();
ffi.Pointer<wire_cst_list_dcb_record_item> cst_new_list_dcb_record_item(
int len,
) {
return _cst_new_list_dcb_record_item(len);
}
late final _cst_new_list_dcb_record_itemPtr =
_lookup<
ffi.NativeFunction<
ffi.Pointer<wire_cst_list_dcb_record_item> Function(ffi.Int32)
>
>('frbgen_starcitizen_doctor_cst_new_list_dcb_record_item');
late final _cst_new_list_dcb_record_item = _cst_new_list_dcb_record_itemPtr
.asFunction<ffi.Pointer<wire_cst_list_dcb_record_item> Function(int)>();
ffi.Pointer<wire_cst_list_dcb_search_match> cst_new_list_dcb_search_match(
int len,
) {
return _cst_new_list_dcb_search_match(len);
}
late final _cst_new_list_dcb_search_matchPtr =
_lookup<
ffi.NativeFunction<
ffi.Pointer<wire_cst_list_dcb_search_match> Function(ffi.Int32)
>
>('frbgen_starcitizen_doctor_cst_new_list_dcb_search_match');
late final _cst_new_list_dcb_search_match = _cst_new_list_dcb_search_matchPtr
.asFunction<ffi.Pointer<wire_cst_list_dcb_search_match> Function(int)>();
ffi.Pointer<wire_cst_list_dcb_search_result> cst_new_list_dcb_search_result(
int len,
) {
return _cst_new_list_dcb_search_result(len);
}
late final _cst_new_list_dcb_search_resultPtr =
_lookup<
ffi.NativeFunction<
ffi.Pointer<wire_cst_list_dcb_search_result> Function(ffi.Int32)
>
>('frbgen_starcitizen_doctor_cst_new_list_dcb_search_result');
late final _cst_new_list_dcb_search_result =
_cst_new_list_dcb_search_resultPtr
.asFunction<
ffi.Pointer<wire_cst_list_dcb_search_result> Function(int)
>();
ffi.Pointer<wire_cst_list_download_task_info> cst_new_list_download_task_info(
int len,
) {
@ -3125,15 +3503,15 @@ final class wire_cst_list_prim_u_8_strict extends ffi.Struct {
external int len;
}
final class wire_cst_list_String extends ffi.Struct {
external ffi.Pointer<ffi.Pointer<wire_cst_list_prim_u_8_strict>> ptr;
final class wire_cst_list_prim_u_8_loose extends ffi.Struct {
external ffi.Pointer<ffi.Uint8> ptr;
@ffi.Int32()
external int len;
}
final class wire_cst_list_prim_u_8_loose extends ffi.Struct {
external ffi.Pointer<ffi.Uint8> ptr;
final class wire_cst_list_String extends ffi.Struct {
external ffi.Pointer<ffi.Pointer<wire_cst_list_prim_u_8_strict>> ptr;
@ffi.Int32()
external int len;
@ -3180,6 +3558,50 @@ final class wire_cst_web_view_configuration extends ffi.Struct {
external ffi.Pointer<wire_cst_list_prim_u_8_strict> user_agent;
}
final class wire_cst_dcb_record_item extends ffi.Struct {
external ffi.Pointer<wire_cst_list_prim_u_8_strict> path;
@ffi.UintPtr()
external int index;
}
final class wire_cst_list_dcb_record_item extends ffi.Struct {
external ffi.Pointer<wire_cst_dcb_record_item> ptr;
@ffi.Int32()
external int len;
}
final class wire_cst_dcb_search_match extends ffi.Struct {
@ffi.UintPtr()
external int line_number;
external ffi.Pointer<wire_cst_list_prim_u_8_strict> line_content;
}
final class wire_cst_list_dcb_search_match extends ffi.Struct {
external ffi.Pointer<wire_cst_dcb_search_match> ptr;
@ffi.Int32()
external int len;
}
final class wire_cst_dcb_search_result extends ffi.Struct {
external ffi.Pointer<wire_cst_list_prim_u_8_strict> path;
@ffi.UintPtr()
external int index;
external ffi.Pointer<wire_cst_list_dcb_search_match> matches;
}
final class wire_cst_list_dcb_search_result extends ffi.Struct {
external ffi.Pointer<wire_cst_dcb_search_result> ptr;
@ffi.Int32()
external int len;
}
final class wire_cst_download_task_info extends ffi.Struct {
@ffi.UintPtr()
external int id;

24
lib/data/dcb_data.dart Normal file
View File

@ -0,0 +1,24 @@
/// DCB
class DcbRecordData {
final String path;
final int index;
const DcbRecordData({required this.path, required this.index});
}
/// DCB
class DcbSearchMatchData {
final int lineNumber;
final String lineContent;
const DcbSearchMatchData({required this.lineNumber, required this.lineContent});
}
/// DCB
class DcbSearchResultData {
final String path;
final int index;
final List<DcbSearchMatchData> matches;
const DcbSearchResultData({required this.path, required this.index, required this.matches});
}

File diff suppressed because it is too large Load Diff

View File

@ -33,228 +33,228 @@ class MessageLookup extends MessageLookupByLibrary {
static String m5(v0) => "新しいバージョンが見つかりました -> ${v0}";
static String m6(v0) => "ゲームが異常終了しました:${v0}";
static String m9(v0) => "ゲームが異常終了しました:${v0}";
static String m7(v0) => "info:${v0}、右下の「グループに参加」をクリックしてフィードバックしてください。";
static String m10(v0) => "info:${v0}、右下の「グループに参加」をクリックしてフィードバックしてください。";
static String m8(v0) => "分析完了、${v0}個の問題が見つかりました";
static String m11(v0) => "分析完了、${v0}個の問題が見つかりました";
static String m9(v0, v1) =>
static String m12(v0, v1) =>
"フォルダの作成に失敗しました。手動で作成してみてください。\nディレクトリ:${v0} \nエラー:${v1}";
static String m10(v0) => "修復に失敗しました、${v0}";
static String m13(v0) => "修復に失敗しました、${v0}";
static String m11(v0) => "サポートされていないオペレーティングシステム:${v0}";
static String m14(v0) => "サポートされていないオペレーティングシステム:${v0}";
static String m12(v0) =>
static String m15(v0) =>
"レジストリにForcedPhysicalSectorSizeInBytes値を追加して古いデバイスをエミュレートします。ハードディスクパーティション(${v0})";
static String m13(v0) =>
static String m16(v0) =>
"中国語のインストールパスです!これはゲームの起動/インストールエラーを引き起こす可能性があります!(${v0}、RSIランチャーでインストールパスを変更してください。";
static String m14(v0) =>
static String m17(v0) =>
"クリックして修復すると、LIVEフォルダが作成されます。完了したらインストールを再試行してください。(${v0})";
static String m15(v0) => "修正提案: ${v0}";
static String m18(v0) => "修正提案: ${v0}";
static String m16(v0) =>
static String m19(v0) =>
"このゲームを実行するには、少なくとも16GBの物理メモリRAMが必要です。現在のサイズ${v0}";
static String m17(v0) => "システムをアップグレードしてください (${v0})";
static String m20(v0) => "システムをアップグレードしてください (${v0})";
static String m18(v0) => "ワンクリック診断 -> ${v0}";
static String m21(v0) => "ワンクリック診断 -> ${v0}";
static String m19(v0) => "検証済み:${v0}";
static String m22(v0) => "検証済み:${v0}";
static String m20(v0) => "検証中... (${v0}%)";
static String m23(v0) => "検証中... (${v0}%)";
static String m21(v0, v1) => "ダウンロード: ${v0}/s アップロード:${v1}/s";
static String m24(v0, v1) => "ダウンロード: ${v0}/s アップロード:${v1}/s";
static String m22(v0) => "ダウンロード済み:${v0}";
static String m25(v0) => "ダウンロード済み:${v0}";
static String m23(v0) => "ダウンロード中... (${v0}%)";
static String m26(v0) => "ダウンロード中... (${v0}%)";
static String m24(v0) => "ステータス:${v0}";
static String m27(v0) => "ステータス:${v0}";
static String m25(v1) => "合計サイズ:${v1}";
static String m28(v1) => "合計サイズ:${v1}";
static String m26(v0) => "アップロード済み:${v0}";
static String m29(v0) => "アップロード済み:${v0}";
static String m27(v0, v1, v2, v3, v4) =>
static String m30(v0, v1, v2, v3, v4) =>
"ゲームが正常に終了しませんでした\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n診断情報:${v3} \n${v4}";
static String m28(v0) => "ウェブローカリゼーションリソースの初期化に失敗しました!${v0}";
static String m31(v0) => "ウェブローカリゼーションリソースの初期化に失敗しました!${v0}";
static String m29(v0) => "スキャン完了、${v0}個の有効なインストールディレクトリが見つかりました";
static String m32(v0) => "スキャン完了、${v0}個の有効なインストールディレクトリが見つかりました";
static String m30(v0) => "${v0}";
static String m33(v0) => "${v0}";
static String m31(v0) => "読み込まれたローカリゼーションバージョン:${v0}";
static String m34(v0) => "読み込まれたローカリゼーションバージョン:${v0}";
static String m32(v0) => "高度なローカリゼーション -> ${v0}";
static String m35(v0) => "高度なローカリゼーション -> ${v0}";
static String m33(v0, v1) => "ローカリゼーションテキスト行数:${v0} P4Kテキスト行数${v1}";
static String m36(v0, v1) => "ローカリゼーションテキスト行数:${v0} P4Kテキスト行数${v1}";
static String m34(v0) => "プレビュー:${v0}";
static String m37(v0) => "プレビュー:${v0}";
static String m35(v0) => "${v0}にインストールしたローカリゼーションに新しいバージョンがあります!";
static String m38(v0) => "${v0}にインストールしたローカリゼーションに新しいバージョンがあります!";
static String m36(v1, v2) =>
static String m39(v1, v2) =>
"RSIサーバーが報告するバージョン${v1} \n\nローカルバージョン:${v2} \n\nRSI Launcherを使用してゲームを更新することをお勧めします";
static String m39(v0) => "コミュニティ入力メソッドサポート:${v0}";
static String m42(v0) => "コミュニティ入力メソッドサポート:${v0}";
static String m40(v0) => "コミュニティ入力メソッドサポートが更新されました:${v0}";
static String m43(v0) => "コミュニティ入力メソッドサポートが更新されました:${v0}";
static String m41(v0) => "チャネル:${v0}";
static String m44(v0) => "チャネル:${v0}";
static String m42(v0) => "有効(${v0}";
static String m45(v0) => "有効(${v0}";
static String m43(v0) => "インストールエラー!\n\n ${v0}";
static String m46(v0) => "インストールエラー!\n\n ${v0}";
static String m44(v0) => "インストール済みバージョン:${v0}";
static String m47(v0) => "インストール済みバージョン:${v0}";
static String m45(v0) => "更新時間:${v0}";
static String m48(v0) => "更新時間:${v0}";
static String m46(v0) => "バージョン番号:${v0}";
static String m47(v0, v1, v2, v3, v4) =>
"エリア:${v0} プレイヤー操縦:${v1} 衝突エンティティ:${v2} \n衝突ビークル:${v3} 衝突距離:${v4} ";
static String m48(v0, v2, v3) => "被害者ID${v0} \n位置:${v2} \nエリア:${v3}";
static String m49(v0) => "詳細情報:${v0}";
static String m49(v0) => "バージョン番号:${v0}";
static String m50(v0, v1, v2, v3, v4) =>
"エリア:${v0} プレイヤー操縦:${v1} 衝突エンティティ:${v2} \n衝突ビークル:${v3} 衝突距離:${v4} ";
static String m51(v0, v2, v3) => "被害者ID${v0} \n位置:${v2} \nエリア:${v3}";
static String m52(v0) => "詳細情報:${v0}";
static String m53(v0, v1, v2, v3, v4) =>
"キル数:${v0} デス数:${v1} 自殺回数:${v2} \n機体破壊(ソフトデス):${v3} 機体破壊(解体):${v4}";
static String m51(v0, v1) => "モード:${v0} 所要時間:${v1}";
static String m54(v0, v1) => "モード:${v0} 所要時間:${v1}";
static String m52(v0, v1, v2) => "${v0}時間${v1}${v2}";
static String m55(v0, v1, v2) => "${v0}時間${v1}${v2}";
static String m53(v0, v1) => "プレイヤーID${v0} 位置:${v1}";
static String m56(v0, v1) => "プレイヤーID${v0} 位置:${v1}";
static String m54(v0) => "プレイヤー ${v0} ログイン中...";
static String m57(v0) => "プレイヤー ${v0} ログイン中...";
static String m55(v0, v1, v2, v3, v4) =>
static String m58(v0, v1, v2, v3, v4) =>
"ビークルモデル:${v0} \nエリア:${v1} \n損傷レベル:${v2} ${v3} 責任者:${v4}";
static String m56(v0) => "接続に失敗: ${v0}";
static String m59(v0) => "接続に失敗: ${v0}";
static String m57(v0) => "${v0}日前";
static String m60(v0) => "${v0}日前";
static String m58(v0) => "ルーム退出に失敗: ${v0}";
static String m61(v0) => "ルーム退出に失敗: ${v0}";
static String m59(v0) => "認証コードの取得に失敗: ${v0}";
static String m62(v0) => "認証コードの取得に失敗: ${v0}";
static String m60(v0) => "${v0}時間前";
static String m63(v0) => "${v0}時間前";
static String m61(v0) => "${v0}をキックしてもよろしいですか?";
static String m64(v0) => "${v0}をキックしてもよろしいですか?";
static String m62(v0) => "メンバーのキックに失敗: ${v0}";
static String m65(v0) => "メンバーのキックに失敗: ${v0}";
static String m63(v0) => "ルームリストの読み込みに失敗: ${v0}";
static String m66(v0) => "ルームリストの読み込みに失敗: ${v0}";
static String m64(v0, v1) => "${v0}/${v1} メンバー";
static String m67(v0, v1) => "${v0}/${v1} メンバー";
static String m65(v0) => "${v0}分前";
static String m68(v0) => "${v0}分前";
static String m66(v0) => "再接続に失敗: ${v0}";
static String m69(v0) => "再接続に失敗: ${v0}";
static String m67(v0) => "再接続に失敗、${v0}回試行済み";
static String m70(v0) => "再接続に失敗、${v0}回試行済み";
static String m68(v0) => "登録に失敗: ${v0}";
static String m71(v0) => "登録に失敗: ${v0}";
static String m69(v0) => "${v0}にオーナー権限を移譲してもよろしいですか?";
static String m72(v0) => "${v0}にオーナー権限を移譲してもよろしいですか?";
static String m70(v0) => "オーナー権限の移譲に失敗: ${v0}";
static String m73(v0) => "オーナー権限の移譲に失敗: ${v0}";
static String m71(v0) => "現在の状態:${v0}";
static String m74(v0) => "現在の状態:${v0}";
static String m72(v0, v1, v2) => "${v0} 最小値: ${v1} / 最大値: ${v2}";
static String m75(v0, v1, v2) => "${v0} 最小値: ${v1} / 最大値: ${v2}";
static String m73(v0) => "パフォーマンス最適化 -> ${v0}";
static String m76(v0) => "パフォーマンス最適化 -> ${v0}";
static String m74(v0) =>
static String m77(v0) =>
"キャッシュサイズ ${v0}MB、ツールボックスがダウンロードしたローカリゼーションファイルキャッシュをクリアします。インストール済みのローカリゼーションには影響しません";
static String m75(v0) =>
static String m78(v0) =>
"設定されたコア数:${v0} この機能はホームページのツールボックスワンクリック起動またはツールのRSIランチャー管理者モードに適用されます。0の場合、この機能は有効になりません";
static String m76(v0) => "⚠ AnalyticsApi.touch(\"launch\") エラー: ${v0} - 続行";
static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") エラー: ${v0} - 続行";
static String m77(v0) => "✗ appModel.initApp() エラー: ${v0}";
static String m80(v0) => "✗ appModel.initApp() エラー: ${v0}";
static String m78(v0) => "⚠ aria2cModelProvider 初期化エラー: ${v0}";
static String m81(v0) => "⚠ aria2cModelProvider 初期化エラー: ${v0}";
static String m79(v0) => "⚠ URLConf.checkHost() エラー: ${v0} - 続行";
static String m82(v0) => "⚠ URLConf.checkHost() エラー: ${v0} - 続行";
static String m80(v0) => "⚠ appModel.checkUpdate() エラー: ${v0} - 続行";
static String m83(v0) => "⚠ appModel.checkUpdate() エラー: ${v0} - 続行";
static String m81(v0) => "[診断] Hive boxesを閉じることに失敗: ${v0}";
static String m84(v0) => "[診断] Hive boxesを閉じることに失敗: ${v0}";
static String m82(v0) => "[診断] データベースディレクトリが存在しません: ${v0}";
static String m85(v0) => "[診断] データベースディレクトリが存在しません: ${v0}";
static String m83(v0) => "[診断] データベースディレクトリを削除中: ${v0}";
static String m86(v0) => "[診断] データベースディレクトリを削除中: ${v0}";
static String m84(v0) => "[診断] ${v0}";
static String m87(v0) => "[診断] ${v0}";
static String m85(v0) => "診断モード - ステップ ${v0}";
static String m88(v0) => "診断モード - ステップ ${v0}";
static String m86(v0) => "✗ Hive.openBox(\"app_conf\") エラー: ${v0}";
static String m89(v0) => "✗ Hive.openBox(\"app_conf\") エラー: ${v0}";
static String m87(v0) => "[${v0}] ⚠ ログファイルが存在しません";
static String m90(v0) => "[${v0}] ⚠ ログファイルが存在しません";
static String m88(v0) => "[${v0}] --- ログ読み取り完了 (最後の1000行を表示) ---";
static String m91(v0) => "[${v0}] --- ログ読み取り完了 (最後の1000行を表示) ---";
static String m89(v0, v1) => "[${v0}] ✗ ログ読み取りに失敗: ${v1}";
static String m92(v0, v1) => "[${v0}] ✗ ログ読み取りに失敗: ${v1}";
static String m90(v0) => "[診断] データベースリセットに失敗: ${v0}";
static String m93(v0) => "[診断] データベースリセットに失敗: ${v0}";
static String m91(v0) => "[${v0}] 初期化を開始...";
static String m94(v0) => "[${v0}] 初期化を開始...";
static String m92(v0) => "[${v0}] --- 完全なログファイルの読み取りを開始 ---";
static String m95(v0) => "[${v0}] --- 完全なログファイルの読み取りを開始 ---";
static String m93(v0) => "クリーンアップに失敗しました。手動で削除してください。ファイルの場所:${v0}";
static String m96(v0) => "クリーンアップに失敗しました。手動で削除してください。ファイルの場所:${v0}";
static String m94(v0) => "エラーが発生しました:${v0}";
static String m97(v0) => "エラーが発生しました:${v0}";
static String m95(v0) => "初期化に失敗しました。スクリーンショットを撮って開発者に報告してください。${v0}";
static String m96(v0) =>
"nvmeパッチを使用して問題が発生した場合は、このツールを実行してください。ゲームのインストール/更新が使用できなくなる可能性があります。)\n\n現在のパッチ状態:${v0}";
static String m97(v0) =>
"Star Citizen中国語百科事典が提供する分散ダウンロードサービスを使用して、p4kのダウンロードや修復ができます。 \nバージョン情報:${v0}";
static String m98(v0) =>
"特定の状況でRSIランチャーのログファイルが破損し、問題スキャンが完了できなくなることがあります。このツールを使用して破損したログファイルをクリーンアップしてください。\n\n現在のログファイルサイズ:${v0} MB";
static String m98(v0) => "初期化に失敗しました。スクリーンショットを撮って開発者に報告してください。${v0}";
static String m99(v0) =>
"nvmeパッチを使用して問題が発生した場合は、このツールを実行してください。ゲームのインストール/更新が使用できなくなる可能性があります。)\n\n現在のパッチ状態:${v0}";
static String m100(v0) =>
"Star Citizen中国語百科事典が提供する分散ダウンロードサービスを使用して、p4kのダウンロードや修復ができます。 \nバージョン情報:${v0}";
static String m101(v0) =>
"特定の状況でRSIランチャーのログファイルが破損し、問題スキャンが完了できなくなることがあります。このツールを使用して破損したログファイルをクリーンアップしてください。\n\n現在のログファイルサイズ:${v0} MB";
static String m102(v0) =>
"ゲームの表示に異常が発生した場合や、バージョン更新後に、このツールを使用して古いシェーダーをクリアできます同時にVulkanをDX11に戻します \n\nキャッシュサイズ:${v0} MB";
static String m100(v0, v1, v2, v3, v4) =>
static String m103(v0, v1, v2, v3, v4) =>
"システム:${v0}\n\nプロセッサ:${v1}\n\nメモリサイズ:${v2}GB\n\nグラフィックカード情報:\n${v3}\n\nハードドライブ情報:\n${v4}\n\n";
static String m103(v0) => "処理に失敗しました!:${v0}";
static String m106(v0) => "処理に失敗しました!:${v0}";
static String m104(v0) => "ランチャー情報の読み込みに失敗:${v0}";
static String m107(v0) => "ランチャー情報の読み込みに失敗:${v0}";
static String m105(v0) => "パッチ状態:${v0}";
static String m108(v0) => "パッチ状態:${v0}";
static String m106(v0) => "ランチャー内部バージョン情報:${v0}";
static String m109(v0) => "ランチャー内部バージョン情報:${v0}";
static String m114(v0) => "ファイルを開く:${v0}";
static String m117(v0) => "ファイルを開く:${v0}";
static String m115(v0, v1) => "読み込み完了:${v0}ファイル、所要時間:${v1} ms";
static String m118(v0, v1) => "読み込み完了:${v0}ファイル、所要時間:${v1} ms";
static String m116(v0) => "ファイルを読み込み中:${v0}...";
static String m119(v0) => "ファイルを読み込み中:${v0}...";
static String m117(v0, v1) => "ファイルを処理中(${v0}/${v1})...";
static String m120(v0, v1) => "ファイルを処理中(${v0}/${v1})...";
static String m118(v0) => "不明なファイルタイプ\n${v0}";
static String m121(v0) => "不明なファイルタイプ\n${v0}";
static String m119(v0) => "P4Kビューア -> ${v0}";
static String m122(v0) => "P4Kビューア -> ${v0}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@ -369,19 +369,19 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage(
"確認中:実行環境",
),
"doctor_action_info_game_abnormal_exit": m6,
"doctor_action_info_game_abnormal_exit": m9,
"doctor_action_info_game_abnormal_exit_unknown":
MessageLookupByLibrary.simpleMessage("ゲームが異常終了しました:不明なエラー"),
"doctor_action_info_info_feedback": m7,
"doctor_action_result_analysis_issues_found": m8,
"doctor_action_info_info_feedback": m10,
"doctor_action_result_analysis_issues_found": m11,
"doctor_action_result_analysis_no_issue":
MessageLookupByLibrary.simpleMessage("分析完了、問題は見つかりませんでした"),
"doctor_action_result_create_folder_fail": m9,
"doctor_action_result_create_folder_fail": m12,
"doctor_action_result_create_folder_success":
MessageLookupByLibrary.simpleMessage(
"フォルダの作成に成功しました。ゲームのダウンロードを続けてみてください!",
),
"doctor_action_result_fix_fail": m10,
"doctor_action_result_fix_fail": m13,
"doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage(
"修復に成功しました。再起動してからゲームのインストールを続けてみてくださいレジストリの変更が他のソフトウェアに互換性の問題を引き起こす場合は、ツールのNVMEレジストリクリーナーを使用してください。",
),
@ -389,7 +389,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"修復に成功しました。ゲームを起動してみてください。問題が解決しない場合は、ツールボックスの「EACを再インストール」を使用してください",
),
"doctor_action_result_info_unsupported_os": m11,
"doctor_action_result_info_unsupported_os": m14,
"doctor_action_result_issue_not_supported":
MessageLookupByLibrary.simpleMessage(
"この問題は現在自動処理をサポートしていません。スクリーンショットを撮って助けを求めてください",
@ -477,10 +477,10 @@ class MessageLookup extends MessageLookupByLibrary {
"助けが必要ですか?クリックしてグループに参加し、無料のサポートを受けましょう!",
),
"doctor_info_processing": MessageLookupByLibrary.simpleMessage("処理中..."),
"doctor_info_result_add_registry_value": m12,
"doctor_info_result_add_registry_value": m15,
"doctor_info_result_chinese_install_path":
MessageLookupByLibrary.simpleMessage("中国語のインストールパス!"),
"doctor_info_result_chinese_install_path_error": m13,
"doctor_info_result_chinese_install_path_error": m16,
"doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage(
"中国語ユーザー名!",
),
@ -488,12 +488,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"中国語のユーザー名はゲームの起動/インストールエラーを引き起こす可能性があります!修復ボタンをクリックして変更チュートリアルを表示してください!",
),
"doctor_info_result_create_live_folder": m14,
"doctor_info_result_create_live_folder": m17,
"doctor_info_result_easyanticheat_not_installed":
MessageLookupByLibrary.simpleMessage(
"EasyAntiCheatがインストールされていないか、正常に終了していません",
),
"doctor_info_result_fix_suggestion": m15,
"doctor_info_result_fix_suggestion": m18,
"doctor_info_result_incompatible_nvme_device":
MessageLookupByLibrary.simpleMessage(
"新しいタイプのNVMEデバイスで、RSIランチャーとの互換性がありません。インストールが失敗する可能性があります",
@ -504,7 +504,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"doctor_info_result_low_physical_memory":
MessageLookupByLibrary.simpleMessage("物理メモリが不足しています"),
"doctor_info_result_memory_requirement": m16,
"doctor_info_result_memory_requirement": m19,
"doctor_info_result_missing_easyanticheat_files":
MessageLookupByLibrary.simpleMessage("EasyAntiCheatファイルが見つかりません"),
"doctor_info_result_missing_live_folder":
@ -517,7 +517,7 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage(
"サポートされていないオペレーティングシステムです。ゲームが実行できない可能性があります",
),
"doctor_info_result_upgrade_system": m17,
"doctor_info_result_upgrade_system": m20,
"doctor_info_result_verify_files_with_rsi_launcher":
MessageLookupByLibrary.simpleMessage(
"LIVEフォルダ内にEasyAntiCheatファイルが見つからないか、ファイルが不完全です。RSIランチャーを使用してファイルを検証してください",
@ -532,7 +532,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"ホームページでゲームインストールディレクトリを選択してください。",
),
"doctor_title_one_click_diagnosis": m18,
"doctor_title_one_click_diagnosis": m21,
"downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage(
"すべてキャンセル",
),
@ -568,9 +568,9 @@ class MessageLookup extends MessageLookupByLibrary {
"downloader_action_resume_all": MessageLookupByLibrary.simpleMessage(
"すべて再開",
),
"downloader_info_checked": m19,
"downloader_info_checked": m22,
"downloader_info_checking": MessageLookupByLibrary.simpleMessage("検証中"),
"downloader_info_checking_progress": m20,
"downloader_info_checking_progress": m23,
"downloader_info_deleted": MessageLookupByLibrary.simpleMessage("削除済み"),
"downloader_info_download_completed": MessageLookupByLibrary.simpleMessage(
"ダウンロード完了",
@ -582,9 +582,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"ダウンロード単位を入力してください。例1、100k、10m、0または空白で制限なし。",
),
"downloader_info_download_upload_speed": m21,
"downloader_info_downloaded": m22,
"downloader_info_downloading": m23,
"downloader_info_download_upload_speed": m24,
"downloader_info_downloaded": m25,
"downloader_info_downloading": m26,
"downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage(
"ダウンロード中...",
),
@ -607,9 +607,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"速度制限設定が保存されました。次回のダウンローダー起動時に適用されます。",
),
"downloader_info_status": m24,
"downloader_info_total_size": m25,
"downloader_info_uploaded": m26,
"downloader_info_status": m27,
"downloader_info_total_size": m28,
"downloader_info_uploaded": m29,
"downloader_info_waiting": MessageLookupByLibrary.simpleMessage("待機中"),
"downloader_input_download_speed_limit":
MessageLookupByLibrary.simpleMessage("ダウンロード制限:"),
@ -653,7 +653,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("DPS計算機 ローカリゼーション"),
"home_action_external_browser_extension":
MessageLookupByLibrary.simpleMessage("外部ブラウザ拡張機能:"),
"home_action_info_abnormal_game_exit": m27,
"home_action_info_abnormal_game_exit": m30,
"home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage(
"詳細情報を確認するには、ポップアップしたウェブリンクを確認してください。",
),
@ -662,7 +662,7 @@ class MessageLookup extends MessageLookupByLibrary {
"home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage(
"ゲーム内蔵",
),
"home_action_info_initialization_failed": m28,
"home_action_info_initialization_failed": m31,
"home_action_info_initializing_resources":
MessageLookupByLibrary.simpleMessage("ローカリゼーションリソースを初期化中..."),
"home_action_info_log_file_parse_fail":
@ -677,7 +677,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Roberts Space Industries、すべての始まり",
),
"home_action_info_scan_complete_valid_directories_found": m29,
"home_action_info_scan_complete_valid_directories_found": m32,
"home_action_info_scanning": MessageLookupByLibrary.simpleMessage(
"スキャン中 ...",
),
@ -734,7 +734,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"home_announcement_details": MessageLookupByLibrary.simpleMessage("お知らせ詳細"),
"home_holiday_countdown": MessageLookupByLibrary.simpleMessage("祝日カウントダウン"),
"home_holiday_countdown_days": m30,
"home_holiday_countdown_days": m33,
"home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage(
"* 上記の祝日日付は手動で収集・管理されており、誤りがある可能性があります。フィードバックを歓迎します!",
),
@ -809,10 +809,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("p4kファイルを読み込み中..."),
"home_localization_advanced_msg_reading_server_localization_text":
MessageLookupByLibrary.simpleMessage("ローカリゼーションテキストを取得中..."),
"home_localization_advanced_msg_version": m31,
"home_localization_advanced_title": m32,
"home_localization_advanced_title_msg": m33,
"home_localization_advanced_title_preview": m34,
"home_localization_advanced_msg_version": m34,
"home_localization_advanced_title": m35,
"home_localization_advanced_title_msg": m36,
"home_localization_advanced_title_preview": m37,
"home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage(
"このバージョンには説明がありません",
),
@ -820,7 +820,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(" (高度なローカリゼーション)"),
"home_localization_new_version_available":
MessageLookupByLibrary.simpleMessage("ローカリゼーションの新しいバージョンが利用可能です!"),
"home_localization_new_version_installed": m35,
"home_localization_new_version_installed": m38,
"home_localization_select_customize_file":
MessageLookupByLibrary.simpleMessage("カスタムローカリゼーションファイルを選択してください"),
"home_localization_select_customize_file_ini":
@ -838,7 +838,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"この機能はゲームをより便利に起動するのに役立ちます。\n\nアカウントセキュリティを確保するために、この機能はローカリゼーションブラウザを使用してログイン状態を保持し、パスワード情報を保存しません(自動入力機能を有効にしていない限り)。\n\nこの機能を使用してアカウントにログインする場合は、信頼できるソースからSCToolboxをダウンロードしていることを確認してください。",
),
"home_login_info_rsi_server_report": m36,
"home_login_info_rsi_server_report": m39,
"home_login_title_launching_game": MessageLookupByLibrary.simpleMessage(
"ゲームを起動しています...",
),
@ -865,7 +865,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"input_method_community_input_method_not_installed":
MessageLookupByLibrary.simpleMessage("コミュニティ入力メソッドサポートがインストールされていません"),
"input_method_community_input_method_support_version": m39,
"input_method_community_input_method_support_version": m42,
"input_method_confirm_enable_remote_input":
MessageLookupByLibrary.simpleMessage("リモート入力を有効にしますか?"),
"input_method_confirm_install_advanced_localization":
@ -915,7 +915,7 @@ class MessageLookup extends MessageLookupByLibrary {
"input_method_support_updated": MessageLookupByLibrary.simpleMessage(
"コミュニティ入力メソッドサポートが更新されました",
),
"input_method_support_updated_to_version": m40,
"input_method_support_updated_to_version": m43,
"input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage(
"テキストを空にすることはできません!",
),
@ -936,7 +936,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("ローカリゼーションフィードバック"),
"localization_action_uninstall_translation":
MessageLookupByLibrary.simpleMessage("ローカリゼーションをアンインストール"),
"localization_info_channel": m41,
"localization_info_channel": m44,
"localization_info_community_translation":
MessageLookupByLibrary.simpleMessage("コミュニティローカリゼーション"),
"localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage(
@ -945,16 +945,16 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_custom_files": MessageLookupByLibrary.simpleMessage(
"カスタムファイル",
),
"localization_info_enabled": m42,
"localization_info_enabled": m45,
"localization_info_incompatible_translation_params_warning":
MessageLookupByLibrary.simpleMessage(
"USER.cfgに互換性のないローカリゼーションパラメータが含まれています。これは以前のローカリゼーションファイルの残りである可能性があります。\n\nこれによりローカリゼーションが無効になったり文字化けしたりする可能性があります。確認をクリックすると、ワンクリックで削除されます(他の設定には影響しません)。",
),
"localization_info_installation_error": m43,
"localization_info_installation_error": m46,
"localization_info_installed": MessageLookupByLibrary.simpleMessage(
"インストール済み",
),
"localization_info_installed_version": m44,
"localization_info_installed_version": m47,
"localization_info_language": MessageLookupByLibrary.simpleMessage(
"言語: ",
),
@ -975,14 +975,14 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_unavailable": MessageLookupByLibrary.simpleMessage(
"利用不可",
),
"localization_info_update_time": m45,
"localization_info_version_number": m46,
"log_analyzer_collision_details": m47,
"log_analyzer_death_details": m48,
"localization_info_update_time": m48,
"localization_info_version_number": m49,
"log_analyzer_collision_details": m50,
"log_analyzer_death_details": m51,
"log_analyzer_description": MessageLookupByLibrary.simpleMessage(
"プレイ記録を分析(ログイン、死亡、キルなどの情報)",
),
"log_analyzer_details_info": m49,
"log_analyzer_details_info": m52,
"log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage("崩壊"),
"log_analyzer_filter_account_related": MessageLookupByLibrary.simpleMessage(
"アカウント関連",
@ -1020,9 +1020,9 @@ class MessageLookup extends MessageLookupByLibrary {
"ゲーム読み込み",
),
"log_analyzer_game_start": MessageLookupByLibrary.simpleMessage("ゲーム起動"),
"log_analyzer_kill_death_suicide_count": m50,
"log_analyzer_kill_death_suicide_count": m53,
"log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage("キル概要"),
"log_analyzer_mode_loading_time": m51,
"log_analyzer_mode_loading_time": m54,
"log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage(
"ゲームクラッシュ情報は検出されませんでした",
),
@ -1032,9 +1032,9 @@ class MessageLookup extends MessageLookupByLibrary {
"log_analyzer_one_click_diagnosis_header":
MessageLookupByLibrary.simpleMessage("----- SCToolbox ワンクリック診断 -----"),
"log_analyzer_play_time": MessageLookupByLibrary.simpleMessage("プレイ時間"),
"log_analyzer_play_time_format": m52,
"log_analyzer_player_location": m53,
"log_analyzer_player_login": m54,
"log_analyzer_play_time_format": m55,
"log_analyzer_player_location": m56,
"log_analyzer_player_login": m57,
"log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage(
"キーワードを入力して内容を検索",
),
@ -1043,7 +1043,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"log_analyzer_soft_death": MessageLookupByLibrary.simpleMessage("ソフト死亡"),
"log_analyzer_title": MessageLookupByLibrary.simpleMessage("logアナライザ"),
"log_analyzer_vehicle_damage_details": m55,
"log_analyzer_vehicle_damage_details": m58,
"log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage(
"ローカルインベントリを表示",
),
@ -1074,7 +1074,7 @@ class MessageLookup extends MessageLookupByLibrary {
"プロフィールの任意の場所にコードを追加してください。コードは30分間有効です",
),
"party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage("解散を確認"),
"party_room_connect_error": m56,
"party_room_connect_error": m59,
"party_room_connect_failed": MessageLookupByLibrary.simpleMessage(
"接続に失敗しました",
),
@ -1103,7 +1103,7 @@ class MessageLookup extends MessageLookupByLibrary {
"新しいルームを作成",
),
"party_room_create_room": MessageLookupByLibrary.simpleMessage("ルームを作成"),
"party_room_days_ago": m57,
"party_room_days_ago": m60,
"party_room_disconnected": MessageLookupByLibrary.simpleMessage(
"接続が切断されました",
),
@ -1134,7 +1134,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"party_room_error": MessageLookupByLibrary.simpleMessage("エラー"),
"party_room_exit_room": MessageLookupByLibrary.simpleMessage("ルームを退出"),
"party_room_exit_room_failed": m58,
"party_room_exit_room_failed": m61,
"party_room_game_id_empty": MessageLookupByLibrary.simpleMessage(
"ゲームIDを入力してください",
),
@ -1144,12 +1144,12 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_game_not_started": MessageLookupByLibrary.simpleMessage(
"<ゲーム未起動>",
),
"party_room_get_code_failed": m59,
"party_room_get_code_failed": m62,
"party_room_go_login": MessageLookupByLibrary.simpleMessage("ログイン"),
"party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage(
"ゲストとして閲覧中です。ログインするとルームの作成や参加が可能です。",
),
"party_room_hours_ago": m60,
"party_room_hours_ago": m63,
"party_room_info_updated": MessageLookupByLibrary.simpleMessage(
"ルーム情報が更新されました",
),
@ -1164,8 +1164,8 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_just_now": MessageLookupByLibrary.simpleMessage("たった今"),
"party_room_kick": MessageLookupByLibrary.simpleMessage("キック"),
"party_room_kick_member": MessageLookupByLibrary.simpleMessage("メンバーをキック"),
"party_room_kick_member_confirm": m61,
"party_room_kick_member_failed": m62,
"party_room_kick_member_confirm": m64,
"party_room_kick_member_failed": m65,
"party_room_kicked": MessageLookupByLibrary.simpleMessage("ルームからキックされました"),
"party_room_leave_confirm": MessageLookupByLibrary.simpleMessage(
"ルームを退出しますか?",
@ -1176,13 +1176,13 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_link_format_error": MessageLookupByLibrary.simpleMessage(
"リンク形式が正しくありません!",
),
"party_room_load_list_failed": m63,
"party_room_load_list_failed": m66,
"party_room_loading": MessageLookupByLibrary.simpleMessage("読み込み中..."),
"party_room_location": MessageLookupByLibrary.simpleMessage("場所"),
"party_room_login": MessageLookupByLibrary.simpleMessage("ログイン"),
"party_room_main_menu": MessageLookupByLibrary.simpleMessage("<メインメニュー>"),
"party_room_members_count": m64,
"party_room_minutes_ago": m65,
"party_room_members_count": m67,
"party_room_minutes_ago": m68,
"party_room_need_login": MessageLookupByLibrary.simpleMessage("ログインが必要です"),
"party_room_new_owner": MessageLookupByLibrary.simpleMessage("新しいオーナー"),
"party_room_next_step": MessageLookupByLibrary.simpleMessage("次へ"),
@ -1215,12 +1215,12 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_player_death": MessageLookupByLibrary.simpleMessage("プレイヤー死亡"),
"party_room_prev_step": MessageLookupByLibrary.simpleMessage("前へ"),
"party_room_reconnect": MessageLookupByLibrary.simpleMessage("再接続"),
"party_room_reconnect_failed": m66,
"party_room_reconnect_failed": m69,
"party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage(
"ルームサーバーとの接続が切断されました。再接続しますか?",
),
"party_room_reconnect_retry": m67,
"party_room_register_failed": m68,
"party_room_reconnect_retry": m70,
"party_room_register_failed": m71,
"party_room_register_success": MessageLookupByLibrary.simpleMessage(
"登録成功!",
),
@ -1300,8 +1300,8 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_transfer_owner": MessageLookupByLibrary.simpleMessage(
"オーナー権限を移譲",
),
"party_room_transfer_owner_confirm": m69,
"party_room_transfer_owner_failed": m70,
"party_room_transfer_owner_confirm": m72,
"party_room_transfer_owner_failed": m73,
"party_room_unknown_area": MessageLookupByLibrary.simpleMessage("不明なエリア"),
"party_room_unknown_location": MessageLookupByLibrary.simpleMessage(
"不明な場所",
@ -1343,7 +1343,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"performance_action_super": MessageLookupByLibrary.simpleMessage("超高"),
"performance_info_applied": MessageLookupByLibrary.simpleMessage("適用済み"),
"performance_info_current_status": m71,
"performance_info_current_status": m74,
"performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage(
"設定ファイルを削除中...",
),
@ -1357,7 +1357,7 @@ class MessageLookup extends MessageLookupByLibrary {
"この機能はグラフィックカードのボトルネックの最適化に役立ちますが、CPUのボトルネックには逆効果になることがあります。グラフィックカードの性能が高い場合は、より良い画質を使用してグラフィックカードの利用率を高めることができます。",
),
"performance_info_graphics": MessageLookupByLibrary.simpleMessage("グラフィック"),
"performance_info_min_max_values": m72,
"performance_info_min_max_values": m75,
"performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未適用"),
"performance_info_shader_clearing_warning":
MessageLookupByLibrary.simpleMessage(
@ -1519,7 +1519,7 @@ class MessageLookup extends MessageLookupByLibrary {
"performance_json_text_water_info": MessageLookupByLibrary.simpleMessage(
"様々な水のレベル",
),
"performance_title_performance_optimization": m73,
"performance_title_performance_optimization": m76,
"setting_action_clear_translation_file_cache":
MessageLookupByLibrary.simpleMessage("ローカリゼーションファイルキャッシュをクリア"),
"setting_action_create_desktop_shortcut":
@ -1532,7 +1532,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"setting_action_info_autofill_data_cleared":
MessageLookupByLibrary.simpleMessage("自動入力データがクリアされました"),
"setting_action_info_cache_clearing_info": m74,
"setting_action_info_cache_clearing_info": m77,
"setting_action_info_clear_cache_warning":
MessageLookupByLibrary.simpleMessage("これはインストール済みのローカリゼーションには影響しません。"),
"setting_action_info_confirm_clear_cache":
@ -1584,7 +1584,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"setting_action_reset_auto_password_fill":
MessageLookupByLibrary.simpleMessage("自動パスワード入力をリセット"),
"setting_action_set_core_count": m75,
"setting_action_set_core_count": m78,
"setting_action_set_game_file": MessageLookupByLibrary.simpleMessage(
"ゲームファイルを設定StarCitizen.exe",
),
@ -1626,39 +1626,39 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_analytics_done": MessageLookupByLibrary.simpleMessage(
"✓ AnalyticsApi.touch(\"launch\") 完了",
),
"splash_analytics_error": m76,
"splash_analytics_error": m79,
"splash_analytics_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ AnalyticsApi.touch() タイムアウト (10秒) - 続行",
),
"splash_app_init_done": MessageLookupByLibrary.simpleMessage(
"✓ appModel.initApp() 完了",
),
"splash_app_init_error": m77,
"splash_app_init_error": m80,
"splash_app_init_timeout": MessageLookupByLibrary.simpleMessage(
"✗ appModel.initApp() タイムアウト (10秒)",
),
"splash_aria2c_done": MessageLookupByLibrary.simpleMessage(
"✓ aria2cModelProvider 初期化完了",
),
"splash_aria2c_error": m78,
"splash_aria2c_error": m81,
"splash_check_host_done": MessageLookupByLibrary.simpleMessage(
"✓ URLConf.checkHost() 完了",
),
"splash_check_host_error": m79,
"splash_check_host_error": m82,
"splash_check_host_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ URLConf.checkHost() タイムアウト (10秒) - 続行",
),
"splash_check_update_done": MessageLookupByLibrary.simpleMessage(
"✓ appModel.checkUpdate() 完了",
),
"splash_check_update_error": m80,
"splash_check_update_error": m83,
"splash_check_update_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ appModel.checkUpdate() タイムアウト (10秒) - 続行",
),
"splash_check_version": MessageLookupByLibrary.simpleMessage(
"splash_alert_info_versionを確認中...",
),
"splash_close_hive_failed": m81,
"splash_close_hive_failed": m84,
"splash_context_unmounted": MessageLookupByLibrary.simpleMessage(
"✗ Contextがアンマウントされました",
),
@ -1674,16 +1674,16 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_db_deleted": MessageLookupByLibrary.simpleMessage(
"[診断] データベースディレクトリを削除しました",
),
"splash_db_not_exist": m82,
"splash_db_not_exist": m85,
"splash_db_reset_done": MessageLookupByLibrary.simpleMessage(
"[診断] データベースリセット完了、アプリケーション終了準備中",
),
"splash_db_reset_msg": MessageLookupByLibrary.simpleMessage(
"データベースがリセットされました。アプリケーションは終了します。アプリケーションを再起動してください。",
),
"splash_deleting_db": m83,
"splash_diagnostic_log": m84,
"splash_diagnostic_mode": m85,
"splash_deleting_db": m86,
"splash_diagnostic_log": m87,
"splash_diagnostic_mode": m88,
"splash_error": MessageLookupByLibrary.simpleMessage("エラー"),
"splash_exec_analytics": MessageLookupByLibrary.simpleMessage(
"AnalyticsApi.touch(\"launch\")を実行中...",
@ -1703,7 +1703,7 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_hive_done": MessageLookupByLibrary.simpleMessage(
"✓ Hive.openBox(\"app_conf\") 完了",
),
"splash_hive_error": m86,
"splash_hive_error": m89,
"splash_hive_timeout": MessageLookupByLibrary.simpleMessage(
"✗ Hive.openBox(\"app_conf\") タイムアウト (10秒)",
),
@ -1713,22 +1713,22 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_init_task_status": MessageLookupByLibrary.simpleMessage(
"初期化タスクの状態:",
),
"splash_log_not_exist": m87,
"splash_log_read_done": m88,
"splash_log_not_exist": m90,
"splash_log_read_done": m91,
"splash_open_hive_box": MessageLookupByLibrary.simpleMessage(
"Hive app_conf boxを開いています...",
),
"splash_read_full_log": MessageLookupByLibrary.simpleMessage("完全なログを読み取り"),
"splash_read_log_failed": m89,
"splash_read_log_failed": m92,
"splash_reset_database": MessageLookupByLibrary.simpleMessage(
"データベースをリセット",
),
"splash_reset_db_failed": m90,
"splash_reset_db_failed": m93,
"splash_show_agreement": MessageLookupByLibrary.simpleMessage(
"ユーザー同意ダイアログを表示する必要があります...",
),
"splash_start_init": m91,
"splash_start_read_log": m92,
"splash_start_init": m94,
"splash_start_read_log": m95,
"splash_step0_done": MessageLookupByLibrary.simpleMessage(
"--- ステップ0完了、ステップ1に進みます ---",
),
@ -1795,13 +1795,13 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"クリーンアップが完了しました。インストールまたはゲーム起動操作を完了してください。",
),
"tools_action_info_cleanup_failed": m93,
"tools_action_info_cleanup_failed": m96,
"tools_action_info_config_file_not_exist":
MessageLookupByLibrary.simpleMessage("設定ファイルが存在しません。一度ゲームを実行してみてください"),
"tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage(
"EACファイルが削除されました。次にRSIランチャーを開きます。SETTINGS -> VERIFYに移動してEACを再インストールしてください。",
),
"tools_action_info_error_occurred": m94,
"tools_action_info_error_occurred": m97,
"tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage(
"修復が成功しました。コンピュータを再起動してからゲームのインストールを続けてみてくださいレジストリの変更が他のソフトウェアに互換性の問題を引き起こす場合は、ツールの「NVMEレジストリクリーナー」を使用してください。",
),
@ -1811,7 +1811,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"IP情報をHostsファイルに書き込み、一部の地域でのDNS汚染による公式サイトへのログイン問題などを解決します。\nこの機能は第一段階のテスト中です。問題が発生した場合はすぐにフィードバックしてください。",
),
"tools_action_info_init_failed": m95,
"tools_action_info_init_failed": m98,
"tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage(
"ログファイルが存在しません。ゲームを一度起動またはインストールしてから、ランチャーを終了してください。問題が解決しない場合は、ランチャーを最新バージョンに更新してみてください!",
),
@ -1825,7 +1825,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage(
"インストールされていません",
),
"tools_action_info_nvme_patch_issue": m96,
"tools_action_info_nvme_patch_issue": m99,
"tools_action_info_one_key_close_lens_shake":
MessageLookupByLibrary.simpleMessage(
"ゲーム内のレンズの揺れをワンクリックでオフにして、撮影操作を容易にします。\n\n @拉邦那 Lapernum 提供のパラメータ情報。",
@ -1834,7 +1834,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"p4kのダウンロードタスクが既に進行中です。ダウンロードマネージャーで確認してください",
),
"tools_action_info_p4k_download_repair_tip": m97,
"tools_action_info_p4k_download_repair_tip": m100,
"tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage(
"P4kはStar Citizenのコアゲームファイルで、100GB以上のサイズです。SCToolboxが提供するオフラインダウンロードは、p4kファイルのダウンロードが非常に遅いユーザーをサポートするため、または公式ランチャーで修復できないp4kファイルを修正するためのものです。\n\n次に保存先を選択するダイアログが表示されますStar Citizenフォルダでも他の場所でも選択可能。ダウンロード完了後、P4KファイルがLIVEフォルダ内にあることを確認し、Star Citizenランチャーで検証と更新を行ってください。",
),
@ -1851,7 +1851,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"RSIランチャーディレクトリが見つかりません。手動で操作してください。",
),
"tools_action_info_rsi_launcher_log_issue": m98,
"tools_action_info_rsi_launcher_log_issue": m101,
"tools_action_info_rsi_launcher_not_found":
MessageLookupByLibrary.simpleMessage(
"RSIランチャーが見つかりません。再インストールするか、設定で手動で追加してください。",
@ -1863,12 +1863,12 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage(
"RSIランチャーを管理者権限で実行すると、一部の問題が解決する場合があります。\n\n効率コア無視パラメータを設定している場合は、ここでも適用されます。",
),
"tools_action_info_shader_cache_issue": m99,
"tools_action_info_shader_cache_issue": m102,
"tools_action_info_star_citizen_not_found":
MessageLookupByLibrary.simpleMessage(
"Star Citizenゲームのインストール場所が見つかりません。少なくとも1回ゲームを起動するか、設定で手動で追加してください。",
),
"tools_action_info_system_info_content": m100,
"tools_action_info_system_info_content": m103,
"tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage(
"システム情報",
),
@ -1931,7 +1931,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_info_game_install_location": MessageLookupByLibrary.simpleMessage(
"ゲームインストール場所: ",
),
"tools_info_processing_failed": m103,
"tools_info_processing_failed": m106,
"tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage(
"RSIランチャー場所",
),
@ -1953,15 +1953,15 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_rsi_launcher_enhance_msg_error_get_launcher_info_error":
MessageLookupByLibrary.simpleMessage("ランチャー情報の読み込みに失敗しました!"),
"tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args":
m104,
m107,
"tools_rsi_launcher_enhance_msg_error_launcher_notfound":
MessageLookupByLibrary.simpleMessage("RSIランチャーが見つかりません"),
"tools_rsi_launcher_enhance_msg_patch_status": m105,
"tools_rsi_launcher_enhance_msg_patch_status": m108,
"tools_rsi_launcher_enhance_msg_uninstall":
MessageLookupByLibrary.simpleMessage(
"* 機能強化パッチをアンインストールするには、RSIランチャーを上書きインストールしてください。",
),
"tools_rsi_launcher_enhance_msg_version": m106,
"tools_rsi_launcher_enhance_msg_version": m109,
"tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage(
"RSIランチャー機能強化はコミュニティ機能で、お使いのコンピューターで「RSI Launcher」を解凍し、追加の機能強化を加えます。どの機能を使用するかはあなた次第です。\n\n現在、公式CIGは多言語操作のみを許可していますが、ランチャーダウンロード機能強化は私たちが有用だと考える追加機能です。cigユーザー契約https://robertsspaceindustries.com/eulaに違反すると、アカウント禁止などの深刻な結果を招く可能性があり、使用するかどうかはあなた自身の判断によります。私たちは発生する可能性のある結果ゲームの損傷、アカウント禁止などに対して責任を負いません。\n\nランチャーの変更内容については、https://github.com/StarCitizenToolBox/RSILauncherEnhanceでオープンソースとして公開しています。必要に応じて確認できます。\n\n何らかの理由でこの機能強化パッチをキャンセルする必要がある場合は、公式ランチャーを直接上書きインストールしてください。",
),
@ -1995,18 +1995,18 @@ class MessageLookup extends MessageLookupByLibrary {
"この機能を使用するには.NET8ランタイムをインストールする必要があります。下のボタンをクリックしてダウンロードしてインストールし、インストールが成功したらこのページを再度開いて使用を続行してください。",
),
"tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage("初期化中..."),
"tools_unp4k_msg_open_file": m114,
"tools_unp4k_msg_read_completed": m115,
"tools_unp4k_msg_read_file": m116,
"tools_unp4k_msg_open_file": m117,
"tools_unp4k_msg_read_completed": m118,
"tools_unp4k_msg_read_file": m119,
"tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage(
"P4Kファイルを読み込み中...",
),
"tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage(
"ファイルを処理中...",
),
"tools_unp4k_msg_reading3": m117,
"tools_unp4k_msg_unknown_file_type": m118,
"tools_unp4k_title": m119,
"tools_unp4k_msg_reading3": m120,
"tools_unp4k_msg_unknown_file_type": m121,
"tools_unp4k_title": m122,
"tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage(
"プレビューするファイルをクリック",
),

View File

@ -33,243 +33,243 @@ class MessageLookup extends MessageLookupByLibrary {
static String m5(v0) => "Найдена новая версия -> ${v0}";
static String m6(v0) => "Аварийное завершение игры: ${v0}";
static String m9(v0) => "Аварийное завершение игры: ${v0}";
static String m7(v0) =>
static String m10(v0) =>
"инфо:${v0}, пожалуйста, нажмите в правом нижнем углу, чтобы присоединиться к группе для обратной связи.";
static String m8(v0) => "Анализ завершен, обнаружено ${v0} проблем";
static String m11(v0) => "Анализ завершен, обнаружено ${v0} проблем";
static String m9(v0, v1) =>
static String m12(v0, v1) =>
"Не удалось создать папку, попробуйте создать её вручную.\nПуть: ${v0}\nОшибка: ${v1}";
static String m10(v0) => "Исправление не удалось, ${v0}";
static String m13(v0) => "Исправление не удалось, ${v0}";
static String m11(v0) => "Неподдерживаемая операционная система: ${v0}";
static String m14(v0) => "Неподдерживаемая операционная система: ${v0}";
static String m12(v0) =>
static String m15(v0) =>
"Добавление значения ForcedPhysicalSectorSizeInBytes в реестр для эмуляции старого устройства. Раздел диска (${v0})";
static String m13(v0) =>
static String m16(v0) =>
"Путь установки на китайском! Это может вызвать ошибки запуска/установки игры! (${v0}), пожалуйста, измените путь установки в RSI Launcher.";
static String m14(v0) =>
static String m17(v0) =>
"Нажмите исправить, чтобы создать папку LIVE, затем повторите попытку установки. (${v0})";
static String m15(v0) => "Предложение по исправлению: ${v0}";
static String m18(v0) => "Предложение по исправлению: ${v0}";
static String m16(v0) =>
static String m19(v0) =>
"Вам нужно как минимум 16 ГБ физической памяти (RAM) для запуска этой игры. (Текущий размер: ${v0})";
static String m17(v0) => "Пожалуйста, обновите вашу систему (${v0})";
static String m20(v0) => "Пожалуйста, обновите вашу систему (${v0})";
static String m18(v0) => "Быстрая диагностика -> ${v0}";
static String m21(v0) => "Быстрая диагностика -> ${v0}";
static String m19(v0) => "Проверено: ${v0}";
static String m22(v0) => "Проверено: ${v0}";
static String m20(v0) => "Проверка... (${v0}%)";
static String m23(v0) => "Проверка... (${v0}%)";
static String m21(v0, v1) => "Загрузка: ${v0}/с Отдача: ${v1}/с";
static String m24(v0, v1) => "Загрузка: ${v0}/с Отдача: ${v1}/с";
static String m22(v0) => "Загружено: ${v0}";
static String m25(v0) => "Загружено: ${v0}";
static String m23(v0) => "Загрузка... (${v0}%)";
static String m26(v0) => "Загрузка... (${v0}%)";
static String m24(v0) => "Статус: ${v0}";
static String m27(v0) => "Статус: ${v0}";
static String m25(v1) => "Общий размер: ${v1}";
static String m28(v1) => "Общий размер: ${v1}";
static String m26(v0) => "Отдано: ${v0}";
static String m29(v0) => "Отдано: ${v0}";
static String m27(v0, v1, v2, v3, v4) =>
static String m30(v0, v1, v2, v3, v4) =>
"Игра завершилась ненормально\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\nДиагностическая информация: ${v3}\n${v4}";
static String m28(v0) =>
static String m31(v0) =>
"Ошибка инициализации ресурсов веб-локализации! ${v0}";
static String m29(v0) =>
static String m32(v0) =>
"Сканирование завершено, найдено ${v0} действительных директорий установки";
static String m30(v0) => "${v0} дней";
static String m33(v0) => "${v0} дней";
static String m31(v0) => "Загруженная версия локализации: ${v0}";
static String m34(v0) => "Загруженная версия локализации: ${v0}";
static String m32(v0) => "Расширенная локализация -> ${v0}";
static String m35(v0) => "Расширенная локализация -> ${v0}";
static String m33(v0, v1) => "Строк локализации: ${v0} Строк P4K: ${v1}";
static String m36(v0, v1) => "Строк локализации: ${v0} Строк P4K: ${v1}";
static String m34(v0) => "Предпросмотр: ${v0}";
static String m37(v0) => "Предпросмотр: ${v0}";
static String m35(v0) =>
static String m38(v0) =>
"Доступна новая версия локализации, установленной ${v0}!";
static String m36(v1, v2) =>
static String m39(v1, v2) =>
"Сервер RSI сообщает версию: ${v1}\n\nЛокальная версия: ${v2}\n\nРекомендуется обновить игру через RSI Launcher!";
static String m39(v0) => "Поддержка метода ввода сообщества: ${v0}";
static String m42(v0) => "Поддержка метода ввода сообщества: ${v0}";
static String m40(v0) =>
static String m43(v0) =>
"Поддержка метода ввода сообщества обновлена до версии: ${v0}";
static String m41(v0) => "Канал: ${v0}";
static String m44(v0) => "Канал: ${v0}";
static String m42(v0) => "Включено (${v0}):";
static String m45(v0) => "Включено (${v0}):";
static String m43(v0) => "Ошибка установки!\n\n${v0}";
static String m46(v0) => "Ошибка установки!\n\n${v0}";
static String m44(v0) => "Установленная версия: ${v0}";
static String m47(v0) => "Установленная версия: ${v0}";
static String m45(v0) => "Время обновления: ${v0}";
static String m48(v0) => "Время обновления: ${v0}";
static String m46(v0) => "Номер версии: ${v0}";
static String m47(v0, v1, v2, v3, v4) =>
"Зона: ${v0} Управление игроком: ${v1} Объект столкновения: ${v2} \nТехника столкновения: ${v3} Дистанция столкновения: ${v4} ";
static String m48(v0, v2, v3) =>
"ID жертвы: ${v0} \nID убийцы: ${v2} \nЗона: ${v3}";
static String m49(v0) => "Подробная информация: ${v0}";
static String m49(v0) => "Номер версии: ${v0}";
static String m50(v0, v1, v2, v3, v4) =>
"Зона: ${v0} Управление игроком: ${v1} Объект столкновения: ${v2} \nТехника столкновения: ${v3} Дистанция столкновения: ${v4} ";
static String m51(v0, v2, v3) =>
"ID жертвы: ${v0} \nID убийцы: ${v2} \nЗона: ${v3}";
static String m52(v0) => "Подробная информация: ${v0}";
static String m53(v0, v1, v2, v3, v4) =>
"Убийства: ${v0} Смерти: ${v1} Самоубийства: ${v2} \nУничтожение техники (Мягкая смерть): ${v3} Уничтожение техники (Распад): ${v4}";
static String m51(v0, v1) => "Режим: ${v0} Время: ${v1} секунд";
static String m54(v0, v1) => "Режим: ${v0} Время: ${v1} секунд";
static String m52(v0, v1, v2) => "${v0} часов ${v1} минут ${v2} секунд";
static String m55(v0, v1, v2) => "${v0} часов ${v1} минут ${v2} секунд";
static String m53(v0, v1) => "ID игрока: ${v0} Местоположение: ${v1}";
static String m56(v0, v1) => "ID игрока: ${v0} Местоположение: ${v1}";
static String m54(v0) => "Игрок ${v0} входит в игру...";
static String m57(v0) => "Игрок ${v0} входит в игру...";
static String m55(v0, v1, v2, v3, v4) =>
static String m58(v0, v1, v2, v3, v4) =>
"Модель техники: ${v0} \nЗона: ${v1} \nУровень повреждения: ${v2} (${v3}) Виновник: ${v4}";
static String m56(v0) => "Ошибка подключения: ${v0}";
static String m59(v0) => "Ошибка подключения: ${v0}";
static String m57(v0) => "${v0} дн. назад";
static String m60(v0) => "${v0} дн. назад";
static String m58(v0) => "Не удалось выйти из комнаты: ${v0}";
static String m61(v0) => "Не удалось выйти из комнаты: ${v0}";
static String m59(v0) => "Не удалось получить код подтверждения: ${v0}";
static String m62(v0) => "Не удалось получить код подтверждения: ${v0}";
static String m60(v0) => "${v0} ч. назад";
static String m63(v0) => "${v0} ч. назад";
static String m61(v0) => "Вы уверены, что хотите выгнать ${v0}?";
static String m64(v0) => "Вы уверены, что хотите выгнать ${v0}?";
static String m62(v0) => "Не удалось выгнать участника: ${v0}";
static String m65(v0) => "Не удалось выгнать участника: ${v0}";
static String m63(v0) => "Не удалось загрузить список комнат: ${v0}";
static String m66(v0) => "Не удалось загрузить список комнат: ${v0}";
static String m64(v0, v1) => "${v0}/${v1} участников";
static String m67(v0, v1) => "${v0}/${v1} участников";
static String m65(v0) => "${v0} мин. назад";
static String m68(v0) => "${v0} мин. назад";
static String m66(v0) => "Не удалось переподключиться: ${v0}";
static String m69(v0) => "Не удалось переподключиться: ${v0}";
static String m67(v0) => "Не удалось переподключиться, попыток: ${v0}";
static String m70(v0) => "Не удалось переподключиться, попыток: ${v0}";
static String m68(v0) => "Ошибка регистрации: ${v0}";
static String m71(v0) => "Ошибка регистрации: ${v0}";
static String m69(v0) => "Вы уверены, что хотите передать владение ${v0}?";
static String m72(v0) => "Вы уверены, что хотите передать владение ${v0}?";
static String m70(v0) => "Не удалось передать владение: ${v0}";
static String m73(v0) => "Не удалось передать владение: ${v0}";
static String m71(v0) => "Текущий статус: ${v0}";
static String m74(v0) => "Текущий статус: ${v0}";
static String m72(v0, v1, v2) => "${v0} Мин.: ${v1} / Макс.: ${v2}";
static String m75(v0, v1, v2) => "${v0} Мин.: ${v1} / Макс.: ${v2}";
static String m73(v0) => "Оптимизация производительности -> ${v0}";
static String m76(v0) => "Оптимизация производительности -> ${v0}";
static String m74(v0) =>
static String m77(v0) =>
"Размер кэша ${v0}MB, очистка кэша загруженных SCToolbox файлов локализации, не повлияет на установленные локализации";
static String m75(v0) =>
static String m78(v0) =>
"Установленное количество ядер: ${v0} (Эта функция применяется при запуске через SCToolbox или в режиме администратора RSI Launcher из набора инструментов. При значении 0 функция отключена)";
static String m76(v0) =>
static String m79(v0) =>
"⚠ AnalyticsApi.touch(\"launch\") ошибка: ${v0} - продолжение";
static String m77(v0) => "✗ appModel.initApp() ошибка: ${v0}";
static String m80(v0) => "✗ appModel.initApp() ошибка: ${v0}";
static String m78(v0) => "⚠ aria2cModelProvider ошибка инициализации: ${v0}";
static String m81(v0) => "⚠ aria2cModelProvider ошибка инициализации: ${v0}";
static String m79(v0) => "⚠ URLConf.checkHost() ошибка: ${v0} - продолжение";
static String m80(v0) =>
"⚠ appModel.checkUpdate() ошибка: ${v0} - продолжение";
static String m81(v0) => "[Диагностика] Не удалось закрыть Hive boxes: ${v0}";
static String m82(v0) =>
"[Диагностика] Директория базы данных не существует: ${v0}";
static String m82(v0) => "⚠ URLConf.checkHost() ошибка: ${v0} - продолжение";
static String m83(v0) =>
"⚠ appModel.checkUpdate() ошибка: ${v0} - продолжение";
static String m84(v0) => "[Диагностика] Не удалось закрыть Hive boxes: ${v0}";
static String m85(v0) =>
"[Диагностика] Директория базы данных не существует: ${v0}";
static String m86(v0) =>
"[Диагностика] Удаление директории базы данных: ${v0}";
static String m84(v0) => "[Диагностика] ${v0}";
static String m87(v0) => "[Диагностика] ${v0}";
static String m85(v0) => "Режим диагностики - Шаг ${v0}";
static String m88(v0) => "Режим диагностики - Шаг ${v0}";
static String m86(v0) => "✗ Hive.openBox(\"app_conf\") ошибка: ${v0}";
static String m89(v0) => "✗ Hive.openBox(\"app_conf\") ошибка: ${v0}";
static String m87(v0) => "[${v0}] ⚠ Лог-файл не существует";
static String m90(v0) => "[${v0}] ⚠ Лог-файл не существует";
static String m88(v0) =>
static String m91(v0) =>
"[${v0}] --- Чтение лога завершено (показаны последние 1000 строк) ---";
static String m89(v0, v1) => "[${v0}] ✗ Не удалось прочитать лог: ${v1}";
static String m90(v0) =>
"[Диагностика] Не удалось сбросить базу данных: ${v0}";
static String m91(v0) => "[${v0}] Начало инициализации...";
static String m92(v0) => "[${v0}] --- Начало чтения полного лог-файла ---";
static String m92(v0, v1) => "[${v0}] ✗ Не удалось прочитать лог: ${v1}";
static String m93(v0) =>
"Очистка не удалась, пожалуйста, удалите файл вручную, расположение файла: ${v0}";
"[Диагностика] Не удалось сбросить базу данных: ${v0}";
static String m94(v0) => "Произошла ошибка: ${v0}";
static String m94(v0) => "[${v0}] Начало инициализации...";
static String m95(v0) =>
"Ошибка инициализации, пожалуйста, сделайте снимок экрана и сообщите разработчику. ${v0}";
static String m95(v0) => "[${v0}] --- Начало чтения полного лог-файла ---";
static String m96(v0) =>
"Если у вас возникли проблемы с патчем NVME, запустите этот инструмент. (Может привести к недоступности установки/обновления игры.)\n\nСтатус патча: ${v0}";
"Очистка не удалась, пожалуйста, удалите файл вручную, расположение файла: ${v0}";
static String m97(v0) =>
"Использовать сервис зеркальной загрузки от китайской Star Citizen Wiki для загрузки или восстановления файла p4k.\nИнформация о версии: ${v0}";
static String m97(v0) => "Произошла ошибка: ${v0}";
static String m98(v0) =>
"В некоторых случаях лог-файл RSI Launcher может повредиться, что мешает завершению сканирования проблем. Используйте этот инструмент для очистки поврежденных лог-файлов.\n\nТекущий размер лог-файла: ${v0} МБ";
"Ошибка инициализации, пожалуйста, сделайте снимок экрана и сообщите разработчику. ${v0}";
static String m99(v0) =>
"Если у вас возникли проблемы с патчем NVME, запустите этот инструмент. (Может привести к недоступности установки/обновления игры.)\n\nСтатус патча: ${v0}";
static String m100(v0) =>
"Использовать сервис зеркальной загрузки от китайской Star Citizen Wiki для загрузки или восстановления файла p4k.\nИнформация о версии: ${v0}";
static String m101(v0) =>
"В некоторых случаях лог-файл RSI Launcher может повредиться, что мешает завершению сканирования проблем. Используйте этот инструмент для очистки поврежденных лог-файлов.\n\nТекущий размер лог-файла: ${v0} МБ";
static String m102(v0) =>
"Если графика игры выглядит необычно или после обновления версии, используйте этот инструмент для очистки устаревших шейдеров (также вернёт Vulkan к DX11)\n\nРазмер кэша: ${v0} МБ";
static String m100(v0, v1, v2, v3, v4) =>
static String m103(v0, v1, v2, v3, v4) =>
"Система: ${v0}\n\nПроцессор: ${v1}\n\nОбъем памяти: ${v2}GB\n\nИнформация о видеокарте:\n${v3}\n\nИнформация о жестком диске:\n${v4}\n\n";
static String m103(v0) => "Ошибка обработки: ${v0}";
static String m106(v0) => "Ошибка обработки: ${v0}";
static String m104(v0) => "Не удалось прочитать информацию о лаунчере: ${v0}";
static String m107(v0) => "Не удалось прочитать информацию о лаунчере: ${v0}";
static String m105(v0) => "Статус патча: ${v0}";
static String m108(v0) => "Статус патча: ${v0}";
static String m106(v0) => "Внутренняя версия лаунчера: ${v0}";
static String m109(v0) => "Внутренняя версия лаунчера: ${v0}";
static String m114(v0) => "Открытие файла: ${v0}";
static String m117(v0) => "Открытие файла: ${v0}";
static String m115(v0, v1) =>
static String m118(v0, v1) =>
"Загрузка завершена: ${v0} файлов, время: ${v1} мс";
static String m116(v0) => "Чтение файла: ${v0}...";
static String m119(v0) => "Чтение файла: ${v0}...";
static String m117(v0, v1) => "Обработка файлов (${v0}/${v1})...";
static String m120(v0, v1) => "Обработка файлов (${v0}/${v1})...";
static String m118(v0) => "Неизвестный тип файла\n${v0}";
static String m121(v0) => "Неизвестный тип файла\n${v0}";
static String m119(v0) => "Просмотрщик P4K -> ${v0}";
static String m122(v0) => "Просмотрщик P4K -> ${v0}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@ -402,30 +402,30 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage(
"Проверка: среды выполнения",
),
"doctor_action_info_game_abnormal_exit": m6,
"doctor_action_info_game_abnormal_exit": m9,
"doctor_action_info_game_abnormal_exit_unknown":
MessageLookupByLibrary.simpleMessage(
"Аварийное завершение игры: неизвестная ошибка",
),
"doctor_action_info_info_feedback": m7,
"doctor_action_result_analysis_issues_found": m8,
"doctor_action_info_info_feedback": m10,
"doctor_action_result_analysis_issues_found": m11,
"doctor_action_result_analysis_no_issue":
MessageLookupByLibrary.simpleMessage(
"Анализ завершен, проблем не обнаружено",
),
"doctor_action_result_create_folder_fail": m9,
"doctor_action_result_create_folder_fail": m12,
"doctor_action_result_create_folder_success":
MessageLookupByLibrary.simpleMessage(
"Папка успешно создана, пожалуйста, попробуйте продолжить загрузку игры!",
),
"doctor_action_result_fix_fail": m10,
"doctor_action_result_fix_fail": m13,
"doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage(
"Исправление выполнено успешно, пожалуйста, попробуйте перезагрузить компьютер и продолжить установку игры! Если изменение реестра вызвало проблемы совместимости с другими программами, используйте очистку реестра NVME в разделе Инструменты.",
),
"doctor_action_result_game_start_success": MessageLookupByLibrary.simpleMessage(
"Исправлено успешно, попробуйте запустить игру. (Если проблема не устраняется, используйте \'Переустановить EAC\' в наборе инструментов.)",
),
"doctor_action_result_info_unsupported_os": m11,
"doctor_action_result_info_unsupported_os": m14,
"doctor_action_result_issue_not_supported":
MessageLookupByLibrary.simpleMessage(
"Эта проблема в настоящее время не поддерживает автоматическое исправление, пожалуйста, предоставьте снимок экрана для получения помощи",
@ -518,10 +518,10 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_info_processing": MessageLookupByLibrary.simpleMessage(
"Обработка...",
),
"doctor_info_result_add_registry_value": m12,
"doctor_info_result_add_registry_value": m15,
"doctor_info_result_chinese_install_path":
MessageLookupByLibrary.simpleMessage("Путь установки на китайском!"),
"doctor_info_result_chinese_install_path_error": m13,
"doctor_info_result_chinese_install_path_error": m16,
"doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage(
"Имя пользователя на китайском!",
),
@ -529,12 +529,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Имя пользователя на китайском может вызвать ошибки запуска/установки игры! Нажмите кнопку исправить, чтобы увидеть руководство по изменению!",
),
"doctor_info_result_create_live_folder": m14,
"doctor_info_result_create_live_folder": m17,
"doctor_info_result_easyanticheat_not_installed":
MessageLookupByLibrary.simpleMessage(
"EasyAntiCheat не установлен или некорректно завершен",
),
"doctor_info_result_fix_suggestion": m15,
"doctor_info_result_fix_suggestion": m18,
"doctor_info_result_incompatible_nvme_device":
MessageLookupByLibrary.simpleMessage(
"Новое устройство NVME, временно несовместимое с RSI Launcher, может привести к сбою установки",
@ -545,7 +545,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"doctor_info_result_low_physical_memory":
MessageLookupByLibrary.simpleMessage("Недостаточно физической памяти"),
"doctor_info_result_memory_requirement": m16,
"doctor_info_result_memory_requirement": m19,
"doctor_info_result_missing_easyanticheat_files":
MessageLookupByLibrary.simpleMessage("Отсутствуют файлы EasyAntiCheat"),
"doctor_info_result_missing_live_folder": MessageLookupByLibrary.simpleMessage(
@ -557,7 +557,7 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage(
"Неподдерживаемая операционная система, игра может не запуститься",
),
"doctor_info_result_upgrade_system": m17,
"doctor_info_result_upgrade_system": m20,
"doctor_info_result_verify_files_with_rsi_launcher":
MessageLookupByLibrary.simpleMessage(
"Файлы EasyAntiCheat не найдены в папке LIVE или файлы неполные. Пожалуйста, используйте RSI Launcher для проверки файлов",
@ -572,7 +572,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Пожалуйста, выберите директорию установки игры на главной странице.",
),
"doctor_title_one_click_diagnosis": m18,
"doctor_title_one_click_diagnosis": m21,
"downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage(
"Отменить все",
),
@ -608,11 +608,11 @@ class MessageLookup extends MessageLookupByLibrary {
"downloader_action_resume_all": MessageLookupByLibrary.simpleMessage(
"Возобновить все",
),
"downloader_info_checked": m19,
"downloader_info_checked": m22,
"downloader_info_checking": MessageLookupByLibrary.simpleMessage(
"Проверка",
),
"downloader_info_checking_progress": m20,
"downloader_info_checking_progress": m23,
"downloader_info_deleted": MessageLookupByLibrary.simpleMessage("Удалено"),
"downloader_info_download_completed": MessageLookupByLibrary.simpleMessage(
"Загрузка завершена",
@ -624,9 +624,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Пожалуйста, введите единицу скорости загрузки, например: 1, 100k, 10m. Оставьте поле пустым или введите 0 для снятия ограничения.",
),
"downloader_info_download_upload_speed": m21,
"downloader_info_downloaded": m22,
"downloader_info_downloading": m23,
"downloader_info_download_upload_speed": m24,
"downloader_info_downloaded": m25,
"downloader_info_downloading": m26,
"downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage(
"Загрузка...",
),
@ -651,9 +651,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Настройки ограничения скорости сохранены. Будут применены при следующем запуске загрузчика.",
),
"downloader_info_status": m24,
"downloader_info_total_size": m25,
"downloader_info_uploaded": m26,
"downloader_info_status": m27,
"downloader_info_total_size": m28,
"downloader_info_uploaded": m29,
"downloader_info_waiting": MessageLookupByLibrary.simpleMessage("Ожидание"),
"downloader_input_download_speed_limit":
MessageLookupByLibrary.simpleMessage("Ограничение загрузки:"),
@ -700,7 +700,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Локализация DPS калькулятора"),
"home_action_external_browser_extension":
MessageLookupByLibrary.simpleMessage("Расширение внешнего браузера:"),
"home_action_info_abnormal_game_exit": m27,
"home_action_info_abnormal_game_exit": m30,
"home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, проверьте появившуюся веб-ссылку для получения подробной информации.",
),
@ -711,7 +711,7 @@ class MessageLookup extends MessageLookupByLibrary {
"home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage(
"Встроено в игру",
),
"home_action_info_initialization_failed": m28,
"home_action_info_initialization_failed": m31,
"home_action_info_initializing_resources":
MessageLookupByLibrary.simpleMessage(
"Инициализация ресурсов локализации...",
@ -734,7 +734,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Roberts Space Industries, начало всего",
),
"home_action_info_scan_complete_valid_directories_found": m29,
"home_action_info_scan_complete_valid_directories_found": m32,
"home_action_info_scanning": MessageLookupByLibrary.simpleMessage(
"Сканирование...",
),
@ -801,7 +801,7 @@ class MessageLookup extends MessageLookupByLibrary {
"home_holiday_countdown": MessageLookupByLibrary.simpleMessage(
"Обратный отсчет до праздников",
),
"home_holiday_countdown_days": m30,
"home_holiday_countdown_days": m33,
"home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage(
"* Даты праздников собираются и поддерживаются вручную и могут содержать ошибки. Обратная связь приветствуется!",
),
@ -882,10 +882,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Чтение файла p4k..."),
"home_localization_advanced_msg_reading_server_localization_text":
MessageLookupByLibrary.simpleMessage("Получение текста локализации..."),
"home_localization_advanced_msg_version": m31,
"home_localization_advanced_title": m32,
"home_localization_advanced_title_msg": m33,
"home_localization_advanced_title_preview": m34,
"home_localization_advanced_msg_version": m34,
"home_localization_advanced_title": m35,
"home_localization_advanced_title_msg": m36,
"home_localization_advanced_title_preview": m37,
"home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage(
"Для этой версии нет описания",
),
@ -895,7 +895,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Доступна новая версия локализации!",
),
"home_localization_new_version_installed": m35,
"home_localization_new_version_installed": m38,
"home_localization_select_customize_file":
MessageLookupByLibrary.simpleMessage(
"Пожалуйста, выберите пользовательский файл локализации",
@ -919,7 +919,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Эта функция помогает вам удобнее запускать игру.\n\nДля обеспечения безопасности аккаунта эта функция использует локализованный браузер для сохранения состояния входа, и не сохраняет информацию о вашем пароле (если вы не включили функцию автозаполнения).\n\nПри использовании этой функции для входа в аккаунт убедитесь, что вы скачали SCToolbox из надежного источника.",
),
"home_login_info_rsi_server_report": m36,
"home_login_info_rsi_server_report": m39,
"home_login_title_launching_game": MessageLookupByLibrary.simpleMessage(
"Запускаем игру...",
),
@ -952,7 +952,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Поддержка метода ввода сообщества не установлена",
),
"input_method_community_input_method_support_version": m39,
"input_method_community_input_method_support_version": m42,
"input_method_confirm_enable_remote_input":
MessageLookupByLibrary.simpleMessage(
"Подтвердить включение удаленного ввода?",
@ -1014,7 +1014,7 @@ class MessageLookup extends MessageLookupByLibrary {
"input_method_support_updated": MessageLookupByLibrary.simpleMessage(
"Поддержка метода ввода сообщества обновлена",
),
"input_method_support_updated_to_version": m40,
"input_method_support_updated_to_version": m43,
"input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage(
"Текст не может быть пустым!",
),
@ -1035,7 +1035,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Отзыв о локализации"),
"localization_action_uninstall_translation":
MessageLookupByLibrary.simpleMessage("Удалить локализацию"),
"localization_info_channel": m41,
"localization_info_channel": m44,
"localization_info_community_translation":
MessageLookupByLibrary.simpleMessage("Локализация сообщества"),
"localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage(
@ -1044,16 +1044,16 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_custom_files": MessageLookupByLibrary.simpleMessage(
"Пользовательские файлы",
),
"localization_info_enabled": m42,
"localization_info_enabled": m45,
"localization_info_incompatible_translation_params_warning":
MessageLookupByLibrary.simpleMessage(
"USER.cfg содержит несовместимые параметры локализации, это может быть остаток от предыдущих файлов локализации.\n\nЭто может привести к неработающей локализации или искаженному тексту, нажмите подтвердить, чтобы удалить эти параметры (это не повлияет на другие настройки).",
),
"localization_info_installation_error": m43,
"localization_info_installation_error": m46,
"localization_info_installed": MessageLookupByLibrary.simpleMessage(
"Установлено",
),
"localization_info_installed_version": m44,
"localization_info_installed_version": m47,
"localization_info_language": MessageLookupByLibrary.simpleMessage(
"Язык: ",
),
@ -1078,14 +1078,14 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_unavailable": MessageLookupByLibrary.simpleMessage(
"Недоступно",
),
"localization_info_update_time": m45,
"localization_info_version_number": m46,
"log_analyzer_collision_details": m47,
"log_analyzer_death_details": m48,
"localization_info_update_time": m48,
"localization_info_version_number": m49,
"log_analyzer_collision_details": m50,
"log_analyzer_death_details": m51,
"log_analyzer_description": MessageLookupByLibrary.simpleMessage(
"Анализ ваших игровых записей (логин, смерти, убийства и другая информация)",
),
"log_analyzer_details_info": m49,
"log_analyzer_details_info": m52,
"log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage(
"Дезинтеграция",
),
@ -1129,11 +1129,11 @@ class MessageLookup extends MessageLookupByLibrary {
"log_analyzer_game_start": MessageLookupByLibrary.simpleMessage(
"Запуск игры",
),
"log_analyzer_kill_death_suicide_count": m50,
"log_analyzer_kill_death_suicide_count": m53,
"log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage(
"Сводка убийств",
),
"log_analyzer_mode_loading_time": m51,
"log_analyzer_mode_loading_time": m54,
"log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage(
"Сбои игры не обнаружены",
),
@ -1147,9 +1147,9 @@ class MessageLookup extends MessageLookupByLibrary {
"log_analyzer_play_time": MessageLookupByLibrary.simpleMessage(
"Время игры",
),
"log_analyzer_play_time_format": m52,
"log_analyzer_player_location": m53,
"log_analyzer_player_login": m54,
"log_analyzer_play_time_format": m55,
"log_analyzer_player_location": m56,
"log_analyzer_player_login": m57,
"log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage(
"Введите ключевые слова для поиска",
),
@ -1162,7 +1162,7 @@ class MessageLookup extends MessageLookupByLibrary {
"log_analyzer_title": MessageLookupByLibrary.simpleMessage(
"Анализатор логов",
),
"log_analyzer_vehicle_damage_details": m55,
"log_analyzer_vehicle_damage_details": m58,
"log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage(
"Просмотр локального инвентаря",
),
@ -1195,7 +1195,7 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage(
"Подтвердить роспуск",
),
"party_room_connect_error": m56,
"party_room_connect_error": m59,
"party_room_connect_failed": MessageLookupByLibrary.simpleMessage(
"Ошибка подключения",
),
@ -1226,7 +1226,7 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_create_room": MessageLookupByLibrary.simpleMessage(
"Создать комнату",
),
"party_room_days_ago": m57,
"party_room_days_ago": m60,
"party_room_disconnected": MessageLookupByLibrary.simpleMessage(
"Соединение потеряно",
),
@ -1265,7 +1265,7 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_exit_room": MessageLookupByLibrary.simpleMessage(
"Выйти из комнаты",
),
"party_room_exit_room_failed": m58,
"party_room_exit_room_failed": m61,
"party_room_game_id_empty": MessageLookupByLibrary.simpleMessage(
"Игровой ID не может быть пустым",
),
@ -1275,12 +1275,12 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_game_not_started": MessageLookupByLibrary.simpleMessage(
"<Игра не запущена>",
),
"party_room_get_code_failed": m59,
"party_room_get_code_failed": m62,
"party_room_go_login": MessageLookupByLibrary.simpleMessage("Войти"),
"party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage(
"Вы просматриваете как гость. Войдите, чтобы создавать или присоединяться к комнатам.",
),
"party_room_hours_ago": m60,
"party_room_hours_ago": m63,
"party_room_info_updated": MessageLookupByLibrary.simpleMessage(
"Информация о комнате обновлена",
),
@ -1299,8 +1299,8 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_kick_member": MessageLookupByLibrary.simpleMessage(
"Выгнать участника",
),
"party_room_kick_member_confirm": m61,
"party_room_kick_member_failed": m62,
"party_room_kick_member_confirm": m64,
"party_room_kick_member_failed": m65,
"party_room_kicked": MessageLookupByLibrary.simpleMessage(
"был выгнан из комнаты",
),
@ -1317,15 +1317,15 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_link_format_error": MessageLookupByLibrary.simpleMessage(
"Неверный формат ссылки!",
),
"party_room_load_list_failed": m63,
"party_room_load_list_failed": m66,
"party_room_loading": MessageLookupByLibrary.simpleMessage("Загрузка..."),
"party_room_location": MessageLookupByLibrary.simpleMessage("Локация"),
"party_room_login": MessageLookupByLibrary.simpleMessage("Войти"),
"party_room_main_menu": MessageLookupByLibrary.simpleMessage(
"<Главное меню>",
),
"party_room_members_count": m64,
"party_room_minutes_ago": m65,
"party_room_members_count": m67,
"party_room_minutes_ago": m68,
"party_room_need_login": MessageLookupByLibrary.simpleMessage(
"Требуется вход",
),
@ -1368,12 +1368,12 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_reconnect": MessageLookupByLibrary.simpleMessage(
"Переподключиться",
),
"party_room_reconnect_failed": m66,
"party_room_reconnect_failed": m69,
"party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage(
"Соединение с сервером комнаты потеряно. Переподключиться?",
),
"party_room_reconnect_retry": m67,
"party_room_register_failed": m68,
"party_room_reconnect_retry": m70,
"party_room_register_failed": m71,
"party_room_register_success": MessageLookupByLibrary.simpleMessage(
"Регистрация успешна!",
),
@ -1465,8 +1465,8 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_transfer_owner": MessageLookupByLibrary.simpleMessage(
"Передать владение",
),
"party_room_transfer_owner_confirm": m69,
"party_room_transfer_owner_failed": m70,
"party_room_transfer_owner_confirm": m72,
"party_room_transfer_owner_failed": m73,
"party_room_unknown_area": MessageLookupByLibrary.simpleMessage(
"Неизвестная зона",
),
@ -1524,7 +1524,7 @@ class MessageLookup extends MessageLookupByLibrary {
"performance_info_applied": MessageLookupByLibrary.simpleMessage(
"Применено",
),
"performance_info_current_status": m71,
"performance_info_current_status": m74,
"performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage(
"Удаление файла конфигурации...",
),
@ -1542,7 +1542,7 @@ class MessageLookup extends MessageLookupByLibrary {
"performance_info_graphics": MessageLookupByLibrary.simpleMessage(
"Графика",
),
"performance_info_min_max_values": m72,
"performance_info_min_max_values": m75,
"performance_info_not_applied": MessageLookupByLibrary.simpleMessage(
"Не применено",
),
@ -1722,7 +1722,7 @@ class MessageLookup extends MessageLookupByLibrary {
"performance_json_text_water_info": MessageLookupByLibrary.simpleMessage(
"Уровень всех водных эффектов",
),
"performance_title_performance_optimization": m73,
"performance_title_performance_optimization": m76,
"setting_action_clear_translation_file_cache":
MessageLookupByLibrary.simpleMessage("Очистить кэш файлов локализации"),
"setting_action_create_desktop_shortcut":
@ -1737,7 +1737,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"setting_action_info_autofill_data_cleared":
MessageLookupByLibrary.simpleMessage("Данные автозаполнения очищены"),
"setting_action_info_cache_clearing_info": m74,
"setting_action_info_cache_clearing_info": m77,
"setting_action_info_clear_cache_warning":
MessageLookupByLibrary.simpleMessage(
"Это не повлияет на уже установленные локализации.",
@ -1799,7 +1799,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"setting_action_reset_auto_password_fill":
MessageLookupByLibrary.simpleMessage("Сбросить автозаполнение пароля"),
"setting_action_set_core_count": m75,
"setting_action_set_core_count": m78,
"setting_action_set_game_file": MessageLookupByLibrary.simpleMessage(
"Установить файл игры (StarCitizen.exe)",
),
@ -1849,39 +1849,39 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_analytics_done": MessageLookupByLibrary.simpleMessage(
"✓ AnalyticsApi.touch(\"launch\") выполнено",
),
"splash_analytics_error": m76,
"splash_analytics_error": m79,
"splash_analytics_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ AnalyticsApi.touch() таймаут (10с) - продолжение",
),
"splash_app_init_done": MessageLookupByLibrary.simpleMessage(
"✓ appModel.initApp() выполнено",
),
"splash_app_init_error": m77,
"splash_app_init_error": m80,
"splash_app_init_timeout": MessageLookupByLibrary.simpleMessage(
"✗ appModel.initApp() таймаут (10с)",
),
"splash_aria2c_done": MessageLookupByLibrary.simpleMessage(
"✓ aria2cModelProvider инициализация завершена",
),
"splash_aria2c_error": m78,
"splash_aria2c_error": m81,
"splash_check_host_done": MessageLookupByLibrary.simpleMessage(
"✓ URLConf.checkHost() выполнено",
),
"splash_check_host_error": m79,
"splash_check_host_error": m82,
"splash_check_host_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ URLConf.checkHost() таймаут (10с) - продолжение",
),
"splash_check_update_done": MessageLookupByLibrary.simpleMessage(
"✓ appModel.checkUpdate() выполнено",
),
"splash_check_update_error": m80,
"splash_check_update_error": m83,
"splash_check_update_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ appModel.checkUpdate() таймаут (10с) - продолжение",
),
"splash_check_version": MessageLookupByLibrary.simpleMessage(
"Проверка splash_alert_info_version...",
),
"splash_close_hive_failed": m81,
"splash_close_hive_failed": m84,
"splash_context_unmounted": MessageLookupByLibrary.simpleMessage(
"✗ Context размонтирован",
),
@ -1897,16 +1897,16 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_db_deleted": MessageLookupByLibrary.simpleMessage(
"[Диагностика] Директория базы данных удалена",
),
"splash_db_not_exist": m82,
"splash_db_not_exist": m85,
"splash_db_reset_done": MessageLookupByLibrary.simpleMessage(
"[Диагностика] Сброс базы данных завершён, подготовка к выходу из приложения",
),
"splash_db_reset_msg": MessageLookupByLibrary.simpleMessage(
"База данных сброшена, приложение будет закрыто. Пожалуйста, перезапустите приложение.",
),
"splash_deleting_db": m83,
"splash_diagnostic_log": m84,
"splash_diagnostic_mode": m85,
"splash_deleting_db": m86,
"splash_diagnostic_log": m87,
"splash_diagnostic_mode": m88,
"splash_error": MessageLookupByLibrary.simpleMessage("Ошибка"),
"splash_exec_analytics": MessageLookupByLibrary.simpleMessage(
"Выполнение AnalyticsApi.touch(\"launch\")...",
@ -1926,7 +1926,7 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_hive_done": MessageLookupByLibrary.simpleMessage(
"✓ Hive.openBox(\"app_conf\") выполнено",
),
"splash_hive_error": m86,
"splash_hive_error": m89,
"splash_hive_timeout": MessageLookupByLibrary.simpleMessage(
"✗ Hive.openBox(\"app_conf\") таймаут (10с)",
),
@ -1936,24 +1936,24 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_init_task_status": MessageLookupByLibrary.simpleMessage(
"Статус задач инициализации:",
),
"splash_log_not_exist": m87,
"splash_log_read_done": m88,
"splash_log_not_exist": m90,
"splash_log_read_done": m91,
"splash_open_hive_box": MessageLookupByLibrary.simpleMessage(
"Открытие Hive app_conf box...",
),
"splash_read_full_log": MessageLookupByLibrary.simpleMessage(
"Прочитать полный лог",
),
"splash_read_log_failed": m89,
"splash_read_log_failed": m92,
"splash_reset_database": MessageLookupByLibrary.simpleMessage(
"Сбросить базу данных",
),
"splash_reset_db_failed": m90,
"splash_reset_db_failed": m93,
"splash_show_agreement": MessageLookupByLibrary.simpleMessage(
"Необходимо показать диалог пользовательского соглашения...",
),
"splash_start_init": m91,
"splash_start_read_log": m92,
"splash_start_init": m94,
"splash_start_read_log": m95,
"splash_step0_done": MessageLookupByLibrary.simpleMessage(
"--- Шаг 0 завершён, переход к Шагу 1 ---",
),
@ -2027,14 +2027,14 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"Очистка завершена, пожалуйста, выполните установку или запуск игры.",
),
"tools_action_info_cleanup_failed": m93,
"tools_action_info_cleanup_failed": m96,
"tools_action_info_config_file_not_exist": MessageLookupByLibrary.simpleMessage(
"Конфигурационный файл не существует, попробуйте запустить игру один раз",
),
"tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage(
"Файлы EAC удалены. Сейчас будет открыт RSI Launcher, пожалуйста, перейдите в SETTINGS -> VERIFY для переустановки EAC.",
),
"tools_action_info_error_occurred": m94,
"tools_action_info_error_occurred": m97,
"tools_action_info_fix_success_restart": MessageLookupByLibrary.simpleMessage(
"Исправление успешно, попробуйте перезагрузить компьютер и продолжить установку игры! Если изменения реестра вызвали проблемы совместимости с другими программами, используйте инструмент очистки реестра NVME в разделе Инструменты.",
),
@ -2046,7 +2046,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Запись IP-адресов в файл Hosts для решения проблем с DNS-загрязнением, препятствующих входу на официальный сайт в некоторых регионах.\nЭта функция находится на первом этапе тестирования, пожалуйста, сообщайте о любых проблемах.",
),
"tools_action_info_init_failed": m95,
"tools_action_info_init_failed": m98,
"tools_action_info_log_file_not_exist": MessageLookupByLibrary.simpleMessage(
"Лог-файл не существует, попробуйте запустить игру или начать установку и выйти из лаунчера. Если проблема не решена, попробуйте обновить лаунчер до последней версии!",
),
@ -2059,7 +2059,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage(
"Не установлен",
),
"tools_action_info_nvme_patch_issue": m96,
"tools_action_info_nvme_patch_issue": m99,
"tools_action_info_one_key_close_lens_shake":
MessageLookupByLibrary.simpleMessage(
"Одним кликом отключить дрожание камеры в игре для упрощения фотосъёмки.\n\nИнформация о параметрах предоставлена @拉邦那 Lapernum.",
@ -2068,7 +2068,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Загрузка p4k уже выполняется, пожалуйста, проверьте менеджер загрузок!",
),
"tools_action_info_p4k_download_repair_tip": m97,
"tools_action_info_p4k_download_repair_tip": m100,
"tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage(
"P4k - это основной файл игры Star Citizen, размером более 100 ГБ. Автономное скачивание, предоставляемое SCToolbox, помогает пользователям с медленной загрузкой p4k или для исправления файла p4k, который не может быть исправлен официальным лаунчером.\n\nДалее появится диалоговое окно с запросом места сохранения (можно выбрать папку Star Citizen или другое место). После завершения загрузки убедитесь, что файл P4K находится в папке LIVE, затем используйте лаунчер Star Citizen для проверки обновлений.",
),
@ -2086,7 +2086,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Директория RSI Launcher не найдена, пожалуйста, выполните операцию вручную.",
),
"tools_action_info_rsi_launcher_log_issue": m98,
"tools_action_info_rsi_launcher_log_issue": m101,
"tools_action_info_rsi_launcher_not_found":
MessageLookupByLibrary.simpleMessage(
"RSI Launcher не найден, попробуйте переустановить его или добавить вручную в настройках.",
@ -2098,12 +2098,12 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage(
"Запуск RSI Launcher от имени администратора может решить некоторые проблемы.\n\nЕсли настроены параметры блокировки энергоэффективных ядер, они также будут применены здесь.",
),
"tools_action_info_shader_cache_issue": m99,
"tools_action_info_shader_cache_issue": m102,
"tools_action_info_star_citizen_not_found":
MessageLookupByLibrary.simpleMessage(
"Местоположение установки Star Citizen не найдено, пожалуйста, запустите игру хотя бы один раз или добавьте местоположение вручную в настройках.",
),
"tools_action_info_system_info_content": m100,
"tools_action_info_system_info_content": m103,
"tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage(
"Информация о системе",
),
@ -2174,7 +2174,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_info_game_install_location": MessageLookupByLibrary.simpleMessage(
"Место установки игры: ",
),
"tools_info_processing_failed": m103,
"tools_info_processing_failed": m106,
"tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage(
"Местоположение RSI Launcher:",
),
@ -2203,15 +2203,15 @@ class MessageLookup extends MessageLookupByLibrary {
"Не удалось прочитать информацию о лаунчере!",
),
"tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args":
m104,
m107,
"tools_rsi_launcher_enhance_msg_error_launcher_notfound":
MessageLookupByLibrary.simpleMessage("RSI Launcher не найден"),
"tools_rsi_launcher_enhance_msg_patch_status": m105,
"tools_rsi_launcher_enhance_msg_patch_status": m108,
"tools_rsi_launcher_enhance_msg_uninstall":
MessageLookupByLibrary.simpleMessage(
"* Чтобы удалить патч улучшений, переустановите RSI Launcher.",
),
"tools_rsi_launcher_enhance_msg_version": m106,
"tools_rsi_launcher_enhance_msg_version": m109,
"tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage(
"Улучшения RSI Launcher - это функция сообщества, которая распаковывает \"RSI Launcher\" на вашем компьютере и добавляет дополнительные функции улучшений. Какие функции использовать - решать вам.\n\nВ настоящее время CIG разрешает нам только операции с мультиязычностью. Ускорение загрузки лаунчера - это дополнительная функция, которую мы считаем полезной. Нарушение пользовательского соглашения CIG (https://robertsspaceindustries.com/eula) может привести к серьезным последствиям, включая блокировку аккаунта. Решение об использовании остается за вами, мы не несем ответственности за возможные последствия (повреждение игры, блокировка аккаунта и т.д.).\n\nДля модификаций лаунчера мы открыли исходный код на: https://github.com/StarCitizenToolBox/RSILauncherEnhance, при необходимости вы можете его изучить.\n\nЕсли по какой-либо причине вам нужно отменить этот патч улучшений, просто переустановите официальный лаунчер поверх текущего.",
),
@ -2250,18 +2250,18 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage(
"Инициализация...",
),
"tools_unp4k_msg_open_file": m114,
"tools_unp4k_msg_read_completed": m115,
"tools_unp4k_msg_read_file": m116,
"tools_unp4k_msg_open_file": m117,
"tools_unp4k_msg_read_completed": m118,
"tools_unp4k_msg_read_file": m119,
"tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage(
"Чтение файла P4K...",
),
"tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage(
"Обработка файлов...",
),
"tools_unp4k_msg_reading3": m117,
"tools_unp4k_msg_unknown_file_type": m118,
"tools_unp4k_title": m119,
"tools_unp4k_msg_reading3": m120,
"tools_unp4k_msg_unknown_file_type": m121,
"tools_unp4k_title": m122,
"tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage(
"Нажмите на файл для предварительного просмотра",
),

File diff suppressed because it is too large Load Diff

View File

@ -33,222 +33,222 @@ class MessageLookup extends MessageLookupByLibrary {
static String m5(v0) => "發現新版本 -> ${v0}";
static String m6(v0) => "遊戲錯誤退出:${v0}";
static String m9(v0) => "遊戲錯誤退出:${v0}";
static String m7(v0) => "info:${v0},請點擊右下角加群回饋。";
static String m10(v0) => "info:${v0},請點擊右下角加群回饋。";
static String m8(v0) => "分析完畢,發現 ${v0} 個問題";
static String m11(v0) => "分析完畢,發現 ${v0} 個問題";
static String m9(v0, v1) => "建立資料夾失敗,請嘗試手動建立。\n目錄:${v0} \n錯誤:${v1}";
static String m12(v0, v1) => "建立資料夾失敗,請嘗試手動建立。\n目錄:${v0} \n錯誤:${v1}";
static String m10(v0) => "修復失敗,${v0}";
static String m13(v0) => "修復失敗,${v0}";
static String m11(v0) => "不支援的作業系統:${v0}";
static String m14(v0) => "不支援的作業系統:${v0}";
static String m12(v0) =>
static String m15(v0) =>
"為登錄鍵值添加 ForcedPhysicalSectorSizeInBytes 值 模擬舊裝置。硬碟分區(${v0})";
static String m13(v0) => "中文安裝路徑!這可能會導致遊戲 啟動/安裝 錯誤!(${v0}請在RSI啟動器更換安裝路徑。";
static String m16(v0) => "中文安裝路徑!這可能會導致遊戲 啟動/安裝 錯誤!(${v0}請在RSI啟動器更換安裝路徑。";
static String m14(v0) => "點擊修復為您新增 LIVE 資料夾,完成後重試安裝。(${v0})";
static String m17(v0) => "點擊修復為您新增 LIVE 資料夾,完成後重試安裝。(${v0})";
static String m15(v0) => "修復建議: ${v0}";
static String m18(v0) => "修復建議: ${v0}";
static String m16(v0) => "您至少需要 16GB 的物理記憶體Memory才可執行此遊戲。目前大小${v0}";
static String m19(v0) => "您至少需要 16GB 的物理記憶體Memory才可執行此遊戲。目前大小${v0}";
static String m17(v0) => "請更新您的系統 (${v0})";
static String m20(v0) => "請更新您的系統 (${v0})";
static String m18(v0) => "疑難排解 -> ${v0}";
static String m21(v0) => "疑難排解 -> ${v0}";
static String m19(v0) => "已校驗:${v0}";
static String m22(v0) => "已校驗:${v0}";
static String m20(v0) => "校驗中... (${v0}%)";
static String m23(v0) => "校驗中... (${v0}%)";
static String m21(v0, v1) => "下載: ${v0}/s 上傳:${v1}/s";
static String m24(v0, v1) => "下載: ${v0}/s 上傳:${v1}/s";
static String m22(v0) => "已下載:${v0}";
static String m25(v0) => "已下載:${v0}";
static String m23(v0) => "下載中... (${v0}%)";
static String m26(v0) => "下載中... (${v0}%)";
static String m24(v0) => "狀態:${v0}";
static String m27(v0) => "狀態:${v0}";
static String m25(v1) => "總大小:${v1}";
static String m28(v1) => "總大小:${v1}";
static String m26(v0) => "已上傳:${v0}";
static String m29(v0) => "已上傳:${v0}";
static String m27(v0, v1, v2, v3, v4) =>
static String m30(v0, v1, v2, v3, v4) =>
"遊戲非正常退出\nexitCode=${v0}\nstdout=${v1}\nstderr=${v2}\n\n診斷資訊:${v3} \n${v4}";
static String m28(v0) => "初始化網頁翻譯文件失敗!${v0}";
static String m31(v0) => "初始化網頁翻譯文件失敗!${v0}";
static String m29(v0) => "掃描完畢,共找到 ${v0} 個有效安裝目錄";
static String m32(v0) => "掃描完畢,共找到 ${v0} 個有效安裝目錄";
static String m30(v0) => "${v0}";
static String m33(v0) => "${v0}";
static String m31(v0) => "已載入翻譯版本:${v0}";
static String m34(v0) => "已載入翻譯版本:${v0}";
static String m32(v0) => "進階翻譯 -> ${v0}";
static String m35(v0) => "進階翻譯 -> ${v0}";
static String m33(v0, v1) => "翻譯文字行數:${v0} P4K文字行數${v1}";
static String m36(v0, v1) => "翻譯文字行數:${v0} P4K文字行數${v1}";
static String m34(v0) => "預覽:${v0}";
static String m37(v0) => "預覽:${v0}";
static String m35(v0) => "您在 ${v0} 安裝的社群翻譯有新的版本";
static String m38(v0) => "您在 ${v0} 安裝的社群翻譯有新的版本";
static String m36(v1, v2) =>
static String m39(v1, v2) =>
"RSI 伺服器報告版本號:${v1} \n\n本機版本號:${v2} \n\n建議使用 RSI Launcher 更新遊戲!";
static String m39(v0) => "社區輸入法支持:${v0}";
static String m42(v0) => "社區輸入法支持:${v0}";
static String m40(v0) => "社區輸入法支持已更新到:${v0}";
static String m43(v0) => "社區輸入法支持已更新到:${v0}";
static String m41(v0) => "遊戲通道:${v0}";
static String m44(v0) => "遊戲通道:${v0}";
static String m42(v0) => "啟用(${v0}";
static String m45(v0) => "啟用(${v0}";
static String m43(v0) => "安裝錯誤!\n\n ${v0}";
static String m46(v0) => "安裝錯誤!\n\n ${v0}";
static String m44(v0) => "已安裝:${v0}";
static String m47(v0) => "已安裝:${v0}";
static String m45(v0) => "更新時間:${v0}";
static String m48(v0) => "更新時間:${v0}";
static String m46(v0) => "版本:${v0}";
static String m47(v0, v1, v2, v3, v4) =>
"區域:${v0} 玩家駕駛:${v1} 碰撞實體:${v2} \n碰撞載具: ${v3} 碰撞距離:${v4} ";
static String m48(v0, v2, v3) => "受害者ID${v0} \n位置:${v2} \n區域:${v3}";
static String m49(v0) => "詳細資訊:${v0}";
static String m49(v0) => "版本:${v0}";
static String m50(v0, v1, v2, v3, v4) =>
"區域:${v0} 玩家駕駛:${v1} 碰撞實體:${v2} \n碰撞載具: ${v3} 碰撞距離:${v4} ";
static String m51(v0, v2, v3) => "受害者ID${v0} \n位置:${v2} \n區域:${v3}";
static String m52(v0) => "詳細資訊:${v0}";
static String m53(v0, v1, v2, v3, v4) =>
"擊殺次數:${v0} 死亡次數:${v1} 自殺次數:${v2} \n載具損壞(軟死亡):${v3} 載具損壞(解體):${v4}";
static String m51(v0, v1) => "模式:${v0} 用時:${v1}";
static String m54(v0, v1) => "模式:${v0} 用時:${v1}";
static String m52(v0, v1, v2) => "${v0} 小時 ${v1} 分鐘 ${v2}";
static String m55(v0, v1, v2) => "${v0} 小時 ${v1} 分鐘 ${v2}";
static String m53(v0, v1) => "玩家ID${v0} 位置:${v1}";
static String m56(v0, v1) => "玩家ID${v0} 位置:${v1}";
static String m54(v0) => "玩家 ${v0} 登入 ...";
static String m57(v0) => "玩家 ${v0} 登入 ...";
static String m55(v0, v1, v2, v3, v4) =>
static String m58(v0, v1, v2, v3, v4) =>
"載具型號:${v0} \n區域:${v1} \n損毀等級:${v2} ${v3} 責任方:${v4}";
static String m56(v0) => "連接失敗: ${v0}";
static String m59(v0) => "連接失敗: ${v0}";
static String m57(v0) => "${v0} 天前";
static String m60(v0) => "${v0} 天前";
static String m58(v0) => "退出房間失敗: ${v0}";
static String m61(v0) => "退出房間失敗: ${v0}";
static String m59(v0) => "獲取驗證碼失敗: ${v0}";
static String m62(v0) => "獲取驗證碼失敗: ${v0}";
static String m60(v0) => "${v0} 小時前";
static String m63(v0) => "${v0} 小時前";
static String m61(v0) => "確定要踢出 ${v0} 嗎?";
static String m64(v0) => "確定要踢出 ${v0} 嗎?";
static String m62(v0) => "踢出成員失敗:${v0}";
static String m65(v0) => "踢出成員失敗:${v0}";
static String m63(v0) => "載入房間列表失敗: ${v0}";
static String m66(v0) => "載入房間列表失敗: ${v0}";
static String m64(v0, v1) => "${v0}/${v1} 成員";
static String m67(v0, v1) => "${v0}/${v1} 成員";
static String m65(v0) => "${v0} 分鐘前";
static String m68(v0) => "${v0} 分鐘前";
static String m66(v0) => "重連失敗: ${v0}";
static String m69(v0) => "重連失敗: ${v0}";
static String m67(v0) => "重連失敗,已嘗試 ${v0}";
static String m70(v0) => "重連失敗,已嘗試 ${v0}";
static String m68(v0) => "註冊失敗: ${v0}";
static String m71(v0) => "註冊失敗: ${v0}";
static String m69(v0) => "確定要將房主轉移給 ${v0} 嗎?";
static String m72(v0) => "確定要將房主轉移給 ${v0} 嗎?";
static String m70(v0) => "轉移房主失敗:${v0}";
static String m73(v0) => "轉移房主失敗:${v0}";
static String m71(v0) => "目前狀態:${v0}";
static String m74(v0) => "目前狀態:${v0}";
static String m72(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}";
static String m75(v0, v1, v2) => "${v0} 最小值: ${v1} / 最大值: ${v2}";
static String m73(v0) => "畫面調整 -> ${v0}";
static String m76(v0) => "畫面調整 -> ${v0}";
static String m74(v0) => "快取大小 ${v0}MB清理工具箱下載的翻譯文件快取不會影響已安裝的社群翻譯";
static String m77(v0) => "快取大小 ${v0}MB清理工具箱下載的翻譯文件快取不會影響已安裝的社群翻譯";
static String m75(v0) =>
static String m78(v0) =>
"已設定的核心數量:${v0} (此功能適用於首頁的工具箱快速啟動 或 工具中的RSI啟動器管理員模式當為 0 時不啟用此功能 ";
static String m76(v0) => "⚠ AnalyticsApi.touch(\"launch\") 錯誤: ${v0} - 繼續執行";
static String m79(v0) => "⚠ AnalyticsApi.touch(\"launch\") 錯誤: ${v0} - 繼續執行";
static String m77(v0) => "✗ appModel.initApp() 錯誤: ${v0}";
static String m80(v0) => "✗ appModel.initApp() 錯誤: ${v0}";
static String m78(v0) => "⚠ aria2cModelProvider 初始化錯誤: ${v0}";
static String m81(v0) => "⚠ aria2cModelProvider 初始化錯誤: ${v0}";
static String m79(v0) => "⚠ URLConf.checkHost() 錯誤: ${v0} - 繼續執行";
static String m82(v0) => "⚠ URLConf.checkHost() 錯誤: ${v0} - 繼續執行";
static String m80(v0) => "⚠ appModel.checkUpdate() 錯誤: ${v0} - 繼續執行";
static String m83(v0) => "⚠ appModel.checkUpdate() 錯誤: ${v0} - 繼續執行";
static String m81(v0) => "[診斷] 關閉 Hive boxes 失敗: ${v0}";
static String m84(v0) => "[診斷] 關閉 Hive boxes 失敗: ${v0}";
static String m82(v0) => "[診斷] 資料庫目錄不存在: ${v0}";
static String m85(v0) => "[診斷] 資料庫目錄不存在: ${v0}";
static String m83(v0) => "[診斷] 正在刪除資料庫目錄: ${v0}";
static String m86(v0) => "[診斷] 正在刪除資料庫目錄: ${v0}";
static String m84(v0) => "[診斷] ${v0}";
static String m87(v0) => "[診斷] ${v0}";
static String m85(v0) => "診斷模式 - Step ${v0}";
static String m88(v0) => "診斷模式 - Step ${v0}";
static String m86(v0) => "✗ Hive.openBox(\"app_conf\") 錯誤: ${v0}";
static String m89(v0) => "✗ Hive.openBox(\"app_conf\") 錯誤: ${v0}";
static String m87(v0) => "[${v0}] ⚠ 日誌檔案不存在";
static String m90(v0) => "[${v0}] ⚠ 日誌檔案不存在";
static String m88(v0) => "[${v0}] --- 日誌讀取完成 (顯示最後1000行) ---";
static String m91(v0) => "[${v0}] --- 日誌讀取完成 (顯示最後1000行) ---";
static String m89(v0, v1) => "[${v0}] ✗ 讀取日誌失敗: ${v1}";
static String m92(v0, v1) => "[${v0}] ✗ 讀取日誌失敗: ${v1}";
static String m90(v0) => "[診斷] 重置資料庫失敗: ${v0}";
static String m93(v0) => "[診斷] 重置資料庫失敗: ${v0}";
static String m91(v0) => "[${v0}] 開始初始化...";
static String m94(v0) => "[${v0}] 開始初始化...";
static String m92(v0) => "[${v0}] --- 開始讀取完整日誌檔案 ---";
static String m95(v0) => "[${v0}] --- 開始讀取完整日誌檔案 ---";
static String m93(v0) => "清理失敗,請手動移除,檔案位置:${v0}";
static String m96(v0) => "清理失敗,請手動移除,檔案位置:${v0}";
static String m94(v0) => "出現錯誤:${v0}";
static String m97(v0) => "出現錯誤:${v0}";
static String m95(v0) => "初始化失敗,請截圖報告給開發者。${v0}";
static String m96(v0) =>
"若您使用 nvme 補丁出現問題,請執行此工具。(可能導致遊戲 安裝/更新 無法使用。)\n\n目前補丁狀態:${v0}";
static String m97(v0) => "使用星際公民中文百科提供的分流下載服務,可用於下載或修復 p4k。 \n版本資訊:${v0}";
static String m98(v0) =>
"在某些情況下 RSI啟動器 的 log 文件會損壞,導致無法完成問題掃描,使用此工具清理損壞的 log 文件。\n\n目前日誌檔案大小:${v0} MB";
static String m98(v0) => "初始化失敗,請截圖報告給開發者。${v0}";
static String m99(v0) =>
"若您使用 nvme 補丁出現問題,請執行此工具。(可能導致遊戲 安裝/更新 無法使用。)\n\n目前補丁狀態:${v0}";
static String m100(v0) => "使用星際公民中文百科提供的分流下載服務,可用於下載或修復 p4k。 \n版本資訊:${v0}";
static String m101(v0) =>
"在某些情況下 RSI啟動器 的 log 文件會損壞,導致無法完成問題掃描,使用此工具清理損壞的 log 文件。\n\n目前日誌檔案大小:${v0} MB";
static String m102(v0) =>
"若遊戲畫面出現異常或版本更新後可使用此工具清除著色器快取 \n\n(同時會將 Vulkan 還原為 DX11\n快取大小:${v0} MB";
static String m100(v0, v1, v2, v3, v4) =>
static String m103(v0, v1, v2, v3, v4) =>
"系統:${v0}\n\n處理器:${v1}\n\n記憶體:${v2}GB\n\n顯示卡:\n${v3}\n\n硬碟:\n${v4}\n\n";
static String m103(v0) => "處理失敗!:${v0}";
static String m106(v0) => "處理失敗!:${v0}";
static String m104(v0) => "讀取啟動器資訊失敗:${v0}";
static String m107(v0) => "讀取啟動器資訊失敗:${v0}";
static String m105(v0) => "補丁狀態:${v0}";
static String m108(v0) => "補丁狀態:${v0}";
static String m106(v0) => "啟動器內部版本資訊:${v0}";
static String m109(v0) => "啟動器內部版本資訊:${v0}";
static String m114(v0) => "打開文件:${v0}";
static String m117(v0) => "打開文件:${v0}";
static String m115(v0, v1) => "載入完畢:${v0} 個文件,用時:${v1} ms";
static String m118(v0, v1) => "載入完畢:${v0} 個文件,用時:${v1} ms";
static String m116(v0) => "讀取文件:${v0} ...";
static String m119(v0) => "讀取文件:${v0} ...";
static String m117(v0, v1) => "正在處理文件 (${v0}/${v1}) ...";
static String m120(v0, v1) => "正在處理文件 (${v0}/${v1}) ...";
static String m118(v0) => "未知文件類型\n${v0}";
static String m121(v0) => "未知文件類型\n${v0}";
static String m119(v0) => "P4K 查看器 -> ${v0}";
static String m122(v0) => "P4K 查看器 -> ${v0}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@ -355,17 +355,17 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_action_info_checking_runtime": MessageLookupByLibrary.simpleMessage(
"正在檢查:執行環境",
),
"doctor_action_info_game_abnormal_exit": m6,
"doctor_action_info_game_abnormal_exit": m9,
"doctor_action_info_game_abnormal_exit_unknown":
MessageLookupByLibrary.simpleMessage("遊戲錯誤退出:未知錯誤"),
"doctor_action_info_info_feedback": m7,
"doctor_action_result_analysis_issues_found": m8,
"doctor_action_info_info_feedback": m10,
"doctor_action_result_analysis_issues_found": m11,
"doctor_action_result_analysis_no_issue":
MessageLookupByLibrary.simpleMessage("分析完畢,沒有發現問題"),
"doctor_action_result_create_folder_fail": m9,
"doctor_action_result_create_folder_fail": m12,
"doctor_action_result_create_folder_success":
MessageLookupByLibrary.simpleMessage("建立資料夾成功,請嘗試繼續下載遊戲!"),
"doctor_action_result_fix_fail": m10,
"doctor_action_result_fix_fail": m13,
"doctor_action_result_fix_success": MessageLookupByLibrary.simpleMessage(
"修復成功,請嘗試重啟後繼續安裝遊戲! 若登錄檔修改操作導致其他軟體出現相容問題,請使用 工具 中的 NVME 登錄檔清理。",
),
@ -373,7 +373,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"修復成功,請嘗試啟動遊戲。(若問題無法解決,請使用工具箱的 《重裝 EAC》",
),
"doctor_action_result_info_unsupported_os": m11,
"doctor_action_result_info_unsupported_os": m14,
"doctor_action_result_issue_not_supported":
MessageLookupByLibrary.simpleMessage("該問題暫不支援自動處理,請提供截圖尋求幫助"),
"doctor_action_result_redirect_warning":
@ -456,10 +456,10 @@ class MessageLookup extends MessageLookupByLibrary {
"需要幫助? 點擊加群尋求免費人工支援!",
),
"doctor_info_processing": MessageLookupByLibrary.simpleMessage("正在處理..."),
"doctor_info_result_add_registry_value": m12,
"doctor_info_result_add_registry_value": m15,
"doctor_info_result_chinese_install_path":
MessageLookupByLibrary.simpleMessage("中文安裝路徑!"),
"doctor_info_result_chinese_install_path_error": m13,
"doctor_info_result_chinese_install_path_error": m16,
"doctor_info_result_chinese_username": MessageLookupByLibrary.simpleMessage(
"中文使用者名稱!",
),
@ -467,10 +467,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"中文使用者名稱可能會導致遊戲啟動/安裝錯誤! 點擊修復按鈕查看修改教學!",
),
"doctor_info_result_create_live_folder": m14,
"doctor_info_result_create_live_folder": m17,
"doctor_info_result_easyanticheat_not_installed":
MessageLookupByLibrary.simpleMessage("EasyAntiCheat 未安裝 或 未正常退出"),
"doctor_info_result_fix_suggestion": m15,
"doctor_info_result_fix_suggestion": m18,
"doctor_info_result_incompatible_nvme_device":
MessageLookupByLibrary.simpleMessage(
"新型 NVME 裝置,與 RSI 啟動器暫不相容,可能導致安裝失敗",
@ -481,7 +481,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"doctor_info_result_low_physical_memory":
MessageLookupByLibrary.simpleMessage("物理記憶體過低"),
"doctor_info_result_memory_requirement": m16,
"doctor_info_result_memory_requirement": m19,
"doctor_info_result_missing_easyanticheat_files":
MessageLookupByLibrary.simpleMessage("EasyAntiCheat 檔案遺失"),
"doctor_info_result_missing_live_folder":
@ -492,7 +492,7 @@ class MessageLookup extends MessageLookupByLibrary {
"doctor_info_result_unsupported_os": MessageLookupByLibrary.simpleMessage(
"不支援的作業系統,遊戲可能無法執行",
),
"doctor_info_result_upgrade_system": m17,
"doctor_info_result_upgrade_system": m20,
"doctor_info_result_verify_files_with_rsi_launcher":
MessageLookupByLibrary.simpleMessage(
"未在 LIVE 資料夾找到 EasyAntiCheat 文件 或 文件不完整,請使用 RSI 啟動器校驗文件",
@ -505,7 +505,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"doctor_tip_title_select_game_directory":
MessageLookupByLibrary.simpleMessage("請在首頁選擇遊戲安裝目錄。"),
"doctor_title_one_click_diagnosis": m18,
"doctor_title_one_click_diagnosis": m21,
"downloader_action_cancel_all": MessageLookupByLibrary.simpleMessage(
"全部取消",
),
@ -539,9 +539,9 @@ class MessageLookup extends MessageLookupByLibrary {
"downloader_action_resume_all": MessageLookupByLibrary.simpleMessage(
"全部繼續",
),
"downloader_info_checked": m19,
"downloader_info_checked": m22,
"downloader_info_checking": MessageLookupByLibrary.simpleMessage("校驗中"),
"downloader_info_checking_progress": m20,
"downloader_info_checking_progress": m23,
"downloader_info_deleted": MessageLookupByLibrary.simpleMessage("已刪除"),
"downloader_info_download_completed": MessageLookupByLibrary.simpleMessage(
"下載完成",
@ -551,9 +551,9 @@ class MessageLookup extends MessageLookupByLibrary {
),
"downloader_info_download_unit_input_prompt":
MessageLookupByLibrary.simpleMessage("請輸入下載單位1、100k、10m 0或留空為不限速。"),
"downloader_info_download_upload_speed": m21,
"downloader_info_downloaded": m22,
"downloader_info_downloading": m23,
"downloader_info_download_upload_speed": m24,
"downloader_info_downloaded": m25,
"downloader_info_downloading": m26,
"downloader_info_downloading_status": MessageLookupByLibrary.simpleMessage(
"下載中...",
),
@ -570,9 +570,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("限速設定已儲存。是否立即重新啟動下載管理器以套用新設定?"),
"downloader_info_speed_limit_saved_restart_required":
MessageLookupByLibrary.simpleMessage("限速設定已儲存,將在下次啟動下載器時生效。"),
"downloader_info_status": m24,
"downloader_info_total_size": m25,
"downloader_info_uploaded": m26,
"downloader_info_status": m27,
"downloader_info_total_size": m28,
"downloader_info_uploaded": m29,
"downloader_info_waiting": MessageLookupByLibrary.simpleMessage("等待中"),
"downloader_input_download_speed_limit":
MessageLookupByLibrary.simpleMessage("下載限制:"),
@ -613,7 +613,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("DPS計算器"),
"home_action_external_browser_extension":
MessageLookupByLibrary.simpleMessage("瀏覽器擴充套件:"),
"home_action_info_abnormal_game_exit": m27,
"home_action_info_abnormal_game_exit": m30,
"home_action_info_check_web_link": MessageLookupByLibrary.simpleMessage(
"請查看彈出式網頁連結獲得詳細資訊。",
),
@ -622,7 +622,7 @@ class MessageLookup extends MessageLookupByLibrary {
"home_action_info_game_built_in": MessageLookupByLibrary.simpleMessage(
"內建翻譯文件",
),
"home_action_info_initialization_failed": m28,
"home_action_info_initialization_failed": m31,
"home_action_info_initializing_resources":
MessageLookupByLibrary.simpleMessage("正在初始化翻譯文件..."),
"home_action_info_log_file_parse_fail":
@ -635,7 +635,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("快速安裝翻譯文件"),
"home_action_info_roberts_space_industries_origin":
MessageLookupByLibrary.simpleMessage("羅伯茨航天工業公司,萬物的起源"),
"home_action_info_scan_complete_valid_directories_found": m29,
"home_action_info_scan_complete_valid_directories_found": m32,
"home_action_info_scanning": MessageLookupByLibrary.simpleMessage(
"正在掃描 ...",
),
@ -690,7 +690,7 @@ class MessageLookup extends MessageLookupByLibrary {
"home_action_uex_localization": MessageLookupByLibrary.simpleMessage("UEX"),
"home_announcement_details": MessageLookupByLibrary.simpleMessage("公告詳情"),
"home_holiday_countdown": MessageLookupByLibrary.simpleMessage("遊戲節慶倒數計時"),
"home_holiday_countdown_days": m30,
"home_holiday_countdown_days": m33,
"home_holiday_countdown_disclaimer": MessageLookupByLibrary.simpleMessage(
"* 以上節慶日期由人工收錄與維護,可能存在部分偏誤,歡迎進行反饋!",
),
@ -765,10 +765,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("讀取 p4k 文件 ..."),
"home_localization_advanced_msg_reading_server_localization_text":
MessageLookupByLibrary.simpleMessage("獲取翻譯文字 ..."),
"home_localization_advanced_msg_version": m31,
"home_localization_advanced_title": m32,
"home_localization_advanced_title_msg": m33,
"home_localization_advanced_title_preview": m34,
"home_localization_advanced_msg_version": m34,
"home_localization_advanced_title": m35,
"home_localization_advanced_title_msg": m36,
"home_localization_advanced_title_preview": m37,
"home_localization_msg_no_note": MessageLookupByLibrary.simpleMessage(
"該版本沒有提供描述",
),
@ -776,7 +776,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(" (進階翻譯)"),
"home_localization_new_version_available":
MessageLookupByLibrary.simpleMessage("社群翻譯有新的版本"),
"home_localization_new_version_installed": m35,
"home_localization_new_version_installed": m38,
"home_localization_select_customize_file":
MessageLookupByLibrary.simpleMessage("請選擇自定義翻譯文件"),
"home_localization_select_customize_file_ini":
@ -794,7 +794,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"本功能可以幫您更加便利的啟動遊戲。\n\n為確保帳戶安全 ,本功能使用中文翻譯瀏覽器保留登入狀態,且不會儲存您的密碼資訊(除非你啟用了自動輸入功能)。\n\n使用此功能登入帳號時請確保您的 SC工具箱 是從可信任的來源下載。",
),
"home_login_info_rsi_server_report": m36,
"home_login_info_rsi_server_report": m39,
"home_login_title_launching_game": MessageLookupByLibrary.simpleMessage(
"正在為您啟動遊戲...",
),
@ -821,7 +821,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"input_method_community_input_method_not_installed":
MessageLookupByLibrary.simpleMessage("未安裝社區輸入法支持"),
"input_method_community_input_method_support_version": m39,
"input_method_community_input_method_support_version": m42,
"input_method_confirm_enable_remote_input":
MessageLookupByLibrary.simpleMessage("確認啟用遠程輸入?"),
"input_method_confirm_install_advanced_localization":
@ -872,7 +872,7 @@ class MessageLookup extends MessageLookupByLibrary {
"input_method_support_updated": MessageLookupByLibrary.simpleMessage(
"社區輸入法支持已更新",
),
"input_method_support_updated_to_version": m40,
"input_method_support_updated_to_version": m43,
"input_method_text_cannot_be_empty": MessageLookupByLibrary.simpleMessage(
"文本不能為空!",
),
@ -891,7 +891,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("意見反饋"),
"localization_action_uninstall_translation":
MessageLookupByLibrary.simpleMessage("解除安裝"),
"localization_info_channel": m41,
"localization_info_channel": m44,
"localization_info_community_translation":
MessageLookupByLibrary.simpleMessage("社群翻譯"),
"localization_info_corrupted_file": MessageLookupByLibrary.simpleMessage(
@ -900,14 +900,14 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_custom_files": MessageLookupByLibrary.simpleMessage(
"自訂文件",
),
"localization_info_enabled": m42,
"localization_info_enabled": m45,
"localization_info_incompatible_translation_params_warning":
MessageLookupByLibrary.simpleMessage(
"USER.cfg 包含不相容的翻譯參數,這可能是以前的翻譯文件的殘留信息。\n\n這將可能導致翻譯無效或亂碼,點擊確認進行快速刪除(不會影響其他配置)。",
),
"localization_info_installation_error": m43,
"localization_info_installation_error": m46,
"localization_info_installed": MessageLookupByLibrary.simpleMessage("已安裝"),
"localization_info_installed_version": m44,
"localization_info_installed_version": m47,
"localization_info_language": MessageLookupByLibrary.simpleMessage(
"語言: ",
),
@ -928,14 +928,14 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_unavailable": MessageLookupByLibrary.simpleMessage(
"無法使用",
),
"localization_info_update_time": m45,
"localization_info_version_number": m46,
"log_analyzer_collision_details": m47,
"log_analyzer_death_details": m48,
"localization_info_update_time": m48,
"localization_info_version_number": m49,
"log_analyzer_collision_details": m50,
"log_analyzer_death_details": m51,
"log_analyzer_description": MessageLookupByLibrary.simpleMessage(
"分析您的遊玩記錄 (登入、死亡、擊殺 等資訊)",
),
"log_analyzer_details_info": m49,
"log_analyzer_details_info": m52,
"log_analyzer_disintegration": MessageLookupByLibrary.simpleMessage("解體"),
"log_analyzer_filter_account_related": MessageLookupByLibrary.simpleMessage(
"帳戶相關",
@ -969,9 +969,9 @@ class MessageLookup extends MessageLookupByLibrary {
),
"log_analyzer_game_loading": MessageLookupByLibrary.simpleMessage("遊戲載入"),
"log_analyzer_game_start": MessageLookupByLibrary.simpleMessage("遊戲啟動"),
"log_analyzer_kill_death_suicide_count": m50,
"log_analyzer_kill_death_suicide_count": m53,
"log_analyzer_kill_summary": MessageLookupByLibrary.simpleMessage("擊殺總結"),
"log_analyzer_mode_loading_time": m51,
"log_analyzer_mode_loading_time": m54,
"log_analyzer_no_crash_detected": MessageLookupByLibrary.simpleMessage(
"未檢測到遊戲崩潰資訊",
),
@ -981,9 +981,9 @@ class MessageLookup extends MessageLookupByLibrary {
"log_analyzer_one_click_diagnosis_header":
MessageLookupByLibrary.simpleMessage("----- 工具箱疑難排解 -----"),
"log_analyzer_play_time": MessageLookupByLibrary.simpleMessage("遊玩時長"),
"log_analyzer_play_time_format": m52,
"log_analyzer_player_location": m53,
"log_analyzer_player_login": m54,
"log_analyzer_play_time_format": m55,
"log_analyzer_player_location": m56,
"log_analyzer_player_login": m57,
"log_analyzer_search_placeholder": MessageLookupByLibrary.simpleMessage(
"輸入關鍵字搜索內容",
),
@ -992,7 +992,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"log_analyzer_soft_death": MessageLookupByLibrary.simpleMessage("軟死亡"),
"log_analyzer_title": MessageLookupByLibrary.simpleMessage("log 分析器"),
"log_analyzer_vehicle_damage_details": m55,
"log_analyzer_vehicle_damage_details": m58,
"log_analyzer_view_local_inventory": MessageLookupByLibrary.simpleMessage(
"查看本地庫存",
),
@ -1027,7 +1027,7 @@ class MessageLookup extends MessageLookupByLibrary {
"在簡介的任意位置添加驗證碼即可驗證碼30分鐘內有效",
),
"party_room_confirm_dismiss": MessageLookupByLibrary.simpleMessage("確認解散"),
"party_room_connect_error": m56,
"party_room_connect_error": m59,
"party_room_connect_failed": MessageLookupByLibrary.simpleMessage("連接失敗"),
"party_room_connecting": MessageLookupByLibrary.simpleMessage("正在連接伺服器..."),
"party_room_continue": MessageLookupByLibrary.simpleMessage("繼續"),
@ -1044,7 +1044,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"party_room_create_new_room": MessageLookupByLibrary.simpleMessage("建立新房間"),
"party_room_create_room": MessageLookupByLibrary.simpleMessage("建立房間"),
"party_room_days_ago": m57,
"party_room_days_ago": m60,
"party_room_disconnected": MessageLookupByLibrary.simpleMessage("連接已斷開"),
"party_room_dismiss": MessageLookupByLibrary.simpleMessage("解散"),
"party_room_dismiss_confirm_msg": MessageLookupByLibrary.simpleMessage(
@ -1069,7 +1069,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"party_room_error": MessageLookupByLibrary.simpleMessage("錯誤"),
"party_room_exit_room": MessageLookupByLibrary.simpleMessage("退出房間"),
"party_room_exit_room_failed": m58,
"party_room_exit_room_failed": m61,
"party_room_game_id_empty": MessageLookupByLibrary.simpleMessage(
"遊戲ID不能為空",
),
@ -1079,12 +1079,12 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_game_not_started": MessageLookupByLibrary.simpleMessage(
"<遊戲未啟動>",
),
"party_room_get_code_failed": m59,
"party_room_get_code_failed": m62,
"party_room_go_login": MessageLookupByLibrary.simpleMessage("去登入"),
"party_room_guest_mode_hint": MessageLookupByLibrary.simpleMessage(
"您正在以訪客身份瀏覽,登入後可建立或加入房間。",
),
"party_room_hours_ago": m60,
"party_room_hours_ago": m63,
"party_room_info_updated": MessageLookupByLibrary.simpleMessage("房間資訊已更新"),
"party_room_join": MessageLookupByLibrary.simpleMessage("加入"),
"party_room_join_failed": MessageLookupByLibrary.simpleMessage("加入失敗"),
@ -1095,8 +1095,8 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_just_now": MessageLookupByLibrary.simpleMessage("剛剛"),
"party_room_kick": MessageLookupByLibrary.simpleMessage("踢出"),
"party_room_kick_member": MessageLookupByLibrary.simpleMessage("踢出成員"),
"party_room_kick_member_confirm": m61,
"party_room_kick_member_failed": m62,
"party_room_kick_member_confirm": m64,
"party_room_kick_member_failed": m65,
"party_room_kicked": MessageLookupByLibrary.simpleMessage("被踢出房間"),
"party_room_leave_confirm": MessageLookupByLibrary.simpleMessage(
"確認離開房間嗎?",
@ -1107,13 +1107,13 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_link_format_error": MessageLookupByLibrary.simpleMessage(
"連結格式錯誤!",
),
"party_room_load_list_failed": m63,
"party_room_load_list_failed": m66,
"party_room_loading": MessageLookupByLibrary.simpleMessage("載入中..."),
"party_room_location": MessageLookupByLibrary.simpleMessage("位置"),
"party_room_login": MessageLookupByLibrary.simpleMessage("登入"),
"party_room_main_menu": MessageLookupByLibrary.simpleMessage("<主選單>"),
"party_room_members_count": m64,
"party_room_minutes_ago": m65,
"party_room_members_count": m67,
"party_room_minutes_ago": m68,
"party_room_need_login": MessageLookupByLibrary.simpleMessage("需要登入"),
"party_room_new_owner": MessageLookupByLibrary.simpleMessage("新房主"),
"party_room_next_step": MessageLookupByLibrary.simpleMessage("下一步"),
@ -1140,12 +1140,12 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_player_death": MessageLookupByLibrary.simpleMessage("玩家死亡"),
"party_room_prev_step": MessageLookupByLibrary.simpleMessage("上一步"),
"party_room_reconnect": MessageLookupByLibrary.simpleMessage("重新連接"),
"party_room_reconnect_failed": m66,
"party_room_reconnect_failed": m69,
"party_room_reconnect_prompt": MessageLookupByLibrary.simpleMessage(
"與房間伺服器的連接已斷開,是否重新連接?",
),
"party_room_reconnect_retry": m67,
"party_room_register_failed": m68,
"party_room_reconnect_retry": m70,
"party_room_register_failed": m71,
"party_room_register_success": MessageLookupByLibrary.simpleMessage(
"註冊成功!",
),
@ -1213,8 +1213,8 @@ class MessageLookup extends MessageLookupByLibrary {
"party_room_title": MessageLookupByLibrary.simpleMessage("組隊大廳"),
"party_room_transfer": MessageLookupByLibrary.simpleMessage("轉移"),
"party_room_transfer_owner": MessageLookupByLibrary.simpleMessage("轉移房主"),
"party_room_transfer_owner_confirm": m69,
"party_room_transfer_owner_failed": m70,
"party_room_transfer_owner_confirm": m72,
"party_room_transfer_owner_failed": m73,
"party_room_unknown_area": MessageLookupByLibrary.simpleMessage("未知區域"),
"party_room_unknown_location": MessageLookupByLibrary.simpleMessage("未知位置"),
"party_room_unknown_user": MessageLookupByLibrary.simpleMessage("未知使用者"),
@ -1250,7 +1250,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"performance_action_super": MessageLookupByLibrary.simpleMessage("極高"),
"performance_info_applied": MessageLookupByLibrary.simpleMessage("已套用"),
"performance_info_current_status": m71,
"performance_info_current_status": m74,
"performance_info_delete_config_file": MessageLookupByLibrary.simpleMessage(
"刪除配置檔案...",
),
@ -1264,7 +1264,7 @@ class MessageLookup extends MessageLookupByLibrary {
"此功能對改善因 GPU 造成的瓶頸,但對於因 CPU 造成瓶頸的裝置可能引發負面效果,如果您 GPU 性能強勁,可以嘗試更改為更高的畫質來獲得更高的 GPU 使用率並改善畫面表現。",
),
"performance_info_graphics": MessageLookupByLibrary.simpleMessage("圖形"),
"performance_info_min_max_values": m72,
"performance_info_min_max_values": m75,
"performance_info_not_applied": MessageLookupByLibrary.simpleMessage("未套用"),
"performance_info_shader_clearing_warning":
MessageLookupByLibrary.simpleMessage(
@ -1423,7 +1423,7 @@ class MessageLookup extends MessageLookupByLibrary {
"performance_json_text_water_info": MessageLookupByLibrary.simpleMessage(
"各種水的等級",
),
"performance_title_performance_optimization": m73,
"performance_title_performance_optimization": m76,
"setting_action_clear_translation_file_cache":
MessageLookupByLibrary.simpleMessage("清理翻譯文件快取"),
"setting_action_create_desktop_shortcut":
@ -1436,7 +1436,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"setting_action_info_autofill_data_cleared":
MessageLookupByLibrary.simpleMessage("已清理自動輸入資料"),
"setting_action_info_cache_clearing_info": m74,
"setting_action_info_cache_clearing_info": m77,
"setting_action_info_clear_cache_warning":
MessageLookupByLibrary.simpleMessage("這不會影響已安裝的社群翻譯。"),
"setting_action_info_confirm_clear_cache":
@ -1481,7 +1481,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"setting_action_reset_auto_password_fill":
MessageLookupByLibrary.simpleMessage("重設自動密碼輸入"),
"setting_action_set_core_count": m75,
"setting_action_set_core_count": m78,
"setting_action_set_game_file": MessageLookupByLibrary.simpleMessage(
"變更遊戲文件 StarCitizen.exe",
),
@ -1523,39 +1523,39 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_analytics_done": MessageLookupByLibrary.simpleMessage(
"✓ AnalyticsApi.touch(\"launch\") 完成",
),
"splash_analytics_error": m76,
"splash_analytics_error": m79,
"splash_analytics_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ AnalyticsApi.touch() 超時 (10秒) - 繼續執行",
),
"splash_app_init_done": MessageLookupByLibrary.simpleMessage(
"✓ appModel.initApp() 完成",
),
"splash_app_init_error": m77,
"splash_app_init_error": m80,
"splash_app_init_timeout": MessageLookupByLibrary.simpleMessage(
"✗ appModel.initApp() 超時 (10秒)",
),
"splash_aria2c_done": MessageLookupByLibrary.simpleMessage(
"✓ aria2cModelProvider 初始化完成",
),
"splash_aria2c_error": m78,
"splash_aria2c_error": m81,
"splash_check_host_done": MessageLookupByLibrary.simpleMessage(
"✓ URLConf.checkHost() 完成",
),
"splash_check_host_error": m79,
"splash_check_host_error": m82,
"splash_check_host_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ URLConf.checkHost() 超時 (10秒) - 繼續執行",
),
"splash_check_update_done": MessageLookupByLibrary.simpleMessage(
"✓ appModel.checkUpdate() 完成",
),
"splash_check_update_error": m80,
"splash_check_update_error": m83,
"splash_check_update_timeout": MessageLookupByLibrary.simpleMessage(
"⚠ appModel.checkUpdate() 超時 (10秒) - 繼續執行",
),
"splash_check_version": MessageLookupByLibrary.simpleMessage(
"檢查 splash_alert_info_version...",
),
"splash_close_hive_failed": m81,
"splash_close_hive_failed": m84,
"splash_context_unmounted": MessageLookupByLibrary.simpleMessage(
"✗ Context 已卸載",
),
@ -1569,16 +1569,16 @@ class MessageLookup extends MessageLookupByLibrary {
"✗ Context 已卸載,無法導航",
),
"splash_db_deleted": MessageLookupByLibrary.simpleMessage("[診斷] 資料庫目錄已刪除"),
"splash_db_not_exist": m82,
"splash_db_not_exist": m85,
"splash_db_reset_done": MessageLookupByLibrary.simpleMessage(
"[診斷] 資料庫重置完成,準備退出應用",
),
"splash_db_reset_msg": MessageLookupByLibrary.simpleMessage(
"資料庫已重置,應用將退出。請重新啟動應用。",
),
"splash_deleting_db": m83,
"splash_diagnostic_log": m84,
"splash_diagnostic_mode": m85,
"splash_deleting_db": m86,
"splash_diagnostic_log": m87,
"splash_diagnostic_mode": m88,
"splash_error": MessageLookupByLibrary.simpleMessage("錯誤"),
"splash_exec_analytics": MessageLookupByLibrary.simpleMessage(
"執行 AnalyticsApi.touch(\"launch\")...",
@ -1598,7 +1598,7 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_hive_done": MessageLookupByLibrary.simpleMessage(
"✓ Hive.openBox(\"app_conf\") 完成",
),
"splash_hive_error": m86,
"splash_hive_error": m89,
"splash_hive_timeout": MessageLookupByLibrary.simpleMessage(
"✗ Hive.openBox(\"app_conf\") 超時 (10秒)",
),
@ -1608,20 +1608,20 @@ class MessageLookup extends MessageLookupByLibrary {
"splash_init_task_status": MessageLookupByLibrary.simpleMessage(
"初始化任務執行情況:",
),
"splash_log_not_exist": m87,
"splash_log_read_done": m88,
"splash_log_not_exist": m90,
"splash_log_read_done": m91,
"splash_open_hive_box": MessageLookupByLibrary.simpleMessage(
"開啟 Hive app_conf box...",
),
"splash_read_full_log": MessageLookupByLibrary.simpleMessage("讀取完整日誌"),
"splash_read_log_failed": m89,
"splash_read_log_failed": m92,
"splash_reset_database": MessageLookupByLibrary.simpleMessage("重置資料庫"),
"splash_reset_db_failed": m90,
"splash_reset_db_failed": m93,
"splash_show_agreement": MessageLookupByLibrary.simpleMessage(
"需要顯示使用者協議對話框...",
),
"splash_start_init": m91,
"splash_start_read_log": m92,
"splash_start_init": m94,
"splash_start_read_log": m95,
"splash_step0_done": MessageLookupByLibrary.simpleMessage(
"--- Step 0 完成,進入 Step 1 ---",
),
@ -1683,13 +1683,13 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"清理完畢,請完成一次安裝 / 遊戲啟動 操作。",
),
"tools_action_info_cleanup_failed": m93,
"tools_action_info_cleanup_failed": m96,
"tools_action_info_config_file_not_exist":
MessageLookupByLibrary.simpleMessage("配置檔案不存在,請嘗試執行一次遊戲"),
"tools_action_info_eac_file_removed": MessageLookupByLibrary.simpleMessage(
"已為您移除 EAC 文件,接下來將為您打開 RSI 啟動器,請您前往 SETTINGS -> VERIFY 重新安裝 EAC。",
),
"tools_action_info_error_occurred": m94,
"tools_action_info_error_occurred": m97,
"tools_action_info_fix_success_restart":
MessageLookupByLibrary.simpleMessage(
"修復成功,請嘗試重新啟動電腦後繼續安裝遊戲! 若登錄檔修改操作導致其他軟體出現相容問題,請使用 工具 中的 NVME 登錄檔清理。",
@ -1700,7 +1700,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"將 IP 資訊寫入 Hosts 文件,解決部分地區的 DNS 汙染導致無法登入官網等問題。\n該功能正在進行第一階段測試,遇到問題請及時回饋。",
),
"tools_action_info_init_failed": m95,
"tools_action_info_init_failed": m98,
"tools_action_info_log_file_not_exist":
MessageLookupByLibrary.simpleMessage(
"日誌檔案不存在,請嘗試進行一次遊戲啟動或遊戲安裝,並退出啟動器,若無法解決問題,請嘗試將啟動器更新至最新版本!",
@ -1713,14 +1713,14 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_not_installed": MessageLookupByLibrary.simpleMessage(
"未安裝",
),
"tools_action_info_nvme_patch_issue": m96,
"tools_action_info_nvme_patch_issue": m99,
"tools_action_info_one_key_close_lens_shake":
MessageLookupByLibrary.simpleMessage(
"關閉遊戲內鏡頭晃動效果以便進行攝影。\n\n @拉邦那 Lapernum 提供參數資訊。",
),
"tools_action_info_p4k_download_in_progress":
MessageLookupByLibrary.simpleMessage("已經有一個p4k下載任務正在進行中請前往下載管理器查看"),
"tools_action_info_p4k_download_repair_tip": m97,
"tools_action_info_p4k_download_repair_tip": m100,
"tools_action_info_p4k_file_description": MessageLookupByLibrary.simpleMessage(
"P4k 是星際公民的核心遊戲文件,高達 100GB+工具箱提供的離線下載是為了幫助一些p4k文件下載慢到不行的使用者 或用於修復官方啟動器無法修復的 p4k 文件。\n\n接下來會跳出視窗詢問您儲存位置(可以選擇星際公民資料夾也可以選擇別處),下載完成後請確保 P4K 資料夾位於 LIVE 資料夾內,之後使用星際公民啟動器校驗更新即可。",
),
@ -1735,7 +1735,7 @@ class MessageLookup extends MessageLookupByLibrary {
),
"tools_action_info_rsi_launcher_directory_not_found":
MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器目錄,請您嘗試手動操作。"),
"tools_action_info_rsi_launcher_log_issue": m98,
"tools_action_info_rsi_launcher_log_issue": m101,
"tools_action_info_rsi_launcher_not_found":
MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器,請嘗試重新安裝,或在設定中手動新增。"),
"tools_action_info_rsi_launcher_running_warning":
@ -1743,12 +1743,12 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_info_run_rsi_as_admin": MessageLookupByLibrary.simpleMessage(
"以管理員身份執行RSI啟動器可能會解決一些問題。\n\n若設定了 E-Core 核心忽略參數,也會在此套用。",
),
"tools_action_info_shader_cache_issue": m99,
"tools_action_info_shader_cache_issue": m102,
"tools_action_info_star_citizen_not_found":
MessageLookupByLibrary.simpleMessage(
"未找到星際公民遊戲安裝位置,請至少完成一次遊戲啟動操作 或在設定中手動新增。",
),
"tools_action_info_system_info_content": m100,
"tools_action_info_system_info_content": m103,
"tools_action_info_system_info_title": MessageLookupByLibrary.simpleMessage(
"系統資訊",
),
@ -1811,7 +1811,7 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_info_game_install_location": MessageLookupByLibrary.simpleMessage(
"遊戲安裝位置: ",
),
"tools_info_processing_failed": m103,
"tools_info_processing_failed": m106,
"tools_info_rsi_launcher_location": MessageLookupByLibrary.simpleMessage(
"RSI啟動器位置",
),
@ -1831,13 +1831,13 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_rsi_launcher_enhance_msg_error_get_launcher_info_error":
MessageLookupByLibrary.simpleMessage("讀取啟動器資訊失敗!"),
"tools_rsi_launcher_enhance_msg_error_get_launcher_info_error_with_args":
m104,
m107,
"tools_rsi_launcher_enhance_msg_error_launcher_notfound":
MessageLookupByLibrary.simpleMessage("未找到 RSI 啟動器"),
"tools_rsi_launcher_enhance_msg_patch_status": m105,
"tools_rsi_launcher_enhance_msg_patch_status": m108,
"tools_rsi_launcher_enhance_msg_uninstall":
MessageLookupByLibrary.simpleMessage("* 如需移除增強補丁,請覆蓋安裝 RSI 啟動器。"),
"tools_rsi_launcher_enhance_msg_version": m106,
"tools_rsi_launcher_enhance_msg_version": m109,
"tools_rsi_launcher_enhance_note_msg": MessageLookupByLibrary.simpleMessage(
"RSI 啟動器增強是一項社群功能,它會在您的電腦上解包 \"RSI Launcher\" 並加入額外的增強功能,具體使用哪些功能由您決定。\n\n目前官方CIG僅許可我們進行多語言操作啟動器下載增強是我們認為有用的額外功能違反cig使用者協議https://robertsspaceindustries.com/eula可能導致帳號被封禁等嚴重後果是否啟用由您自己決定我們不對可能產生的後果遊戲損壞帳號封禁等承擔任何責任。\n\n對於啟動器的修改內容我們開源於https://github.com/StarCitizenToolBox/RSILauncherEnhance如有需要您可自行查閱。\n\n如果您因為任何原因需要取消此增強補丁,請直接覆蓋安裝官方啟動器。",
),
@ -1869,18 +1869,18 @@ class MessageLookup extends MessageLookupByLibrary {
"使用此功能需安裝 .NET8 運行庫,請點擊下方按鈕下載安裝,安裝成功後重新打開此頁面即可繼續使用。",
),
"tools_unp4k_msg_init": MessageLookupByLibrary.simpleMessage("初始化中..."),
"tools_unp4k_msg_open_file": m114,
"tools_unp4k_msg_read_completed": m115,
"tools_unp4k_msg_read_file": m116,
"tools_unp4k_msg_open_file": m117,
"tools_unp4k_msg_read_completed": m118,
"tools_unp4k_msg_read_file": m119,
"tools_unp4k_msg_reading": MessageLookupByLibrary.simpleMessage(
"正在讀取P4K 文件 ...",
),
"tools_unp4k_msg_reading2": MessageLookupByLibrary.simpleMessage(
"正在處理文件 ...",
),
"tools_unp4k_msg_reading3": m117,
"tools_unp4k_msg_unknown_file_type": m118,
"tools_unp4k_title": m119,
"tools_unp4k_msg_reading3": m120,
"tools_unp4k_msg_unknown_file_type": m121,
"tools_unp4k_title": m122,
"tools_unp4k_view_file": MessageLookupByLibrary.simpleMessage("單擊文件以預覽"),
"tools_vehicle_sorting_info": MessageLookupByLibrary.simpleMessage(
"將左側載具拖動到右側列表中,這將會為載具名稱增加 001、002 .. 等前綴,方便您在遊戲內 UI 快速定位載具。在右側列表上下拖動可以調整載具的順序。",

View File

@ -8202,6 +8202,331 @@ class S {
);
}
/// `DataForge Viewer -> {v0}`
String dcb_viewer_title(Object v0) {
return Intl.message(
'DataForge Viewer -> $v0',
name: 'dcb_viewer_title',
desc: '',
args: [v0],
);
}
/// `Loading DCB file...`
String get dcb_viewer_loading {
return Intl.message(
'Loading DCB file...',
name: 'dcb_viewer_loading',
desc: '',
args: [],
);
}
/// `Parsing DataForge data...`
String get dcb_viewer_parsing {
return Intl.message(
'Parsing DataForge data...',
name: 'dcb_viewer_parsing',
desc: '',
args: [],
);
}
/// `Loading record list...`
String get dcb_viewer_loading_records {
return Intl.message(
'Loading record list...',
name: 'dcb_viewer_loading_records',
desc: '',
args: [],
);
}
/// `{v0} records loaded`
String dcb_viewer_loaded_records(Object v0) {
return Intl.message(
'$v0 records loaded',
name: 'dcb_viewer_loaded_records',
desc: '',
args: [v0],
);
}
/// `Invalid DCB file format`
String get dcb_viewer_error_not_dcb {
return Intl.message(
'Invalid DCB file format',
name: 'dcb_viewer_error_not_dcb',
desc: '',
args: [],
);
}
/// `Search Mode`
String get dcb_viewer_search_mode {
return Intl.message(
'Search Mode',
name: 'dcb_viewer_search_mode',
desc: '',
args: [],
);
}
/// `Searching...`
String get dcb_viewer_searching {
return Intl.message(
'Searching...',
name: 'dcb_viewer_searching',
desc: '',
args: [],
);
}
/// `{v0} results found`
String dcb_viewer_search_results(Object v0) {
return Intl.message(
'$v0 results found',
name: 'dcb_viewer_search_results',
desc: '',
args: [v0],
);
}
/// `Full text search (press Enter)...`
String get dcb_viewer_search_fulltext_placeholder {
return Intl.message(
'Full text search (press Enter)...',
name: 'dcb_viewer_search_fulltext_placeholder',
desc: '',
args: [],
);
}
/// `Filter record paths...`
String get dcb_viewer_search_list_placeholder {
return Intl.message(
'Filter record paths...',
name: 'dcb_viewer_search_list_placeholder',
desc: '',
args: [],
);
}
/// `Search in current file...`
String get dcb_viewer_search_in_file {
return Intl.message(
'Search in current file...',
name: 'dcb_viewer_search_in_file',
desc: '',
args: [],
);
}
/// `No results`
String get dcb_viewer_search_no_results {
return Intl.message(
'No results',
name: 'dcb_viewer_search_no_results',
desc: '',
args: [],
);
}
/// `Match Case`
String get dcb_viewer_search_case_sensitive {
return Intl.message(
'Match Case',
name: 'dcb_viewer_search_case_sensitive',
desc: '',
args: [],
);
}
/// `Use Regular Expression`
String get dcb_viewer_search_regex {
return Intl.message(
'Use Regular Expression',
name: 'dcb_viewer_search_regex',
desc: '',
args: [],
);
}
/// `Fold/Unfold Code Blocks`
String get dcb_viewer_fold_all {
return Intl.message(
'Fold/Unfold Code Blocks',
name: 'dcb_viewer_fold_all',
desc: '',
args: [],
);
}
/// `No records`
String get dcb_viewer_no_records {
return Intl.message(
'No records',
name: 'dcb_viewer_no_records',
desc: '',
args: [],
);
}
/// `No search results`
String get dcb_viewer_no_search_results {
return Intl.message(
'No search results',
name: 'dcb_viewer_no_search_results',
desc: '',
args: [],
);
}
/// `Select a record to view XML content`
String get dcb_viewer_select_record {
return Intl.message(
'Select a record to view XML content',
name: 'dcb_viewer_select_record',
desc: '',
args: [],
);
}
/// `Export`
String get dcb_viewer_export {
return Intl.message(
'Export',
name: 'dcb_viewer_export',
desc: '',
args: [],
);
}
/// `Export as single XML`
String get dcb_viewer_export_single_xml {
return Intl.message(
'Export as single XML',
name: 'dcb_viewer_export_single_xml',
desc: '',
args: [],
);
}
/// `Export as multiple XML files`
String get dcb_viewer_export_multiple_xml {
return Intl.message(
'Export as multiple XML files',
name: 'dcb_viewer_export_multiple_xml',
desc: '',
args: [],
);
}
/// `Export successful`
String get dcb_viewer_export_success {
return Intl.message(
'Export successful',
name: 'dcb_viewer_export_success',
desc: '',
args: [],
);
}
/// `Export failed`
String get dcb_viewer_export_failed {
return Intl.message(
'Export failed',
name: 'dcb_viewer_export_failed',
desc: '',
args: [],
);
}
/// `DataForge Viewer`
String get dcb_viewer_title_standalone {
return Intl.message(
'DataForge Viewer',
name: 'dcb_viewer_title_standalone',
desc: '',
args: [],
);
}
/// `Select DCB File`
String get dcb_viewer_select_file_title {
return Intl.message(
'Select DCB File',
name: 'dcb_viewer_select_file_title',
desc: '',
args: [],
);
}
/// `Please select a .dcb file or DCB file extracted from P4K`
String get dcb_viewer_select_file_description {
return Intl.message(
'Please select a .dcb file or DCB file extracted from P4K',
name: 'dcb_viewer_select_file_description',
desc: '',
args: [],
);
}
/// `Select DCB File`
String get dcb_viewer_select_dcb_file {
return Intl.message(
'Select DCB File',
name: 'dcb_viewer_select_dcb_file',
desc: '',
args: [],
);
}
/// `Select P4K File`
String get dcb_viewer_select_p4k_file {
return Intl.message(
'Select P4K File',
name: 'dcb_viewer_select_p4k_file',
desc: '',
args: [],
);
}
/// `Select Another File`
String get dcb_viewer_select_another_file {
return Intl.message(
'Select Another File',
name: 'dcb_viewer_select_another_file',
desc: '',
args: [],
);
}
/// `DCB/DataForge Viewer`
String get tools_action_dcb_viewer {
return Intl.message(
'DCB/DataForge Viewer',
name: 'tools_action_dcb_viewer',
desc: '',
args: [],
);
}
/// `View and export DataForge game database (.dcb) file content`
String get tools_action_dcb_viewer_info {
return Intl.message(
'View and export DataForge game database (.dcb) file content',
name: 'tools_action_dcb_viewer_info',
desc: '',
args: [],
);
}
/// `Back`
String get action_back {
return Intl.message('Back', name: 'action_back', desc: '', args: []);
}
/// `Switch DirectX/Vulkan Renderer`
String get tools_action_switch_graphics_renderer {
return Intl.message(

View File

@ -1463,6 +1463,39 @@
"tools_unp4k_action_cancel_multi_select": "Cancel Multi-Select",
"tools_unp4k_action_select_all": "Select All",
"tools_unp4k_action_deselect_all": "Deselect All",
"dcb_viewer_title": "DataForge Viewer -> {v0}",
"dcb_viewer_loading": "Loading DCB file...",
"dcb_viewer_parsing": "Parsing DataForge data...",
"dcb_viewer_loading_records": "Loading record list...",
"dcb_viewer_loaded_records": "{v0} records loaded",
"dcb_viewer_error_not_dcb": "Invalid DCB file format",
"dcb_viewer_search_mode": "Search Mode",
"dcb_viewer_searching": "Searching...",
"dcb_viewer_search_results": "{v0} results found",
"dcb_viewer_search_fulltext_placeholder": "Full text search (press Enter)...",
"dcb_viewer_search_list_placeholder": "Filter record paths...",
"dcb_viewer_search_in_file": "Search in current file...",
"dcb_viewer_search_no_results": "No results",
"dcb_viewer_search_case_sensitive": "Match Case",
"dcb_viewer_search_regex": "Use Regular Expression",
"dcb_viewer_fold_all": "Fold/Unfold Code Blocks",
"dcb_viewer_no_records": "No records",
"dcb_viewer_no_search_results": "No search results",
"dcb_viewer_select_record": "Select a record to view XML content",
"dcb_viewer_export": "Export",
"dcb_viewer_export_single_xml": "Export as single XML",
"dcb_viewer_export_multiple_xml": "Export as multiple XML files",
"dcb_viewer_export_success": "Export successful",
"dcb_viewer_export_failed": "Export failed",
"dcb_viewer_title_standalone": "DataForge Viewer",
"dcb_viewer_select_file_title": "Select DCB File",
"dcb_viewer_select_file_description": "Please select a .dcb file or DCB file extracted from P4K",
"dcb_viewer_select_dcb_file": "Select DCB File",
"dcb_viewer_select_p4k_file": "Select P4K File",
"dcb_viewer_select_another_file": "Select Another File",
"tools_action_dcb_viewer": "DCB/DataForge Viewer",
"tools_action_dcb_viewer_info": "View and export DataForge game database (.dcb) file content",
"action_back": "Back",
"tools_action_switch_graphics_renderer": "Switch DirectX/Vulkan Renderer",
"tools_action_switch_graphics_renderer_info": "Current Renderer: {v0}",
"tools_graphics_renderer_dx11": "DirectX 11",

View File

@ -1178,6 +1178,39 @@
"tools_unp4k_action_cancel_multi_select": "取消多选",
"tools_unp4k_action_select_all": "全选",
"tools_unp4k_action_deselect_all": "取消全选",
"dcb_viewer_title": "DataForge 查看器 -> {v0}",
"dcb_viewer_loading": "正在加载 DCB 文件...",
"dcb_viewer_parsing": "正在解析 DataForge 数据...",
"dcb_viewer_loading_records": "正在加载记录列表...",
"dcb_viewer_loaded_records": "已加载 {v0} 条记录",
"dcb_viewer_error_not_dcb": "无效的 DCB 文件格式",
"dcb_viewer_search_mode": "搜索模式",
"dcb_viewer_searching": "正在搜索...",
"dcb_viewer_search_results": "找到 {v0} 个结果",
"dcb_viewer_search_fulltext_placeholder": "全文搜索(回车确认)...",
"dcb_viewer_search_list_placeholder": "过滤记录路径...",
"dcb_viewer_search_in_file": "在当前文件中搜索...",
"dcb_viewer_search_no_results": "无结果",
"dcb_viewer_search_case_sensitive": "区分大小写",
"dcb_viewer_search_regex": "使用正则表达式",
"dcb_viewer_fold_all": "折叠/展开代码块",
"dcb_viewer_no_records": "没有记录",
"dcb_viewer_no_search_results": "没有搜索结果",
"dcb_viewer_select_record": "选择一条记录以查看 XML 内容",
"dcb_viewer_export": "导出",
"dcb_viewer_export_single_xml": "导出为单个 XML",
"dcb_viewer_export_multiple_xml": "导出为多个 XML 文件",
"dcb_viewer_export_success": "导出成功",
"dcb_viewer_export_failed": "导出失败",
"dcb_viewer_title_standalone": "DataForge 查看器",
"dcb_viewer_select_file_title": "选择 DCB 文件",
"dcb_viewer_select_file_description": "请选择一个 .dcb 文件或从 P4K 中提取的 DCB 文件",
"dcb_viewer_select_dcb_file": "选择 DCB 文件",
"dcb_viewer_select_p4k_file": "选择 P4K 文件",
"dcb_viewer_select_another_file": "选择其他文件",
"tools_action_dcb_viewer": "DCB/DataForge 查看器",
"tools_action_dcb_viewer_info": "查看和导出 DataForge 游戏数据库 (.dcb) 文件内容",
"action_back": "返回",
"tools_action_switch_graphics_renderer": "切换 DirectX/Vulkan 渲染器",
"tools_action_switch_graphics_renderer_info": "当前渲染器:{v0}",
"tools_graphics_renderer_dx11": "DirectX 11",

View File

@ -0,0 +1,323 @@
import 'dart:io';
import 'dart:typed_data';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:path_provider/path_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:starcitizen_doctor/common/rust/api/unp4k_api.dart' as unp4k_api;
import 'package:starcitizen_doctor/common/utils/log.dart';
import 'package:starcitizen_doctor/data/dcb_data.dart';
part 'dcb_viewer.freezed.dart';
part 'dcb_viewer.g.dart';
/// DCB
enum DcbViewMode {
///
browse,
///
searchResults,
}
/// DCB
enum DcbSourceType {
///
none,
///
filePath,
/// P4K
p4kMemory,
}
@freezed
abstract class DcbViewerState with _$DcbViewerState {
const factory DcbViewerState({
///
@Default(true) bool isLoading,
/// /
@Default('') String message,
///
String? errorMessage,
/// DCB
@Default('') String dcbFilePath,
///
@Default(DcbSourceType.none) DcbSourceType sourceType,
///
@Default([]) List<DcbRecordData> allRecords,
///
@Default([]) List<DcbRecordData> filteredRecords,
///
String? selectedRecordPath,
/// XML
@Default('') String currentXml,
///
@Default('') String listSearchQuery,
///
@Default('') String fullTextSearchQuery,
///
@Default(DcbViewMode.browse) DcbViewMode viewMode,
///
@Default([]) List<DcbSearchResultData> searchResults,
///
@Default(false) bool isSearching,
/// XML
@Default(false) bool isLoadingXml,
///
@Default(false) bool isExporting,
///
@Default(false) bool needSelectFile,
}) = _DcbViewerState;
}
@riverpod
class DcbViewerModel extends _$DcbViewerModel {
@override
DcbViewerState build() {
ref.onDispose(() async {
try {
await unp4k_api.dcbClose();
} catch (e) {
dPrint('[DCB Viewer] close error: $e');
}
});
return const DcbViewerState(isLoading: false, needSelectFile: true);
}
/// DCB
Future<void> initFromFilePath(String filePath) async {
state = state.copyWith(
isLoading: true,
message: S.current.dcb_viewer_loading,
dcbFilePath: filePath,
sourceType: DcbSourceType.filePath,
needSelectFile: false,
errorMessage: null,
);
try {
final file = File(filePath);
if (!await file.exists()) {
state = state.copyWith(isLoading: false, errorMessage: 'File not found: $filePath');
return;
}
final data = await file.readAsBytes();
await _loadDcbData(data, filePath);
} catch (e) {
dPrint('[DCB Viewer] init from file error: $e');
state = state.copyWith(isLoading: false, errorMessage: e.toString());
}
}
/// P4K DCB (Data/Game2.dcb)
Future<void> initFromP4kFile(String p4kPath) async {
state = state.copyWith(
isLoading: true,
message: S.current.dcb_viewer_loading,
dcbFilePath: 'Data/Game2.dcb',
sourceType: DcbSourceType.p4kMemory,
needSelectFile: false,
errorMessage: null,
);
try {
// P4K
state = state.copyWith(message: S.current.tools_unp4k_msg_reading);
await unp4k_api.p4KOpen(p4KPath: p4kPath);
// DCB
state = state.copyWith(message: S.current.dcb_viewer_loading);
final data = await unp4k_api.p4KExtractToMemory(filePath: '\\Data\\Game2.dcb');
// P4K
await unp4k_api.p4KClose();
//
final tempDir = await getTemporaryDirectory();
final tempPath = '${tempDir.path}/SCToolbox_dcb/Game2.dcb';
final tempFile = File(tempPath);
await tempFile.parent.create(recursive: true);
await tempFile.writeAsBytes(data);
state = state.copyWith(dcbFilePath: tempPath);
await _loadDcbData(Uint8List.fromList(data), tempPath);
} catch (e) {
dPrint('[DCB Viewer] init from P4K error: $e');
// P4K
try {
await unp4k_api.p4KClose();
} catch (_) {}
state = state.copyWith(isLoading: false, errorMessage: e.toString());
}
}
/// DCB
Future<void> initFromData(Uint8List data, String filePath) async {
state = state.copyWith(
isLoading: true,
message: S.current.dcb_viewer_loading,
dcbFilePath: filePath,
sourceType: DcbSourceType.p4kMemory,
needSelectFile: false,
errorMessage: null,
);
await _loadDcbData(data, filePath);
}
/// DCB
Future<void> _loadDcbData(Uint8List data, String filePath) async {
try {
// DCB
final isDataforge = await unp4k_api.dcbIsDataforge(data: data);
if (!isDataforge) {
state = state.copyWith(isLoading: false, errorMessage: S.current.dcb_viewer_error_not_dcb);
return;
}
// DCB
state = state.copyWith(message: S.current.dcb_viewer_parsing);
await unp4k_api.dcbOpen(data: data);
//
state = state.copyWith(message: S.current.dcb_viewer_loading_records);
final apiRecords = await unp4k_api.dcbGetRecordList();
//
final records = apiRecords.map((r) => DcbRecordData(path: r.path, index: r.index.toInt())).toList();
state = state.copyWith(
isLoading: false,
message: S.current.dcb_viewer_loaded_records(records.length),
allRecords: records,
filteredRecords: records,
);
} catch (e) {
dPrint('[DCB Viewer] load data error: $e');
state = state.copyWith(isLoading: false, errorMessage: e.toString());
}
}
/// XML
Future<void> selectRecord(DcbRecordData record) async {
if (state.selectedRecordPath == record.path) return;
state = state.copyWith(selectedRecordPath: record.path, isLoadingXml: true, currentXml: '');
try {
final xml = await unp4k_api.dcbRecordToXml(path: record.path);
state = state.copyWith(isLoadingXml: false, currentXml: xml);
} catch (e) {
dPrint('[DCB Viewer] load xml error: $e');
state = state.copyWith(isLoadingXml: false, currentXml: '<!-- Error loading XML: $e -->');
}
}
///
void searchList(String query) {
state = state.copyWith(listSearchQuery: query);
if (query.isEmpty) {
state = state.copyWith(filteredRecords: state.allRecords);
return;
}
final queryLower = query.toLowerCase();
final filtered = state.allRecords.where((record) {
return record.path.toLowerCase().contains(queryLower);
}).toList();
state = state.copyWith(filteredRecords: filtered);
}
///
Future<void> searchFullText(String query) async {
if (query.isEmpty) {
// 退
state = state.copyWith(viewMode: DcbViewMode.browse, fullTextSearchQuery: '', searchResults: []);
return;
}
state = state.copyWith(isSearching: true, fullTextSearchQuery: query, viewMode: DcbViewMode.searchResults);
try {
final apiResults = await unp4k_api.dcbSearchAll(query: query, maxResults: BigInt.from(500));
//
final results = apiResults.map((r) {
return DcbSearchResultData(
path: r.path,
index: r.index.toInt(),
matches: r.matches
.map((m) => DcbSearchMatchData(lineNumber: m.lineNumber.toInt(), lineContent: m.lineContent))
.toList(),
);
}).toList();
state = state.copyWith(
isSearching: false,
searchResults: results,
message: S.current.dcb_viewer_search_results(results.length),
);
} catch (e) {
dPrint('[DCB Viewer] search error: $e');
state = state.copyWith(isSearching: false, message: 'Search error: $e');
}
}
///
Future<void> selectFromSearchResult(DcbSearchResultData result) async {
final record = DcbRecordData(path: result.path, index: result.index);
await selectRecord(record);
}
/// 退
void exitSearchMode() {
state = state.copyWith(
viewMode: DcbViewMode.browse,
fullTextSearchQuery: '',
searchResults: [],
message: S.current.dcb_viewer_loaded_records(state.allRecords.length),
);
}
/// DCB
Future<String?> exportToDisk(String outputPath, bool merge) async {
state = state.copyWith(isExporting: true);
try {
await unp4k_api.dcbExportToDisk(outputPath: outputPath, merge: merge, dcbPath: state.dcbFilePath);
state = state.copyWith(isExporting: false);
return null; //
} catch (e) {
dPrint('[DCB Viewer] export error: $e');
state = state.copyWith(isExporting: false);
return e.toString();
}
}
///
void reset() {
state = const DcbViewerState(isLoading: false, needSelectFile: true);
}
}

View File

@ -0,0 +1,374 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'dcb_viewer.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
// dart format off
T _$identity<T>(T value) => value;
/// @nodoc
mixin _$DcbViewerState {
///
bool get isLoading;/// /
String get message;///
String? get errorMessage;/// DCB
String get dcbFilePath;///
DcbSourceType get sourceType;///
List<DcbRecordData> get allRecords;///
List<DcbRecordData> get filteredRecords;///
String? get selectedRecordPath;/// XML
String get currentXml;///
String get listSearchQuery;///
String get fullTextSearchQuery;///
DcbViewMode get viewMode;///
List<DcbSearchResultData> get searchResults;///
bool get isSearching;/// XML
bool get isLoadingXml;///
bool get isExporting;///
bool get needSelectFile;
/// Create a copy of DcbViewerState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$DcbViewerStateCopyWith<DcbViewerState> get copyWith => _$DcbViewerStateCopyWithImpl<DcbViewerState>(this as DcbViewerState, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is DcbViewerState&&(identical(other.isLoading, isLoading) || other.isLoading == isLoading)&&(identical(other.message, message) || other.message == message)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.dcbFilePath, dcbFilePath) || other.dcbFilePath == dcbFilePath)&&(identical(other.sourceType, sourceType) || other.sourceType == sourceType)&&const DeepCollectionEquality().equals(other.allRecords, allRecords)&&const DeepCollectionEquality().equals(other.filteredRecords, filteredRecords)&&(identical(other.selectedRecordPath, selectedRecordPath) || other.selectedRecordPath == selectedRecordPath)&&(identical(other.currentXml, currentXml) || other.currentXml == currentXml)&&(identical(other.listSearchQuery, listSearchQuery) || other.listSearchQuery == listSearchQuery)&&(identical(other.fullTextSearchQuery, fullTextSearchQuery) || other.fullTextSearchQuery == fullTextSearchQuery)&&(identical(other.viewMode, viewMode) || other.viewMode == viewMode)&&const DeepCollectionEquality().equals(other.searchResults, searchResults)&&(identical(other.isSearching, isSearching) || other.isSearching == isSearching)&&(identical(other.isLoadingXml, isLoadingXml) || other.isLoadingXml == isLoadingXml)&&(identical(other.isExporting, isExporting) || other.isExporting == isExporting)&&(identical(other.needSelectFile, needSelectFile) || other.needSelectFile == needSelectFile));
}
@override
int get hashCode => Object.hash(runtimeType,isLoading,message,errorMessage,dcbFilePath,sourceType,const DeepCollectionEquality().hash(allRecords),const DeepCollectionEquality().hash(filteredRecords),selectedRecordPath,currentXml,listSearchQuery,fullTextSearchQuery,viewMode,const DeepCollectionEquality().hash(searchResults),isSearching,isLoadingXml,isExporting,needSelectFile);
@override
String toString() {
return 'DcbViewerState(isLoading: $isLoading, message: $message, errorMessage: $errorMessage, dcbFilePath: $dcbFilePath, sourceType: $sourceType, allRecords: $allRecords, filteredRecords: $filteredRecords, selectedRecordPath: $selectedRecordPath, currentXml: $currentXml, listSearchQuery: $listSearchQuery, fullTextSearchQuery: $fullTextSearchQuery, viewMode: $viewMode, searchResults: $searchResults, isSearching: $isSearching, isLoadingXml: $isLoadingXml, isExporting: $isExporting, needSelectFile: $needSelectFile)';
}
}
/// @nodoc
abstract mixin class $DcbViewerStateCopyWith<$Res> {
factory $DcbViewerStateCopyWith(DcbViewerState value, $Res Function(DcbViewerState) _then) = _$DcbViewerStateCopyWithImpl;
@useResult
$Res call({
bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List<DcbRecordData> allRecords, List<DcbRecordData> filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List<DcbSearchResultData> searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile
});
}
/// @nodoc
class _$DcbViewerStateCopyWithImpl<$Res>
implements $DcbViewerStateCopyWith<$Res> {
_$DcbViewerStateCopyWithImpl(this._self, this._then);
final DcbViewerState _self;
final $Res Function(DcbViewerState) _then;
/// Create a copy of DcbViewerState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? isLoading = null,Object? message = null,Object? errorMessage = freezed,Object? dcbFilePath = null,Object? sourceType = null,Object? allRecords = null,Object? filteredRecords = null,Object? selectedRecordPath = freezed,Object? currentXml = null,Object? listSearchQuery = null,Object? fullTextSearchQuery = null,Object? viewMode = null,Object? searchResults = null,Object? isSearching = null,Object? isLoadingXml = null,Object? isExporting = null,Object? needSelectFile = null,}) {
return _then(_self.copyWith(
isLoading: null == isLoading ? _self.isLoading : isLoading // ignore: cast_nullable_to_non_nullable
as bool,message: null == message ? _self.message : message // ignore: cast_nullable_to_non_nullable
as String,errorMessage: freezed == errorMessage ? _self.errorMessage : errorMessage // ignore: cast_nullable_to_non_nullable
as String?,dcbFilePath: null == dcbFilePath ? _self.dcbFilePath : dcbFilePath // ignore: cast_nullable_to_non_nullable
as String,sourceType: null == sourceType ? _self.sourceType : sourceType // ignore: cast_nullable_to_non_nullable
as DcbSourceType,allRecords: null == allRecords ? _self.allRecords : allRecords // ignore: cast_nullable_to_non_nullable
as List<DcbRecordData>,filteredRecords: null == filteredRecords ? _self.filteredRecords : filteredRecords // ignore: cast_nullable_to_non_nullable
as List<DcbRecordData>,selectedRecordPath: freezed == selectedRecordPath ? _self.selectedRecordPath : selectedRecordPath // ignore: cast_nullable_to_non_nullable
as String?,currentXml: null == currentXml ? _self.currentXml : currentXml // ignore: cast_nullable_to_non_nullable
as String,listSearchQuery: null == listSearchQuery ? _self.listSearchQuery : listSearchQuery // ignore: cast_nullable_to_non_nullable
as String,fullTextSearchQuery: null == fullTextSearchQuery ? _self.fullTextSearchQuery : fullTextSearchQuery // ignore: cast_nullable_to_non_nullable
as String,viewMode: null == viewMode ? _self.viewMode : viewMode // ignore: cast_nullable_to_non_nullable
as DcbViewMode,searchResults: null == searchResults ? _self.searchResults : searchResults // ignore: cast_nullable_to_non_nullable
as List<DcbSearchResultData>,isSearching: null == isSearching ? _self.isSearching : isSearching // ignore: cast_nullable_to_non_nullable
as bool,isLoadingXml: null == isLoadingXml ? _self.isLoadingXml : isLoadingXml // ignore: cast_nullable_to_non_nullable
as bool,isExporting: null == isExporting ? _self.isExporting : isExporting // ignore: cast_nullable_to_non_nullable
as bool,needSelectFile: null == needSelectFile ? _self.needSelectFile : needSelectFile // ignore: cast_nullable_to_non_nullable
as bool,
));
}
}
/// Adds pattern-matching-related methods to [DcbViewerState].
extension DcbViewerStatePatterns on DcbViewerState {
/// A variant of `map` that fallback to returning `orElse`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _DcbViewerState value)? $default,{required TResult orElse(),}){
final _that = this;
switch (_that) {
case _DcbViewerState() when $default != null:
return $default(_that);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// Callbacks receives the raw object, upcasted.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case final Subclass2 value:
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _DcbViewerState value) $default,){
final _that = this;
switch (_that) {
case _DcbViewerState():
return $default(_that);case _:
throw StateError('Unexpected subclass');
}
}
/// A variant of `map` that fallback to returning `null`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _DcbViewerState value)? $default,){
final _that = this;
switch (_that) {
case _DcbViewerState() when $default != null:
return $default(_that);case _:
return null;
}
}
/// A variant of `when` that fallback to an `orElse` callback.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List<DcbRecordData> allRecords, List<DcbRecordData> filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List<DcbSearchResultData> searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _DcbViewerState() when $default != null:
return $default(_that.isLoading,_that.message,_that.errorMessage,_that.dcbFilePath,_that.sourceType,_that.allRecords,_that.filteredRecords,_that.selectedRecordPath,_that.currentXml,_that.listSearchQuery,_that.fullTextSearchQuery,_that.viewMode,_that.searchResults,_that.isSearching,_that.isLoadingXml,_that.isExporting,_that.needSelectFile);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// As opposed to `map`, this offers destructuring.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case Subclass2(:final field2):
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List<DcbRecordData> allRecords, List<DcbRecordData> filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List<DcbSearchResultData> searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile) $default,) {final _that = this;
switch (_that) {
case _DcbViewerState():
return $default(_that.isLoading,_that.message,_that.errorMessage,_that.dcbFilePath,_that.sourceType,_that.allRecords,_that.filteredRecords,_that.selectedRecordPath,_that.currentXml,_that.listSearchQuery,_that.fullTextSearchQuery,_that.viewMode,_that.searchResults,_that.isSearching,_that.isLoadingXml,_that.isExporting,_that.needSelectFile);case _:
throw StateError('Unexpected subclass');
}
}
/// A variant of `when` that fallback to returning `null`
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List<DcbRecordData> allRecords, List<DcbRecordData> filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List<DcbSearchResultData> searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile)? $default,) {final _that = this;
switch (_that) {
case _DcbViewerState() when $default != null:
return $default(_that.isLoading,_that.message,_that.errorMessage,_that.dcbFilePath,_that.sourceType,_that.allRecords,_that.filteredRecords,_that.selectedRecordPath,_that.currentXml,_that.listSearchQuery,_that.fullTextSearchQuery,_that.viewMode,_that.searchResults,_that.isSearching,_that.isLoadingXml,_that.isExporting,_that.needSelectFile);case _:
return null;
}
}
}
/// @nodoc
class _DcbViewerState implements DcbViewerState {
const _DcbViewerState({this.isLoading = true, this.message = '', this.errorMessage, this.dcbFilePath = '', this.sourceType = DcbSourceType.none, final List<DcbRecordData> allRecords = const [], final List<DcbRecordData> filteredRecords = const [], this.selectedRecordPath, this.currentXml = '', this.listSearchQuery = '', this.fullTextSearchQuery = '', this.viewMode = DcbViewMode.browse, final List<DcbSearchResultData> searchResults = const [], this.isSearching = false, this.isLoadingXml = false, this.isExporting = false, this.needSelectFile = false}): _allRecords = allRecords,_filteredRecords = filteredRecords,_searchResults = searchResults;
///
@override@JsonKey() final bool isLoading;
/// /
@override@JsonKey() final String message;
///
@override final String? errorMessage;
/// DCB
@override@JsonKey() final String dcbFilePath;
///
@override@JsonKey() final DcbSourceType sourceType;
///
final List<DcbRecordData> _allRecords;
///
@override@JsonKey() List<DcbRecordData> get allRecords {
if (_allRecords is EqualUnmodifiableListView) return _allRecords;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_allRecords);
}
///
final List<DcbRecordData> _filteredRecords;
///
@override@JsonKey() List<DcbRecordData> get filteredRecords {
if (_filteredRecords is EqualUnmodifiableListView) return _filteredRecords;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_filteredRecords);
}
///
@override final String? selectedRecordPath;
/// XML
@override@JsonKey() final String currentXml;
///
@override@JsonKey() final String listSearchQuery;
///
@override@JsonKey() final String fullTextSearchQuery;
///
@override@JsonKey() final DcbViewMode viewMode;
///
final List<DcbSearchResultData> _searchResults;
///
@override@JsonKey() List<DcbSearchResultData> get searchResults {
if (_searchResults is EqualUnmodifiableListView) return _searchResults;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_searchResults);
}
///
@override@JsonKey() final bool isSearching;
/// XML
@override@JsonKey() final bool isLoadingXml;
///
@override@JsonKey() final bool isExporting;
///
@override@JsonKey() final bool needSelectFile;
/// Create a copy of DcbViewerState
/// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
_$DcbViewerStateCopyWith<_DcbViewerState> get copyWith => __$DcbViewerStateCopyWithImpl<_DcbViewerState>(this, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _DcbViewerState&&(identical(other.isLoading, isLoading) || other.isLoading == isLoading)&&(identical(other.message, message) || other.message == message)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.dcbFilePath, dcbFilePath) || other.dcbFilePath == dcbFilePath)&&(identical(other.sourceType, sourceType) || other.sourceType == sourceType)&&const DeepCollectionEquality().equals(other._allRecords, _allRecords)&&const DeepCollectionEquality().equals(other._filteredRecords, _filteredRecords)&&(identical(other.selectedRecordPath, selectedRecordPath) || other.selectedRecordPath == selectedRecordPath)&&(identical(other.currentXml, currentXml) || other.currentXml == currentXml)&&(identical(other.listSearchQuery, listSearchQuery) || other.listSearchQuery == listSearchQuery)&&(identical(other.fullTextSearchQuery, fullTextSearchQuery) || other.fullTextSearchQuery == fullTextSearchQuery)&&(identical(other.viewMode, viewMode) || other.viewMode == viewMode)&&const DeepCollectionEquality().equals(other._searchResults, _searchResults)&&(identical(other.isSearching, isSearching) || other.isSearching == isSearching)&&(identical(other.isLoadingXml, isLoadingXml) || other.isLoadingXml == isLoadingXml)&&(identical(other.isExporting, isExporting) || other.isExporting == isExporting)&&(identical(other.needSelectFile, needSelectFile) || other.needSelectFile == needSelectFile));
}
@override
int get hashCode => Object.hash(runtimeType,isLoading,message,errorMessage,dcbFilePath,sourceType,const DeepCollectionEquality().hash(_allRecords),const DeepCollectionEquality().hash(_filteredRecords),selectedRecordPath,currentXml,listSearchQuery,fullTextSearchQuery,viewMode,const DeepCollectionEquality().hash(_searchResults),isSearching,isLoadingXml,isExporting,needSelectFile);
@override
String toString() {
return 'DcbViewerState(isLoading: $isLoading, message: $message, errorMessage: $errorMessage, dcbFilePath: $dcbFilePath, sourceType: $sourceType, allRecords: $allRecords, filteredRecords: $filteredRecords, selectedRecordPath: $selectedRecordPath, currentXml: $currentXml, listSearchQuery: $listSearchQuery, fullTextSearchQuery: $fullTextSearchQuery, viewMode: $viewMode, searchResults: $searchResults, isSearching: $isSearching, isLoadingXml: $isLoadingXml, isExporting: $isExporting, needSelectFile: $needSelectFile)';
}
}
/// @nodoc
abstract mixin class _$DcbViewerStateCopyWith<$Res> implements $DcbViewerStateCopyWith<$Res> {
factory _$DcbViewerStateCopyWith(_DcbViewerState value, $Res Function(_DcbViewerState) _then) = __$DcbViewerStateCopyWithImpl;
@override @useResult
$Res call({
bool isLoading, String message, String? errorMessage, String dcbFilePath, DcbSourceType sourceType, List<DcbRecordData> allRecords, List<DcbRecordData> filteredRecords, String? selectedRecordPath, String currentXml, String listSearchQuery, String fullTextSearchQuery, DcbViewMode viewMode, List<DcbSearchResultData> searchResults, bool isSearching, bool isLoadingXml, bool isExporting, bool needSelectFile
});
}
/// @nodoc
class __$DcbViewerStateCopyWithImpl<$Res>
implements _$DcbViewerStateCopyWith<$Res> {
__$DcbViewerStateCopyWithImpl(this._self, this._then);
final _DcbViewerState _self;
final $Res Function(_DcbViewerState) _then;
/// Create a copy of DcbViewerState
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? isLoading = null,Object? message = null,Object? errorMessage = freezed,Object? dcbFilePath = null,Object? sourceType = null,Object? allRecords = null,Object? filteredRecords = null,Object? selectedRecordPath = freezed,Object? currentXml = null,Object? listSearchQuery = null,Object? fullTextSearchQuery = null,Object? viewMode = null,Object? searchResults = null,Object? isSearching = null,Object? isLoadingXml = null,Object? isExporting = null,Object? needSelectFile = null,}) {
return _then(_DcbViewerState(
isLoading: null == isLoading ? _self.isLoading : isLoading // ignore: cast_nullable_to_non_nullable
as bool,message: null == message ? _self.message : message // ignore: cast_nullable_to_non_nullable
as String,errorMessage: freezed == errorMessage ? _self.errorMessage : errorMessage // ignore: cast_nullable_to_non_nullable
as String?,dcbFilePath: null == dcbFilePath ? _self.dcbFilePath : dcbFilePath // ignore: cast_nullable_to_non_nullable
as String,sourceType: null == sourceType ? _self.sourceType : sourceType // ignore: cast_nullable_to_non_nullable
as DcbSourceType,allRecords: null == allRecords ? _self._allRecords : allRecords // ignore: cast_nullable_to_non_nullable
as List<DcbRecordData>,filteredRecords: null == filteredRecords ? _self._filteredRecords : filteredRecords // ignore: cast_nullable_to_non_nullable
as List<DcbRecordData>,selectedRecordPath: freezed == selectedRecordPath ? _self.selectedRecordPath : selectedRecordPath // ignore: cast_nullable_to_non_nullable
as String?,currentXml: null == currentXml ? _self.currentXml : currentXml // ignore: cast_nullable_to_non_nullable
as String,listSearchQuery: null == listSearchQuery ? _self.listSearchQuery : listSearchQuery // ignore: cast_nullable_to_non_nullable
as String,fullTextSearchQuery: null == fullTextSearchQuery ? _self.fullTextSearchQuery : fullTextSearchQuery // ignore: cast_nullable_to_non_nullable
as String,viewMode: null == viewMode ? _self.viewMode : viewMode // ignore: cast_nullable_to_non_nullable
as DcbViewMode,searchResults: null == searchResults ? _self._searchResults : searchResults // ignore: cast_nullable_to_non_nullable
as List<DcbSearchResultData>,isSearching: null == isSearching ? _self.isSearching : isSearching // ignore: cast_nullable_to_non_nullable
as bool,isLoadingXml: null == isLoadingXml ? _self.isLoadingXml : isLoadingXml // ignore: cast_nullable_to_non_nullable
as bool,isExporting: null == isExporting ? _self.isExporting : isExporting // ignore: cast_nullable_to_non_nullable
as bool,needSelectFile: null == needSelectFile ? _self.needSelectFile : needSelectFile // ignore: cast_nullable_to_non_nullable
as bool,
));
}
}
// dart format on

View File

@ -0,0 +1,63 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'dcb_viewer.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(DcbViewerModel)
const dcbViewerModelProvider = DcbViewerModelProvider._();
final class DcbViewerModelProvider
extends $NotifierProvider<DcbViewerModel, DcbViewerState> {
const DcbViewerModelProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'dcbViewerModelProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$dcbViewerModelHash();
@$internal
@override
DcbViewerModel create() => DcbViewerModel();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(DcbViewerState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<DcbViewerState>(value),
);
}
}
String _$dcbViewerModelHash() => r'94c3542282f64917efadbe14a0ee4967220bec77';
abstract class _$DcbViewerModel extends $Notifier<DcbViewerState> {
DcbViewerState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<DcbViewerState, DcbViewerState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<DcbViewerState, DcbViewerState>,
DcbViewerState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@ -1,8 +1,11 @@
// ignore_for_file: avoid_build_context_in_providers
import 'dart:io';
import 'package:file/memory.dart';
import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:go_router/go_router.dart';
import 'package:path_provider/path_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
@ -378,17 +381,18 @@ class Unp4kCModel extends _$Unp4kCModel {
}
}
Future<void> openFile(String filePath) async {
Future<void> openFile(String filePath, {BuildContext? context}) async {
final tempDir = await getTemporaryDirectory();
final tempPath = "${tempDir.absolute.path}\\SCToolbox_unp4kc\\${SCLoggerHelper.getGameChannelID(getGamePath())}\\";
state = state.copyWith(
tempOpenFile: const MapEntry("loading", ""),
endMessage: S.current.tools_unp4k_msg_open_file(filePath),
);
await extractFile(filePath, tempPath, mode: "extract_open");
// ignore: use_build_context_synchronously
await extractFile(filePath, tempPath, mode: "extract_open", context: context);
}
Future<void> extractFile(String filePath, String outputPath, {String mode = "extract"}) async {
Future<void> extractFile(String filePath, String outputPath, {String mode = "extract", BuildContext? context}) async {
try {
// remove first \\
if (filePath.startsWith("\\")) {
@ -402,6 +406,16 @@ class Unp4kCModel extends _$Unp4kCModel {
await unp4k_api.p4KExtractToDisk(filePath: filePath, outputPath: outputPath);
if (mode == "extract_open") {
if (context != null && filePath.toLowerCase().endsWith(".dcb")) {
// loading
state = state.copyWith(tempOpenFile: null, endMessage: S.current.tools_unp4k_msg_open_file(filePath));
// DCBViewer
if (context.mounted) {
context.push("/tools/dcb_viewer", extra: {"path": fullOutputPath});
}
return;
}
const textExt = [".txt", ".xml", ".json", ".lua", ".cfg", ".ini", ".mtl"];
const imgExt = [".png"];
String openType = "unknown";

View File

@ -12,7 +12,7 @@ part of 'unp4kc.dart';
// dart format off
T _$identity<T>(T value) => value;
/// @nodoc
mixin _$Unp4kcState implements DiagnosticableTreeMixin {
mixin _$Unp4kcState {
bool get startUp; Map<String, AppUnp4kP4kItemData>? get files; MemoryFileSystem? get fs; String get curPath; String? get endMessage; MapEntry<String, String>? get tempOpenFile; String get errorMessage; String get searchQuery; bool get isSearching;///
MemoryFileSystem? get searchFs;///
@ -26,12 +26,6 @@ mixin _$Unp4kcState implements DiagnosticableTreeMixin {
$Unp4kcStateCopyWith<Unp4kcState> get copyWith => _$Unp4kcStateCopyWithImpl<Unp4kcState>(this as Unp4kcState, _$identity);
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
properties
..add(DiagnosticsProperty('type', 'Unp4kcState'))
..add(DiagnosticsProperty('startUp', startUp))..add(DiagnosticsProperty('files', files))..add(DiagnosticsProperty('fs', fs))..add(DiagnosticsProperty('curPath', curPath))..add(DiagnosticsProperty('endMessage', endMessage))..add(DiagnosticsProperty('tempOpenFile', tempOpenFile))..add(DiagnosticsProperty('errorMessage', errorMessage))..add(DiagnosticsProperty('searchQuery', searchQuery))..add(DiagnosticsProperty('isSearching', isSearching))..add(DiagnosticsProperty('searchFs', searchFs))..add(DiagnosticsProperty('searchMatchedFiles', searchMatchedFiles))..add(DiagnosticsProperty('sortType', sortType))..add(DiagnosticsProperty('isMultiSelectMode', isMultiSelectMode))..add(DiagnosticsProperty('selectedItems', selectedItems));
}
@override
bool operator ==(Object other) {
@ -43,7 +37,7 @@ bool operator ==(Object other) {
int get hashCode => Object.hash(runtimeType,startUp,const DeepCollectionEquality().hash(files),fs,curPath,endMessage,tempOpenFile,errorMessage,searchQuery,isSearching,searchFs,const DeepCollectionEquality().hash(searchMatchedFiles),sortType,isMultiSelectMode,const DeepCollectionEquality().hash(selectedItems));
@override
String toString({ DiagnosticLevel minLevel = DiagnosticLevel.info }) {
String toString() {
return 'Unp4kcState(startUp: $startUp, files: $files, fs: $fs, curPath: $curPath, endMessage: $endMessage, tempOpenFile: $tempOpenFile, errorMessage: $errorMessage, searchQuery: $searchQuery, isSearching: $isSearching, searchFs: $searchFs, searchMatchedFiles: $searchMatchedFiles, sortType: $sortType, isMultiSelectMode: $isMultiSelectMode, selectedItems: $selectedItems)';
}
@ -228,7 +222,7 @@ return $default(_that.startUp,_that.files,_that.fs,_that.curPath,_that.endMessag
/// @nodoc
class _Unp4kcState with DiagnosticableTreeMixin implements Unp4kcState {
class _Unp4kcState implements Unp4kcState {
const _Unp4kcState({required this.startUp, final Map<String, AppUnp4kP4kItemData>? files, this.fs, required this.curPath, this.endMessage, this.tempOpenFile, this.errorMessage = "", this.searchQuery = "", this.isSearching = false, this.searchFs, final Set<String>? searchMatchedFiles, this.sortType = Unp4kSortType.defaultSort, this.isMultiSelectMode = false, final Set<String> selectedItems = const {}}): _files = files,_searchMatchedFiles = searchMatchedFiles,_selectedItems = selectedItems;
@ -282,12 +276,6 @@ class _Unp4kcState with DiagnosticableTreeMixin implements Unp4kcState {
_$Unp4kcStateCopyWith<_Unp4kcState> get copyWith => __$Unp4kcStateCopyWithImpl<_Unp4kcState>(this, _$identity);
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
properties
..add(DiagnosticsProperty('type', 'Unp4kcState'))
..add(DiagnosticsProperty('startUp', startUp))..add(DiagnosticsProperty('files', files))..add(DiagnosticsProperty('fs', fs))..add(DiagnosticsProperty('curPath', curPath))..add(DiagnosticsProperty('endMessage', endMessage))..add(DiagnosticsProperty('tempOpenFile', tempOpenFile))..add(DiagnosticsProperty('errorMessage', errorMessage))..add(DiagnosticsProperty('searchQuery', searchQuery))..add(DiagnosticsProperty('isSearching', isSearching))..add(DiagnosticsProperty('searchFs', searchFs))..add(DiagnosticsProperty('searchMatchedFiles', searchMatchedFiles))..add(DiagnosticsProperty('sortType', sortType))..add(DiagnosticsProperty('isMultiSelectMode', isMultiSelectMode))..add(DiagnosticsProperty('selectedItems', selectedItems));
}
@override
bool operator ==(Object other) {
@ -299,7 +287,7 @@ bool operator ==(Object other) {
int get hashCode => Object.hash(runtimeType,startUp,const DeepCollectionEquality().hash(_files),fs,curPath,endMessage,tempOpenFile,errorMessage,searchQuery,isSearching,searchFs,const DeepCollectionEquality().hash(_searchMatchedFiles),sortType,isMultiSelectMode,const DeepCollectionEquality().hash(_selectedItems));
@override
String toString({ DiagnosticLevel minLevel = DiagnosticLevel.info }) {
String toString() {
return 'Unp4kcState(startUp: $startUp, files: $files, fs: $fs, curPath: $curPath, endMessage: $endMessage, tempOpenFile: $tempOpenFile, errorMessage: $errorMessage, searchQuery: $searchQuery, isSearching: $isSearching, searchFs: $searchFs, searchMatchedFiles: $searchMatchedFiles, sortType: $sortType, isMultiSelectMode: $isMultiSelectMode, selectedItems: $selectedItems)';
}

View File

@ -41,7 +41,7 @@ final class Unp4kCModelProvider
}
}
String _$unp4kCModelHash() => r'72ee23ad9864cdfb73a588ea1a0509b083e7dee8';
String _$unp4kCModelHash() => r'68c24d50113e9e734ae8d277f65999bbef05dc05';
abstract class _$Unp4kCModel extends $Notifier<Unp4kcState> {
Unp4kcState build();

View File

@ -124,6 +124,13 @@ class ToolsUIModel extends _$ToolsUIModel {
const Icon(FontAwesomeIcons.fileZipper, size: 24),
onTap: () => _unp4kc(context),
),
ToolsItemData(
"dcb_viewer",
S.current.tools_action_dcb_viewer,
S.current.tools_action_dcb_viewer_info,
const Icon(FluentIcons.database, size: 24),
onTap: () => _dcbViewer(context),
),
]);
state = state.copyWith(items: items);
@ -702,6 +709,10 @@ class ToolsUIModel extends _$ToolsUIModel {
context.push("/tools/unp4kc");
}
Future<void> _dcbViewer(BuildContext context) async {
context.push("/tools/dcb_viewer");
}
static Future<void> rsiEnhance(BuildContext context, {bool showNotGameInstallMsg = false}) async {
if ((await SystemHelper.getPID("RSI Launcher")).isNotEmpty) {
if (!context.mounted) return;

View File

@ -41,7 +41,7 @@ final class ToolsUIModelProvider
}
}
String _$toolsUIModelHash() => r'17890d6d16d8e9d98c42d06d9e6c6165965bcee0';
String _$toolsUIModelHash() => r'b0fefd36bd8f1e23fdd6123d487f73d78e40ad06';
abstract class _$ToolsUIModel extends $Notifier<ToolsUIState> {
ToolsUIState build();

File diff suppressed because it is too large Load Diff

View File

@ -359,7 +359,7 @@ class _FileListItem extends HookWidget {
final dirName = item.name?.replaceAll(state.curPath.trim(), "") ?? "";
model.changeDir(dirName);
} else {
model.openFile(item.name ?? "");
model.openFile(item.name ?? "", context: context);
}
},
icon: Padding(

1
rust/Cargo.lock generated
View File

@ -6148,7 +6148,6 @@ checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
[[package]]
name = "unp4k_rs"
version = "0.1.0"
source = "git+https://github.com/StarCitizenToolBox/unp4k_rs?rev=b55d64934bde37bb1079c2c3e2996c8286532914#b55d64934bde37bb1079c2c3e2996c8286532914"
dependencies = [
"aes",
"anyhow",

View File

@ -31,7 +31,8 @@ tokenizers = { version = "0.22.2", default-features = false, features = ["onig"]
ndarray = "0.17.1"
serde_json = "1.0.145"
serde = { version = "1.0.228", features = ["derive"] }
unp4k_rs = { git = "https://github.com/StarCitizenToolBox/unp4k_rs", rev = "b55d64934bde37bb1079c2c3e2996c8286532914" }
#unp4k_rs = { git = "https://github.com/StarCitizenToolBox/unp4k_rs", rev = "5553c64b035e54610d9d1c758bae5c24d3161dde" }
unp4k_rs = { path = "../../unp4k_rs" }
uuid = { version = "1.19.0", features = ["v4"] }
parking_lot = "0.12.5"
crossbeam-channel = "0.5.15"

View File

@ -3,6 +3,7 @@ use flutter_rust_bridge::frb;
use std::collections::HashMap;
use std::path::PathBuf;
use std::sync::{Arc, Mutex};
use unp4k::dataforge::DataForge;
use unp4k::{CryXmlReader, P4kEntry, P4kFile};
/// P4K 文件项信息
@ -60,6 +61,10 @@ static GLOBAL_P4K_READER: once_cell::sync::Lazy<Arc<Mutex<Option<P4kFile>>>> =
static GLOBAL_P4K_FILES: once_cell::sync::Lazy<Arc<Mutex<HashMap<String, P4kEntry>>>> =
once_cell::sync::Lazy::new(|| Arc::new(Mutex::new(HashMap::new())));
// 全局 DataForge 实例(用于 DCB 文件解析)
static GLOBAL_DCB_READER: once_cell::sync::Lazy<Arc<Mutex<Option<DataForge>>>> =
once_cell::sync::Lazy::new(|| Arc::new(Mutex::new(None)));
/// 打开 P4K 文件(仅打开,不读取文件列表)
pub async fn p4k_open(p4k_path: String) -> Result<()> {
let path = PathBuf::from(&p4k_path);
@ -214,3 +219,197 @@ pub async fn p4k_close() -> Result<()> {
GLOBAL_P4K_FILES.lock().unwrap().clear();
Ok(())
}
// ==================== DataForge/DCB API ====================
/// DCB 记录项信息
#[frb(dart_metadata=("freezed"))]
pub struct DcbRecordItem {
/// 记录路径
pub path: String,
/// 记录索引
pub index: usize,
}
/// 检查数据是否为 DataForge/DCB 格式
pub fn dcb_is_dataforge(data: Vec<u8>) -> bool {
DataForge::is_dataforge(&data)
}
/// 从内存数据打开 DCB 文件
pub async fn dcb_open(data: Vec<u8>) -> Result<()> {
let df = tokio::task::spawn_blocking(move || {
DataForge::parse(&data).map_err(|e| anyhow!("Failed to parse DataForge: {}", e))
})
.await??;
*GLOBAL_DCB_READER.lock().unwrap() = Some(df);
Ok(())
}
/// 获取 DCB 记录数量
pub fn dcb_get_record_count() -> Result<usize> {
let reader = GLOBAL_DCB_READER.lock().unwrap();
let df = reader
.as_ref()
.ok_or_else(|| anyhow!("DCB reader not initialized"))?;
Ok(df.record_count())
}
/// 获取所有 DCB 记录路径列表
pub async fn dcb_get_record_list() -> Result<Vec<DcbRecordItem>> {
tokio::task::spawn_blocking(|| {
let reader = GLOBAL_DCB_READER.lock().unwrap();
let df = reader
.as_ref()
.ok_or_else(|| anyhow!("DCB reader not initialized"))?;
let path_to_record = df.path_to_record();
let mut result: Vec<DcbRecordItem> = path_to_record
.iter()
.map(|(path, &index)| DcbRecordItem {
path: path.clone(),
index,
})
.collect();
// 按路径排序
result.sort_by(|a, b| a.path.cmp(&b.path));
Ok(result)
})
.await?
}
/// 根据路径获取单条记录的 XML
pub async fn dcb_record_to_xml(path: String) -> Result<String> {
tokio::task::spawn_blocking(move || {
let reader = GLOBAL_DCB_READER.lock().unwrap();
let df = reader
.as_ref()
.ok_or_else(|| anyhow!("DCB reader not initialized"))?;
df.record_to_xml(&path, true)
.map_err(|e| anyhow!("Failed to convert record to XML: {}", e))
})
.await?
}
/// 根据索引获取单条记录的 XML
pub async fn dcb_record_to_xml_by_index(index: usize) -> Result<String> {
tokio::task::spawn_blocking(move || {
let reader = GLOBAL_DCB_READER.lock().unwrap();
let df = reader
.as_ref()
.ok_or_else(|| anyhow!("DCB reader not initialized"))?;
df.record_to_xml_by_index(index, true)
.map_err(|e| anyhow!("Failed to convert record to XML: {}", e))
})
.await?
}
/// 全文搜索 DCB 记录
/// 返回匹配的记录路径和预览摘要
#[frb(dart_metadata=("freezed"))]
pub struct DcbSearchResult {
/// 记录路径
pub path: String,
/// 记录索引
pub index: usize,
/// 匹配的行内容和行号列表
pub matches: Vec<DcbSearchMatch>,
}
#[frb(dart_metadata=("freezed"))]
pub struct DcbSearchMatch {
/// 行号从1开始
pub line_number: usize,
/// 匹配行的内容(带上下文)
pub line_content: String,
}
/// 全文搜索 DCB 记录
pub async fn dcb_search_all(query: String, max_results: usize) -> Result<Vec<DcbSearchResult>> {
tokio::task::spawn_blocking(move || {
let reader = GLOBAL_DCB_READER.lock().unwrap();
let df = reader
.as_ref()
.ok_or_else(|| anyhow!("DCB reader not initialized"))?;
let query_lower = query.to_lowercase();
let mut results = Vec::new();
for (path, &index) in df.path_to_record() {
if results.len() >= max_results {
break;
}
// 先检查路径是否匹配
let path_matches = path.to_lowercase().contains(&query_lower);
// 尝试获取 XML 并搜索内容
if let Ok(xml) = df.record_to_xml_by_index(index, true) {
let mut matches = Vec::new();
for (line_num, line) in xml.lines().enumerate() {
if line.to_lowercase().contains(&query_lower) {
let line_content = if line.len() > 200 {
format!("{}...", &line[..200])
} else {
line.to_string()
};
matches.push(DcbSearchMatch {
line_number: line_num + 1,
line_content,
});
// 每条记录最多保留 5 个匹配
if matches.len() >= 5 {
break;
}
}
}
if path_matches || !matches.is_empty() {
results.push(DcbSearchResult {
path: path.clone(),
index,
matches,
});
}
}
}
Ok(results)
})
.await?
}
/// 导出 DCB 到磁盘
/// merge: true = 合并为单个 XMLfalse = 分离为多个 XML 文件
pub async fn dcb_export_to_disk(output_path: String, dcb_path: String, merge: bool) -> Result<()> {
let output = PathBuf::from(&output_path);
let dcb = PathBuf::from(&dcb_path);
tokio::task::spawn_blocking(move || {
let reader = GLOBAL_DCB_READER.lock().unwrap();
let df = reader
.as_ref()
.ok_or_else(|| anyhow!("DCB reader not initialized"))?;
if merge {
unp4k::dataforge::export_merged(&df, &dcb, Some(&output))?;
} else {
unp4k::dataforge::export_separate(&df, &dcb, Some(&output))?;
}
Ok(())
})
.await?
}
/// 关闭 DCB 读取器
pub async fn dcb_close() -> Result<()> {
*GLOBAL_DCB_READER.lock().unwrap() = None;
Ok(())
}

View File

@ -37,7 +37,7 @@ flutter_rust_bridge::frb_generated_boilerplate!(
default_rust_auto_opaque = RustAutoOpaqueNom,
);
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.11.1";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1482626931;
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1903117367;
// Section: executor
@ -136,6 +136,227 @@ fn wire__crate__api__win32_api__create_desktop_shortcut_impl(
},
)
}
fn wire__crate__api__unp4k_api__dcb_close_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_close",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok = crate::api::unp4k_api::dcb_close().await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_export_to_disk_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
output_path: impl CstDecode<String>,
dcb_path: impl CstDecode<String>,
merge: impl CstDecode<bool>,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_export_to_disk",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let api_output_path = output_path.cst_decode();
let api_dcb_path = dcb_path.cst_decode();
let api_merge = merge.cst_decode();
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok = crate::api::unp4k_api::dcb_export_to_disk(
api_output_path,
api_dcb_path,
api_merge,
)
.await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_get_record_count_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::<flutter_rust_bridge::for_generated::DcoCodec, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_get_record_count",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
move |context| {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || {
let output_ok = crate::api::unp4k_api::dcb_get_record_count()?;
Ok(output_ok)
})(),
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_get_record_list_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_get_record_list",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok = crate::api::unp4k_api::dcb_get_record_list().await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_is_dataforge_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
data: impl CstDecode<Vec<u8>>,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::<flutter_rust_bridge::for_generated::DcoCodec, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_is_dataforge",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let api_data = data.cst_decode();
move |context| {
transform_result_dco::<_, _, ()>((move || {
let output_ok =
Result::<_, ()>::Ok(crate::api::unp4k_api::dcb_is_dataforge(api_data))?;
Ok(output_ok)
})())
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_open_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
data: impl CstDecode<Vec<u8>>,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_open",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let api_data = data.cst_decode();
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok = crate::api::unp4k_api::dcb_open(api_data).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_record_to_xml_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
path: impl CstDecode<String>,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_record_to_xml",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let api_path = path.cst_decode();
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok = crate::api::unp4k_api::dcb_record_to_xml(api_path).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_record_to_xml_by_index_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
index: impl CstDecode<usize>,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_record_to_xml_by_index",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let api_index = index.cst_decode();
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok =
crate::api::unp4k_api::dcb_record_to_xml_by_index(api_index).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__unp4k_api__dcb_search_all_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
query: impl CstDecode<String>,
max_results: impl CstDecode<usize>,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::DcoCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "dcb_search_all",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let api_query = query.cst_decode();
let api_max_results = max_results.cst_decode();
move |context| async move {
transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>(
(move || async move {
let output_ok =
crate::api::unp4k_api::dcb_search_all(api_query, api_max_results)
.await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__http_api__dns_lookup_ips_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
host: impl CstDecode<String>,
@ -2086,6 +2307,45 @@ impl SseDecode for bool {
}
}
impl SseDecode for crate::api::unp4k_api::DcbRecordItem {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut var_path = <String>::sse_decode(deserializer);
let mut var_index = <usize>::sse_decode(deserializer);
return crate::api::unp4k_api::DcbRecordItem {
path: var_path,
index: var_index,
};
}
}
impl SseDecode for crate::api::unp4k_api::DcbSearchMatch {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut var_lineNumber = <usize>::sse_decode(deserializer);
let mut var_lineContent = <String>::sse_decode(deserializer);
return crate::api::unp4k_api::DcbSearchMatch {
line_number: var_lineNumber,
line_content: var_lineContent,
};
}
}
impl SseDecode for crate::api::unp4k_api::DcbSearchResult {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut var_path = <String>::sse_decode(deserializer);
let mut var_index = <usize>::sse_decode(deserializer);
let mut var_matches =
<Vec<crate::api::unp4k_api::DcbSearchMatch>>::sse_decode(deserializer);
return crate::api::unp4k_api::DcbSearchResult {
path: var_path,
index: var_index,
matches: var_matches,
};
}
}
impl SseDecode for crate::api::downloader_api::DownloadGlobalStat {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@ -2181,6 +2441,48 @@ impl SseDecode for Vec<String> {
}
}
impl SseDecode for Vec<crate::api::unp4k_api::DcbRecordItem> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut len_ = <i32>::sse_decode(deserializer);
let mut ans_ = vec![];
for idx_ in 0..len_ {
ans_.push(<crate::api::unp4k_api::DcbRecordItem>::sse_decode(
deserializer,
));
}
return ans_;
}
}
impl SseDecode for Vec<crate::api::unp4k_api::DcbSearchMatch> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut len_ = <i32>::sse_decode(deserializer);
let mut ans_ = vec![];
for idx_ in 0..len_ {
ans_.push(<crate::api::unp4k_api::DcbSearchMatch>::sse_decode(
deserializer,
));
}
return ans_;
}
}
impl SseDecode for Vec<crate::api::unp4k_api::DcbSearchResult> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut len_ = <i32>::sse_decode(deserializer);
let mut ans_ = vec![];
for idx_ in 0..len_ {
ans_.push(<crate::api::unp4k_api::DcbSearchResult>::sse_decode(
deserializer,
));
}
return ans_;
}
}
impl SseDecode for Vec<crate::api::downloader_api::DownloadTaskInfo> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@ -2642,6 +2944,70 @@ fn pde_ffi_dispatcher_sync_impl(
// Section: rust2dart
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::unp4k_api::DcbRecordItem {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.path.into_into_dart().into_dart(),
self.index.into_into_dart().into_dart(),
]
.into_dart()
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::unp4k_api::DcbRecordItem
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::unp4k_api::DcbRecordItem>
for crate::api::unp4k_api::DcbRecordItem
{
fn into_into_dart(self) -> crate::api::unp4k_api::DcbRecordItem {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::unp4k_api::DcbSearchMatch {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.line_number.into_into_dart().into_dart(),
self.line_content.into_into_dart().into_dart(),
]
.into_dart()
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::unp4k_api::DcbSearchMatch
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::unp4k_api::DcbSearchMatch>
for crate::api::unp4k_api::DcbSearchMatch
{
fn into_into_dart(self) -> crate::api::unp4k_api::DcbSearchMatch {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::unp4k_api::DcbSearchResult {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.path.into_into_dart().into_dart(),
self.index.into_into_dart().into_dart(),
self.matches.into_into_dart().into_dart(),
]
.into_dart()
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::unp4k_api::DcbSearchResult
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::unp4k_api::DcbSearchResult>
for crate::api::unp4k_api::DcbSearchResult
{
fn into_into_dart(self) -> crate::api::unp4k_api::DcbSearchResult {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::downloader_api::DownloadGlobalStat {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
@ -3061,6 +3427,31 @@ impl SseEncode for bool {
}
}
impl SseEncode for crate::api::unp4k_api::DcbRecordItem {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<String>::sse_encode(self.path, serializer);
<usize>::sse_encode(self.index, serializer);
}
}
impl SseEncode for crate::api::unp4k_api::DcbSearchMatch {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<usize>::sse_encode(self.line_number, serializer);
<String>::sse_encode(self.line_content, serializer);
}
}
impl SseEncode for crate::api::unp4k_api::DcbSearchResult {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<String>::sse_encode(self.path, serializer);
<usize>::sse_encode(self.index, serializer);
<Vec<crate::api::unp4k_api::DcbSearchMatch>>::sse_encode(self.matches, serializer);
}
}
impl SseEncode for crate::api::downloader_api::DownloadGlobalStat {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
@ -3138,6 +3529,36 @@ impl SseEncode for Vec<String> {
}
}
impl SseEncode for Vec<crate::api::unp4k_api::DcbRecordItem> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(self.len() as _, serializer);
for item in self {
<crate::api::unp4k_api::DcbRecordItem>::sse_encode(item, serializer);
}
}
}
impl SseEncode for Vec<crate::api::unp4k_api::DcbSearchMatch> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(self.len() as _, serializer);
for item in self {
<crate::api::unp4k_api::DcbSearchMatch>::sse_encode(item, serializer);
}
}
}
impl SseEncode for Vec<crate::api::unp4k_api::DcbSearchResult> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(self.len() as _, serializer);
for item in self {
<crate::api::unp4k_api::DcbSearchResult>::sse_encode(item, serializer);
}
}
}
impl SseEncode for Vec<crate::api::downloader_api::DownloadTaskInfo> {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
@ -3595,6 +4016,34 @@ mod io {
CstDecode::<crate::api::webview_api::WebViewConfiguration>::cst_decode(*wrap).into()
}
}
impl CstDecode<crate::api::unp4k_api::DcbRecordItem> for wire_cst_dcb_record_item {
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> crate::api::unp4k_api::DcbRecordItem {
crate::api::unp4k_api::DcbRecordItem {
path: self.path.cst_decode(),
index: self.index.cst_decode(),
}
}
}
impl CstDecode<crate::api::unp4k_api::DcbSearchMatch> for wire_cst_dcb_search_match {
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> crate::api::unp4k_api::DcbSearchMatch {
crate::api::unp4k_api::DcbSearchMatch {
line_number: self.line_number.cst_decode(),
line_content: self.line_content.cst_decode(),
}
}
}
impl CstDecode<crate::api::unp4k_api::DcbSearchResult> for wire_cst_dcb_search_result {
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> crate::api::unp4k_api::DcbSearchResult {
crate::api::unp4k_api::DcbSearchResult {
path: self.path.cst_decode(),
index: self.index.cst_decode(),
matches: self.matches.cst_decode(),
}
}
}
impl CstDecode<crate::api::downloader_api::DownloadGlobalStat> for wire_cst_download_global_stat {
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> crate::api::downloader_api::DownloadGlobalStat {
@ -3634,6 +4083,38 @@ mod io {
vec.into_iter().map(CstDecode::cst_decode).collect()
}
}
impl CstDecode<Vec<crate::api::unp4k_api::DcbRecordItem>> for *mut wire_cst_list_dcb_record_item {
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> Vec<crate::api::unp4k_api::DcbRecordItem> {
let vec = unsafe {
let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self);
flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len)
};
vec.into_iter().map(CstDecode::cst_decode).collect()
}
}
impl CstDecode<Vec<crate::api::unp4k_api::DcbSearchMatch>> for *mut wire_cst_list_dcb_search_match {
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> Vec<crate::api::unp4k_api::DcbSearchMatch> {
let vec = unsafe {
let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self);
flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len)
};
vec.into_iter().map(CstDecode::cst_decode).collect()
}
}
impl CstDecode<Vec<crate::api::unp4k_api::DcbSearchResult>>
for *mut wire_cst_list_dcb_search_result
{
// Codec=Cst (C-struct based), see doc to use other codecs
fn cst_decode(self) -> Vec<crate::api::unp4k_api::DcbSearchResult> {
let vec = unsafe {
let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self);
flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len)
};
vec.into_iter().map(CstDecode::cst_decode).collect()
}
}
impl CstDecode<Vec<crate::api::downloader_api::DownloadTaskInfo>>
for *mut wire_cst_list_download_task_info
{
@ -3844,6 +4325,46 @@ mod io {
}
}
}
impl NewWithNullPtr for wire_cst_dcb_record_item {
fn new_with_null_ptr() -> Self {
Self {
path: core::ptr::null_mut(),
index: Default::default(),
}
}
}
impl Default for wire_cst_dcb_record_item {
fn default() -> Self {
Self::new_with_null_ptr()
}
}
impl NewWithNullPtr for wire_cst_dcb_search_match {
fn new_with_null_ptr() -> Self {
Self {
line_number: Default::default(),
line_content: core::ptr::null_mut(),
}
}
}
impl Default for wire_cst_dcb_search_match {
fn default() -> Self {
Self::new_with_null_ptr()
}
}
impl NewWithNullPtr for wire_cst_dcb_search_result {
fn new_with_null_ptr() -> Self {
Self {
path: core::ptr::null_mut(),
index: Default::default(),
matches: core::ptr::null_mut(),
}
}
}
impl Default for wire_cst_dcb_search_result {
fn default() -> Self {
Self::new_with_null_ptr()
}
}
impl NewWithNullPtr for wire_cst_download_global_stat {
fn new_with_null_ptr() -> Self {
Self {
@ -4063,6 +4584,76 @@ mod io {
wire__crate__api__win32_api__create_desktop_shortcut_impl(port_, target_path, shortcut_name)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_close(port_: i64) {
wire__crate__api__unp4k_api__dcb_close_impl(port_)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_export_to_disk(
port_: i64,
output_path: *mut wire_cst_list_prim_u_8_strict,
dcb_path: *mut wire_cst_list_prim_u_8_strict,
merge: bool,
) {
wire__crate__api__unp4k_api__dcb_export_to_disk_impl(port_, output_path, dcb_path, merge)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_get_record_count(
port_: i64,
) {
wire__crate__api__unp4k_api__dcb_get_record_count_impl(port_)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_get_record_list(
port_: i64,
) {
wire__crate__api__unp4k_api__dcb_get_record_list_impl(port_)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_is_dataforge(
port_: i64,
data: *mut wire_cst_list_prim_u_8_loose,
) {
wire__crate__api__unp4k_api__dcb_is_dataforge_impl(port_, data)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_open(
port_: i64,
data: *mut wire_cst_list_prim_u_8_loose,
) {
wire__crate__api__unp4k_api__dcb_open_impl(port_, data)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_record_to_xml(
port_: i64,
path: *mut wire_cst_list_prim_u_8_strict,
) {
wire__crate__api__unp4k_api__dcb_record_to_xml_impl(port_, path)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_record_to_xml_by_index(
port_: i64,
index: usize,
) {
wire__crate__api__unp4k_api__dcb_record_to_xml_by_index_impl(port_, index)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__unp4k_api__dcb_search_all(
port_: i64,
query: *mut wire_cst_list_prim_u_8_strict,
max_results: usize,
) {
wire__crate__api__unp4k_api__dcb_search_all_impl(port_, query, max_results)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_wire__crate__api__http_api__dns_lookup_ips(
port_: i64,
@ -4747,6 +5338,48 @@ mod io {
flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_cst_new_list_dcb_record_item(
len: i32,
) -> *mut wire_cst_list_dcb_record_item {
let wrap = wire_cst_list_dcb_record_item {
ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr(
<wire_cst_dcb_record_item>::new_with_null_ptr(),
len,
),
len,
};
flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_cst_new_list_dcb_search_match(
len: i32,
) -> *mut wire_cst_list_dcb_search_match {
let wrap = wire_cst_list_dcb_search_match {
ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr(
<wire_cst_dcb_search_match>::new_with_null_ptr(),
len,
),
len,
};
flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_cst_new_list_dcb_search_result(
len: i32,
) -> *mut wire_cst_list_dcb_search_result {
let wrap = wire_cst_list_dcb_search_result {
ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr(
<wire_cst_dcb_search_result>::new_with_null_ptr(),
len,
),
len,
};
flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap)
}
#[unsafe(no_mangle)]
pub extern "C" fn frbgen_starcitizen_doctor_cst_new_list_download_task_info(
len: i32,
@ -4839,6 +5472,25 @@ mod io {
flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap)
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_dcb_record_item {
path: *mut wire_cst_list_prim_u_8_strict,
index: usize,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_dcb_search_match {
line_number: usize,
line_content: *mut wire_cst_list_prim_u_8_strict,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_dcb_search_result {
path: *mut wire_cst_list_prim_u_8_strict,
index: usize,
matches: *mut wire_cst_list_dcb_search_match,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_download_global_stat {
@ -4870,6 +5522,24 @@ mod io {
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_list_dcb_record_item {
ptr: *mut wire_cst_dcb_record_item,
len: i32,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_list_dcb_search_match {
ptr: *mut wire_cst_dcb_search_match,
len: i32,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_list_dcb_search_result {
ptr: *mut wire_cst_dcb_search_result,
len: i32,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct wire_cst_list_download_task_info {
ptr: *mut wire_cst_download_task_info,
len: i32,