fluffychat/lib/pangea/constructs/construct_level_enum.dart
wcjord 0128ac42cd
Vocab-details-v2 (#2093)
* started activity in chat creation

* starting vocab tile display

* refactor(vocab_analytics_list): made into little tiles that show the user chosen emoji

* chore: comment out unused file

* chore: remove unused variable

* chore: make eventID nullable for constructs so users can set emoji from vocab details popup

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
2025-03-10 10:33:39 -04:00

96 lines
2.8 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 get color {
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 get darkColor {
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,
);
}