Пример #1
0
        public ObjectDatabaseForFileResult GetObjectDatabase(XmlFileInfo file)
        {
            if (file == null)
            {
                return(ObjectDatabaseForFileResult.Null);
            }

            var status = GetFileLoadStatus(file);

            if (status < XmlFileLoadState.Preloaded)
            {
                throw new InvalidOperationException(string.Format(
                                                        "GetObjectDatabase called on {0} when its load status was {1}",
                                                        file, status));
            }

            var kvp = GetObjectDatabaseForFile(file);

            if (kvp.Key == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        "GetObjectDatabase called on {0} which didn't resolve to a DB"));
            }

            return(new ObjectDatabaseForFileResult(file, kvp.Key, kvp.Value));
        }
Пример #2
0
 public ProtoDataXmlFileInfo(XmlFilePriority priority
                             , XmlFileInfo fileInfo
                             , XmlFileInfo fileInfoWithUpdates = null)
 {
     Priority            = priority;
     FileInfo            = fileInfo;
     FileInfoWithUpdates = fileInfoWithUpdates;
 }
Пример #3
0
        public XmlFileLoadState GetFileLoadStatus(XmlFileInfo file)
        {
            Contract.Requires(file != null);

            XmlFileLoadState state;

            lock (XmlFileLoadStatus)
                if (!XmlFileLoadStatus.TryGetValue(file, out state))
                {
                    return(XmlFileLoadState.NotLoaded);
                }

            return(state);
        }
Пример #4
0
        internal void UpdateFileLoadStatus(XmlFileInfo file, XmlFileLoadState state)
        {
            Contract.Requires(file != null);

            lock (XmlFileLoadStatus)
                XmlFileLoadStatus[file] = state;

            var handler = XmlFileLoadStateChanged;

            if (handler != null)
            {
                var args = new XmlFileLoadStateChangedArgs(file, state);
                handler(this, args);
            }
        }
Пример #5
0
 public ObjectDatabaseForFileResult(XmlFileInfo file, Phx.ProtoDataObjectDatabase db, int objectKind)
 {
     File               = file;
     Database           = db;
     SpecificObjectKind = objectKind;
 }
Пример #6
0
        protected virtual KeyValuePair <Phx.ProtoDataObjectDatabase, int> GetObjectDatabaseForFile(XmlFileInfo file)
        {
            Phx.ProtoDataObjectDatabase db = null;
            int specificObjectKind         = TypeExtensions.kNone;

            if (file == Phx.BGameData.kXmlFileInfo)
            {
                db = Database.GameData.ObjectDatabase;
                specificObjectKind = PhxUtil.kObjectKindNone;
            }
            else if (file == Phx.HPBarData.kXmlFileInfo)
            {
                db = Database.HPBars.ObjectDatabase;
                specificObjectKind = PhxUtil.kObjectKindNone;
            }
            else if (file == Phx.BAbility.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Ability;
            }
            else if (file == Phx.BCiv.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Civ;
            }
            else if (file == Phx.BDamageType.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.DamageType;
            }
            else if (file == Phx.BProtoImpactEffect.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.ImpactEffect;
            }
            else if (file == Phx.BLeader.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Leader;
            }
            else if (
                file == Phx.BProtoObject.kXmlFileInfo ||
                file == Phx.BProtoObject.kXmlFileInfoUpdate)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Object;
            }
            else if (file == Phx.BDatabaseBase.kObjectTypesXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.ObjectType;
            }
            else if (file == Phx.BProtoPower.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Power;
            }
            else if (
                file == Phx.BProtoSquad.kXmlFileInfo ||
                file == Phx.BProtoSquad.kXmlFileInfoUpdate)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Squad;
            }
            else if (file.Directory == GameDirectory.Tactics)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Tactic;
            }
            else if (
                file == Phx.BProtoTech.kXmlFileInfo ||
                file == Phx.BProtoTech.kXmlFileInfoUpdate)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.Tech;
            }
            else if (file == Phx.TerrainTileType.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.TerrainTileType;
            }
            else if (file == Phx.BUserClass.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.UserClass;
            }
            else if (file == Phx.BWeaponType.kXmlFileInfo)
            {
                db = Database.ObjectDatabase;
                specificObjectKind = (int)Phx.DatabaseObjectKind.WeaponType;
            }
            else if (
                file.Directory == GameDirectory.AbilityScripts ||
                file.Directory == GameDirectory.PowerScripts ||
                file.Directory == GameDirectory.TriggerScripts)
            {
                throw new NotImplementedException(file.ToString());
            }

            return(new KeyValuePair <Phx.ProtoDataObjectDatabase, int>(db, specificObjectKind));
        }
Пример #7
0
 public XmlFileLoadStateChangedArgs(XmlFileInfo xmlFile, XmlFileLoadState newState)
 {
     XmlFile  = xmlFile;
     NewState = newState;
 }