0

I'm trying to adapt a c++ to dart, and I ran into this situation with enum, assigning default values ​​I think. follow the code

enum skills_t : uint8_t {
    SKILL_FIST = 0,
    SKILL_CLUB = 1,
    SKILL_SWORD = 2,
    SKILL_AXE = 3,
    SKILL_DISTANCE = 4,
    SKILL_SHIELD = 5,
    SKILL_FISHING = 6,
    SKILL_CRITICAL_HIT_CHANCE = 7,
    SKILL_CRITICAL_HIT_DAMAGE = 8,
    SKILL_LIFE_LEECH_CHANCE = 9,
    SKILL_LIFE_LEECH_AMOUNT = 10,
    SKILL_MANA_LEECH_CHANCE = 11,
    SKILL_MANA_LEECH_AMOUNT = 12,

    SKILL_MAGLEVEL = 13,
    SKILL_LEVEL = 14,

    SKILL_FIRST = SKILL_FIST,
    SKILL_LAST = SKILL_MANA_LEECH_AMOUNT
};

}
uint32_t skillBase[SKILL_LAST + 1] = {50, 50, 50, 50, 30, 100, 20};

Is it possible to adapt this code to dart/flutter? I would like to replicate the same operation in dart, it seems that he assigned these values ​​to each enum in a range

1 Answers1

0

Yes, it is possible to adapt this code to Dart/Flutter.

In Dart, you can use the enum keyword to define an enumeration. The syntax is similar to C++, but there is no need to specify a type like uint8_t.

Regarding the default values, you can initialize the enum members with a value like in C++.

Here is an example of how the C++ code could be adapted to Dart:

enum Skills {
  FIST,
  CLUB,
  SWORD,
  AXE,
  DISTANCE,
  SHIELD,
  FISHING,
  CRITICAL_HIT_CHANCE,
  CRITICAL_HIT_DAMAGE,
  LIFE_LEECH_CHANCE,
  LIFE_LEECH_AMOUNT,
  MANA_LEECH_CHANCE,
  MANA_LEECH_AMOUNT,
  MAGLEVEL,
  LEVEL,
  FIRST = FIST,
  LAST = MANA_LEECH_AMOUNT,
}

final List<int> skillBase = [
  50, 50, 50, 50, 30, 100, 20
];

You can also use a Map to assign the default values to each enum member.

enum Skills {
  FIST,
  CLUB,
  SWORD,
  AXE,
  DISTANCE,
  SHIELD,
  FISHING,
  CRITICAL_HIT_CHANCE,
  CRITICAL_HIT_DAMAGE,
  LIFE_LEECH_CHANCE,
  LIFE_LEECH_AMOUNT,
  MANA_LEECH_CHANCE,
  MANA_LEECH_AMOUNT,
  MAGLEVEL,
  LEVEL,
  FIRST = FIST,
  LAST = MANA_LEECH_AMOUNT,
}

final Map<Skills, int> skillBase = {
  Skills.FIST: 50,
  Skills.CLUB: 50,
  Skills.SWORD: 50,
  Skills.AXE: 50,
  Skills.DISTANCE: 30,
  Skills.SHIELD: 100,
  Skills.FISHING: 20,
  // Add the rest of the skills
};

Both the above examples will work fine in dart/flutter.