private void OnEnable()
 {
     if (_actorDatabase == null)
     {
         _actorDatabase       = LoadOrCreateActorDatabase();
         _actorDatabaseEditor = Editor.CreateEditor(_actorDatabase);
     }
 }
        private void openFileDialog_FileOk(object sender, CancelEventArgs e)
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(ActorDatabase));

            using (XmlReader reader = XmlReader.Create(openFileDialog.FileName))
            {
                db = (ActorDatabase)xmlSerializer.Deserialize(reader);
            };
            comboBox1.DataSource = db.Definition;
        }
        private ActorDatabase LoadOrCreateActorDatabase()
        {
            ActorDatabase actorDatabase = AssetDatabase.LoadAssetAtPath <ActorDatabase>(ACTOR_DATABASE_PATH);

            if (actorDatabase == null)
            {
                actorDatabase = ScriptableObject.CreateInstance <ActorDatabase>();
                AssetDatabase.CreateAsset(actorDatabase, ACTOR_DATABASE_PATH);
            }
            return(actorDatabase);
        }
    // Use this for initialization
    void Awake()
    {
        // This will make sure only one instance exists
        if (instance == null)
        {
            instance = this;
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }

        // if we change scenes, GameManager singleton won't get destroyed
        // changing scenes destroys the heirarchy for that scene
        DontDestroyOnLoad(gameObject);

        InitDB();
    }
        public byte[] ToElf()
        {
            if (actorDatabase != null) // No need to write if we haven't even accessed it
            {
                ActorDatabase.Write();
            }

            int starterFixedPokemonMapOffset = Version switch
            {
                ExecutableVersion.Original => starterFixedPokemonMapOffsetOriginal,
                ExecutableVersion.Update1 => starterFixedPokemonMapOffsetUpdate,
                _ => throw new InvalidOperationException("Unsupported executable version")
            };

            for (int i = 0; i < 16; i++)
            {
                var map    = StarterFixedPokemonMaps[i];
                var offset = starterFixedPokemonMapOffset + (8 * i);
                BitConverter.GetBytes((int)map.PokemonId).CopyTo(Data, offset);
                BitConverter.GetBytes((int)map.FixedPokemonId).CopyTo(Data, offset + 4);
            }
            return(Data);
        }