You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.0 KiB
Dart
105 lines
3.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:fluffychat/config/app_config.dart';
|
|
import 'package:fluffychat/pangea/analytics_misc/analytics_constants.dart';
|
|
import 'package:fluffychat/pangea/common/widgets/customized_svg.dart';
|
|
|
|
enum ConstructLevelEnum {
|
|
flowers,
|
|
greens,
|
|
seeds,
|
|
}
|
|
|
|
extension ConstructLevelEnumExt on ConstructLevelEnum {
|
|
Color color(BuildContext context) {
|
|
switch (this) {
|
|
case ConstructLevelEnum.flowers:
|
|
return Color.lerp(
|
|
AppConfig.primaryColor,
|
|
Colors.white,
|
|
0.6,
|
|
) ??
|
|
AppConfig.primaryColor;
|
|
case ConstructLevelEnum.greens:
|
|
return Color.lerp(AppConfig.success, Colors.white, 0.6) ??
|
|
AppConfig.success;
|
|
case ConstructLevelEnum.seeds:
|
|
return Color.lerp(AppConfig.gold, Colors.white, 0.6) ?? AppConfig.gold;
|
|
}
|
|
}
|
|
|
|
Color darkColor(BuildContext context) {
|
|
switch (this) {
|
|
case ConstructLevelEnum.flowers:
|
|
return Color.lerp(
|
|
AppConfig.primaryColor,
|
|
Colors.white,
|
|
0.3,
|
|
) ??
|
|
AppConfig.primaryColor;
|
|
case ConstructLevelEnum.greens:
|
|
return Color.lerp(AppConfig.success, Colors.black, 0.3) ??
|
|
AppConfig.success;
|
|
case ConstructLevelEnum.seeds:
|
|
return Color.lerp(AppConfig.gold, Colors.black, 0.3) ?? AppConfig.gold;
|
|
}
|
|
}
|
|
|
|
String get svgURL {
|
|
switch (this) {
|
|
case ConstructLevelEnum.seeds:
|
|
return "${AppConfig.assetsBaseURL}/${AnalyticsConstants.seedSvgFileName}";
|
|
case ConstructLevelEnum.greens:
|
|
return "${AppConfig.assetsBaseURL}/${AnalyticsConstants.leafSvgFileName}";
|
|
case ConstructLevelEnum.flowers:
|
|
return "${AppConfig.assetsBaseURL}/${AnalyticsConstants.flowerSvgFileName}";
|
|
}
|
|
}
|
|
|
|
String get emoji {
|
|
switch (this) {
|
|
case ConstructLevelEnum.flowers:
|
|
return AnalyticsConstants.emojiForFlower;
|
|
case ConstructLevelEnum.greens:
|
|
return AnalyticsConstants.emojiForGreen;
|
|
case ConstructLevelEnum.seeds:
|
|
return AnalyticsConstants.emojiForSeed;
|
|
}
|
|
}
|
|
|
|
String get xpString {
|
|
switch (this) {
|
|
case ConstructLevelEnum.flowers:
|
|
return ">${AnalyticsConstants.xpForFlower}";
|
|
case ConstructLevelEnum.greens:
|
|
return ">${AnalyticsConstants.xpForGreens}";
|
|
case ConstructLevelEnum.seeds:
|
|
return "<${AnalyticsConstants.xpForGreens}";
|
|
}
|
|
}
|
|
|
|
int get xpNeeded {
|
|
switch (this) {
|
|
case ConstructLevelEnum.flowers:
|
|
return AnalyticsConstants.xpForFlower;
|
|
case ConstructLevelEnum.greens:
|
|
return AnalyticsConstants.xpForGreens;
|
|
case ConstructLevelEnum.seeds:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
Widget icon([double? size]) => CustomizedSvg(
|
|
svgUrl: svgURL,
|
|
colorReplacements: const {},
|
|
errorIcon: Text(
|
|
emoji,
|
|
style: TextStyle(
|
|
fontSize: size ?? 24,
|
|
),
|
|
),
|
|
width: size,
|
|
height: size,
|
|
);
|
|
}
|