Exemplo n.º 1
0
        public ActionResult Delete(TrainerClass t)
        {
            TrainerList tList = new TrainerList();

            tList.DeleteTrainer(t);
            return(RedirectToAction("Index"));
        }
        public TrainerClassEditorWindow(TrainerClass initialClass)
        {
            InitializeComponent();
            ViewModel.CurrentClass = initialClass;
            className.MaxLength    = Project.Instance.Trainers.MaxClassNameLen;

            classList.Items.SortDescriptions.Add(new SortDescription("Identifier", ListSortDirection.Ascending));
            classList.Items.IsLiveSorting = true;
        }
Exemplo n.º 3
0
 public ActionResult Create(TrainerClass t)
 {
     if (ModelState.IsValid)
     {
         TrainerList tList = new TrainerList();
         tList.AddTrainer(t);
         return(RedirectToAction("Index"));
     }
     return(View());
 }
Exemplo n.º 4
0
    /* Data CSV Columns:
     * npc id (int)
     * gym id (int, if applicable otherwise blank for null)
     * name (string)
     * challenge message (string)
     * chat message (string)
     * defeat messages (strings separated by ';')
     * battle background resource name (string)
     * class (string for trainer's trainer class)
     * mode (string for trainer's npc battle participant mode)
     * (for gym leaders) healing item id (int or blank)
     * (for gym leaders) max times healed (int or blank)
     * [for each of 6 pokemon:]
     *     pmon i's species id (int)
     *     pmon i's gender (m/f/{blank})
     *     pmon i's level (int)
     *     pmon i's evs (6 ints separated by ';')
     *     pmon i's ivs (6 ints separated by ';')
     *     pmon i's move ids (4 ints separated by ';' or blank if should use defaults)
     */

    public static void LoadData()
    {
        List <TrainerDetails> details = new List <TrainerDetails>();

        string[][] data = CSV.ReadCSVResource(dataPath, ignoreDataFirstLine);

        foreach (string[] entry in data)
        {
            int                       id, leaderHealingItemId, leaderMaxTimesHealed;
            int?                      gymId;
            string                    name, challengeMessage, chatMessage, battleBackgroundResourceName;
            string[]                  defeatMessages;
            TrainerClass.Class        trainerClass;
            BattleParticipantNPC.Mode mode;
            List <PokemonInstance.BasicSpecification> pmonList;

            if (entry.Length < 47)
            {
                Debug.LogWarning("Invalid trainers details to load - " + entry);
                continue;
            }

            // Id
            if (!int.TryParse(entry[0], out id))
            {
                Debug.LogWarning("Invalid id for trainer details - " + entry[0]);
                continue;
            }

            // Gym id
            if (entry[1] == "")
            {
                gymId = null;
            }
            else
            {
                if (int.TryParse(entry[1], out int gymIdParsed))
                {
                    gymId = gymIdParsed;
                }
                else
                {
                    Debug.LogWarning("Invalid gym id for trainer details id - " + id);
                    continue;
                }
            }

            // Name
            name = entry[2];

            // Challenge message
            challengeMessage = entry[3];

            // Chat message
            chatMessage = entry[4];

            // Defeat messages
            string defeatMessagesEntry = entry[5];
            if (defeatMessagesEntry == "")
            {
                defeatMessages = new string[0];
            }
            else
            {
                defeatMessages = defeatMessagesEntry.Split(';');
            }

            // Battle background resource
            string battleBackgroundResourceNameEntry = entry[6];

            if (battleBackgroundResourceNameEntry == "")
            {
                battleBackgroundResourceName = BattleEntranceArguments.defaultBackgroundName;
            }
            else
            {
                battleBackgroundResourceName = battleBackgroundResourceNameEntry;
            }

            // Trainer class
            if (!TrainerClass.TryParse(entry[7], out trainerClass))
            {
                Debug.LogWarning("Invalid trainer class for trainer details id - " + id);
                continue;
            }

            // Mode

            string modeEntry = entry[8];
            if (modeEntry == "")
            {
                if (gymId == null)
                {
                    mode = BattleParticipantNPC.defaultTrainerMode;
                }
                else
                {
                    mode = BattleParticipantNPC.defaultGymLeaderMode;
                }
            }
            else if (!BattleParticipantNPC.TryParse(modeEntry, out mode))
            {
                Debug.LogWarning("Invalid trainer class for trainer details id - " + id);
                continue;
            }

            // Gym leader healing settings

            string leaderHealingItemIdEntry = entry[9];
            if (leaderHealingItemIdEntry == "")
            {
                leaderHealingItemId = Battle.NPCBattleParticipantModes.GymLeader.defaultHealingItemId;
            }
            else
            {
                if (!int.TryParse(leaderHealingItemIdEntry, out leaderHealingItemId))
                {
                    Debug.LogError("Invalid leader healing item id for trainer id - " + id);
                    leaderHealingItemId = Battle.NPCBattleParticipantModes.GymLeader.defaultHealingItemId;
                }
                else
                {
                    Items.Item item = Items.Item.GetItemById(leaderHealingItemId);
                    if (item == null || !(item is Items.MedicineItems.HealthMedicineItem))
                    {
                        Debug.LogError("Inappropriate leader healing item id for trainer id - " + id);
                        leaderHealingItemId = Battle.NPCBattleParticipantModes.GymLeader.defaultHealingItemId;
                    }
                }
            }

            string leaderMaxTimesHealedEntry = entry[10];
            if (leaderMaxTimesHealedEntry == "")
            {
                leaderMaxTimesHealed = Battle.NPCBattleParticipantModes.GymLeader.defaultMaxTimesHealed;
            }
            else if (!int.TryParse(leaderMaxTimesHealedEntry, out leaderMaxTimesHealed))
            {
                Debug.LogError("Invalid leader max times healed entry for trainer id - " + id);
            }

            // Pokemon
            pmonList = new List <PokemonInstance.BasicSpecification>();
            bool invalidPokemonFound = false;
            for (int pmonIndex = 0; pmonIndex < PlayerData.partyCapacity; pmonIndex++)
            {
                const int pmonEntryCount = 6;
                int       indexOffset    = 11 + (pmonIndex * pmonEntryCount);

                int          speciesId;
                bool?        gender;
                byte         level;
                Stats <byte> evs, ivs;
                int[]        moveIds;
                bool         useDefaultMoves;

                // Species id

                string idEntry = entry[indexOffset];

                if (idEntry == "") // Pokemon not set
                {
                    continue;
                }
                else if (!int.TryParse(idEntry, out speciesId))
                {
                    Debug.LogWarning("Invalid species id for pokemon for trainer details id  - " + id);
                    invalidPokemonFound = true;
                    break;
                }

                // Gender
                switch (entry[indexOffset + 1].ToLower())
                {
                case "m":
                    gender = true;
                    break;

                case "f":
                    gender = false;
                    break;

                case "":
                case "n":
                    gender = null;
                    break;

                default:
                    Debug.LogWarning("Invalid gender for pokemon for trainer details id - " + id);
                    invalidPokemonFound = true;
                    gender = default;
                    break;
                }

                if (invalidPokemonFound)
                {
                    break;
                }

                // Level
                if (!byte.TryParse(entry[indexOffset + 2], out level))
                {
                    Debug.LogWarning("Invalid level for pokemon for trainer details id  - " + id);
                    invalidPokemonFound = true;
                    break;
                }

                // EVs
                byte     evAtk, evDef, evSpatk, evSpdef, evHp, evSpd;
                string[] evParts = entry[indexOffset + 3].Split(';');

                try
                {
                    evAtk   = byte.Parse(evParts[0]);
                    evDef   = byte.Parse(evParts[1]);
                    evSpatk = byte.Parse(evParts[2]);
                    evSpdef = byte.Parse(evParts[3]);
                    evHp    = byte.Parse(evParts[4]);
                    evSpd   = byte.Parse(evParts[5]);
                }
                catch (FormatException)
                {
                    Debug.LogWarning("Invalid evs entry for pokemon for trainer details id - " + id);
                    invalidPokemonFound = true;
                    break;
                }

                evs = new Stats <byte>()
                {
                    attack         = evAtk,
                    defense        = evDef,
                    specialAttack  = evSpatk,
                    specialDefense = evSpdef,
                    health         = evHp,
                    speed          = evSpd
                };

                // IVs
                byte     ivAtk, ivDef, ivSpatk, ivSpdef, ivHp, ivSpd;
                string[] ivParts = entry[indexOffset + 4].Split(';');

                try
                {
                    ivAtk   = byte.Parse(ivParts[0]);
                    ivDef   = byte.Parse(ivParts[1]);
                    ivSpatk = byte.Parse(ivParts[2]);
                    ivSpdef = byte.Parse(ivParts[3]);
                    ivHp    = byte.Parse(ivParts[4]);
                    ivSpd   = byte.Parse(ivParts[5]);
                }
                catch (FormatException)
                {
                    Debug.LogWarning("Invalid ivs entry for pokemon for trainer details id - " + id);
                    invalidPokemonFound = true;
                    break;
                }

                ivs = new Stats <byte>()
                {
                    attack         = ivAtk,
                    defense        = ivDef,
                    specialAttack  = ivSpatk,
                    specialDefense = ivSpdef,
                    health         = ivHp,
                    speed          = ivSpd
                };

                // Move ids

                string movesEntry = entry[indexOffset + 5];

                if (movesEntry == "")
                {
                    useDefaultMoves = true;
                    moveIds         = default;
                }
                else
                {
                    useDefaultMoves = false;
                    moveIds         = new int[4] {
                        -1, -1, -1, -1
                    };

                    int movesIdsIndex = 0;

                    foreach (string s in movesEntry.Split(';'))
                    {
                        if (int.TryParse(s, out int moveId))
                        {
                            moveIds[movesIdsIndex++] = moveId;
                        }
                        else
                        {
                            Debug.LogWarning("Invalid move id for pokemon for trainer details id - " + id);
                            invalidPokemonFound = true;
                            break;
                        }
                    }

                    if (invalidPokemonFound)
                    {
                        break;
                    }
                }

                // Add to list

                PokemonInstance.BasicSpecification pokemon = new PokemonInstance.BasicSpecification()
                {
                    speciesId         = speciesId,
                    gender            = PokemonInstance.BasicSpecification.GetGenderEnumVal(gender),
                    useAutomaticMoves = useDefaultMoves,
                    moveIds           = moveIds,
                    level             = level,
                    EVs = evs,
                    IVs = ivs
                };

                pmonList.Add(pokemon);
            }

            if (invalidPokemonFound)
            {
                continue;
            }

            // Add entry
            TrainerDetails trainer = new TrainerDetails()
            {
                id                           = id,
                gymId                        = gymId,
                name                         = name,
                challengeMessage             = challengeMessage,
                chatMessage                  = chatMessage,
                defeatMessages               = defeatMessages,
                battleBackgroundResourceName = battleBackgroundResourceName,
                trainerClass                 = trainerClass,
                mode                         = mode,
                leaderHealingItemId          = leaderHealingItemId,
                leaderMaxTimesHealed         = leaderMaxTimesHealed,
                pokemonSpecifications        = pmonList.ToArray()
            };

            details.Add(trainer);
        }

        registry.SetValues(details.ToArray());
    }
Exemplo n.º 5
0
 public Trainer(Guid id, string name, TrainerClass trainerClass)
 {
     Id           = id;
     Name         = name;
     TrainerClass = trainerClass;
 }
Exemplo n.º 6
0
 public Trainer(string name, TrainerClass trainerClass)
 {
     Name         = name;
     TrainerClass = trainerClass;
 }