コード例 #1
0
    MissionObjectData MODLabel(MissionObjectData mod)
    {
        MissionObjectData res = mod;

        EditorGUILayout.BeginHorizontal();
        int id = 0;

        if (int.TryParse(GUILayout.TextField(mod.ID.ToString(), GUILayout.Width(30)), out id))
        {
            res.ID = id;
        }
        EditorGUILayout.Space();
        Vector3 pos;

        res.Position = EditorGUILayout.Vector3Field("", mod.Position, GUILayout.Width(200));
        EditorGUILayout.Space();
        res.Name = EditorGUILayout.TextField(mod.Name, GUILayout.Width(100));
        EditorGUILayout.Space();
        MissionObject mo2 = DataStorageController.GetMissionObjectByID(mod.ID);

        if (mo2 != null)
        {
            EditorGUILayout.ObjectField(mo2.gameObject, typeof(GameObject), true, GUILayout.Width(100));
        }
        else
        {
            EditorGUILayout.LabelField("None", GUILayout.Width(100));
        }
        EditorGUILayout.EndHorizontal();
        return(res);
    }
コード例 #2
0
ファイル: DbContext.cs プロジェクト: vebin/IQMap
        public int QueryScalar(string query, params object[] parameters)
        {
            var raw = new SqlQueryDef(query, parameters);

            return(DataStorageController.RunQueryScalar(Connection,
                                                        raw,
                                                        Transaction,
                                                        CommandBehavior));
        }
コード例 #3
0
        public void SetUp()
        {
            _appSettings         = new TestApplicationSettings();
            _dataPointRepository = new SqliteImportedDataPointRepository(_appSettings);

            var aggregateDataFileLocation = Path.Combine(_appSettings.SqliteStorageFolderLocation, _appSettings.AggregateSqliteFileName);

            File.Create(aggregateDataFileLocation);

            var sqliteOption = new DbContextOptionsBuilder <AggregateDataContext>()
                               .UseSqlite(AggregateDataContext.GetSqliteString(aggregateDataFileLocation))
                               .Options;
            var context = new AggregateDataContext(sqliteOption);

            _aggregateDataRepository = new AggregateDataRepository(context, _dataPointRepository);

            _dataStorageController = new DataStorageController(_appSettings, _aggregateDataRepository, new EmailServiceLayer(new EmailConfiguration(), new EmailService(new EmailConfiguration())));
        }
コード例 #4
0
 public IDbConnection GetConnection()
 {
     return(DataStorageController.GetConnection(DefaultConnectionString));
 }
コード例 #5
0
ファイル: DbContext.cs プロジェクト: vebin/IQMap
        /// <summary>
        /// options may include: an IDbConnection, an IDbTransaction, CommandBehavior. Save queries should not
        /// include any other parameters
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public bool Save(object obj, IQueryOptions options = null)
        {
            // TODO: This method is way too long. Break it down

            IClassInfo classInfo = GetClassInfo(obj);

            if (!classInfo.DoEvent(obj, IQEventType.BeforeSave, this))
            {
                return(false);
            }

            // Determine if the object is tracked for changes. If not, we will just save everything.

            IObjectData dbData;
            bool        tracked = IQ.MapperCache.TryGetObjectData(obj, out dbData);

            // Determine if the object is a new record based on the primary key value

            bool isNew = ClassInfo.IsNew(obj);

            QueryType queryType = isNew ?
                                  QueryType.Insert :
                                  QueryType.Update;

            ISqlQueryMaker query = classInfo.GetQuery(queryType, options);

            bool isDirty = false;

            string pk = classInfo.Query.PrimaryKey;

            foreach (var item in classInfo.Fields)
            {
                string name = item.Name;
                if (!item.IsPrimaryKey && !item.IsSqlReadOnly &&
                    (isNew || !tracked || dbData.IsDirty(name)))
                {
                    query.AddUpdateData(classInfo[name].SqlName, classInfo[name].GetValue(obj));
                    isDirty = true;
                }
            }

            bool success = false;

            if (isDirty)
            {
                if (queryType == QueryType.Insert)
                {
                    if (!classInfo.DoEvent(obj, IQEventType.BeforeInsert, this))
                    {
                        return(false);
                    }

                    int newPK = DataStorageController.RunQueryInsert(Connection, query,
                                                                     Transaction, CommandBehavior);

                    if (newPK <= 0)
                    {
                        throw new InvalidOperationException("The record could not be inserted.");
                    }

                    classInfo[pk].SetValue(obj, newPK);
                    if (!classInfo.DoEvent(obj, IQEventType.OnInsert, this))
                    {
                        throw new InvalidOperationException("The operation was cancelled after the database query was executed.");
                    }

                    success = true;
                }
                else
                {
                    if (!classInfo.DoEvent(obj, IQEventType.BeforeUpdate, this))
                    {
                        return(false);
                    }

                    query.Where.Add(classInfo.PrimaryKeyField.Name,
                                    classInfo.PrimaryKeyField.GetValue(obj));

                    success = DataStorageController.RunQueryScalar(Connection, query,
                                                                   Transaction, CommandBehavior) > 0;

                    if (!classInfo.DoEvent(obj, IQEventType.OnUpdate, this))
                    {
                        throw new InvalidOperationException("The operation was cancelled after the database query was executed.");
                    }
                }
            }
            else
            {
                success = false;
            }

            if (!classInfo.DoEvent(obj, IQEventType.OnSave, this))
            {
                throw new InvalidOperationException("The operation was cancelled after the database query was executed.");
            }

            if (success && tracked)
            {
                dbData.Clean();
            }

            return(success);
        }
コード例 #6
0
    void OnGUI()
    {
        // DataStorage
        EditorGUILayout.Separator();
        EditorGUILayout.BeginVertical(GUILayout.Width(this.position.width));
        _scrollPos1 = EditorGUILayout.BeginScrollView(_scrollPos1);

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("MissionObjects", GUILayout.Width(100));
        if (GUILayout.Button("Collect data", GUILayout.Width(100)))
        {
            if (EditorUtility.DisplayDialog("Confirm...", "Are you sure, baby? This will rewrite all data...", "Yep", "Nope"))
            {
                DataStorageController.Instance.GetData();
            }
        }
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.BeginHorizontal();
        _showIslands = EditorGUILayout.ToggleLeft("Islands", _showIslands, GUILayout.Width(200));
        _showBases   = EditorGUILayout.ToggleLeft("Bases", _showBases, GUILayout.Width(200));
        _showRunways = EditorGUILayout.ToggleLeft("Runways", _showRunways, GUILayout.Width(200));
        EditorGUILayout.EndHorizontal();

        if (_showIslands)
        {
            DataStorageController.Instance.MissionIslandsID =
                MODBlock("Islands", DataStorageController.Instance.MissionIslandsID);
        }

        if (_showBases)
        {
            DataStorageController.Instance.MissionBasesID =
                MODBlock("Bases", DataStorageController.Instance.MissionBasesID);
        }

        if (_showRunways)
        {
            DataStorageController.Instance.MissionRunwaysID =
                MODBlock("Runways", DataStorageController.Instance.MissionRunwaysID);
        }

        EditorGUILayout.Separator();

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("Missions - Count [" + TransportGOController.Instance.Missions.Length + "]", GUILayout.Width(100));
        if (GUILayout.Button("Set defs.", GUILayout.Width(100)))
        {
            for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++)
            {
                TransportGOController.Instance.Missions[i].Targets      = new MissionObjectData[5];
                TransportGOController.Instance.Missions[i].MissionTitle = "Mission " + (i + 1).ToString() + " title";
                TransportGOController.Instance.Missions[i].MissionText  = "Mission " + (i + 1).ToString() + " text";
                TransportGOController.Instance.Missions[i].Blocked      = i != 0;
                for (int j = 0; j < 5; j++)
                {
                    TransportGOController.Instance.Missions[i].Targets[j] = new MissionObjectData();
                }
            }
        }
        if (GUILayout.Button("Upd. Dist/Pay", GUILayout.Width(100)))
        {
            for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++)
            {
                MissionInfo       info = TransportGOController.Instance.Missions[i];
                Vector3           rpos = DataStorageController.Instance.MissionRunwaysID[0].Position;
                MissionObjectData obj  = info.Targets[0];
                float             dist = 0;
                if (obj != null && obj.ID != -1)
                {
                    dist = Vector3.Distance(rpos, DataStorageController.GetMissionObjectByID(obj.ID).transform.position);
                }
                for (int j = 0; j < 4; j++)
                {
                    MissionObject mo  = DataStorageController.GetMissionObjectByID(info.Targets[j].ID);
                    MissionObject mo2 = DataStorageController.GetMissionObjectByID(info.Targets[j + 1].ID);
                    if (mo != null && mo2 != null)
                    {
                        dist += Vector3.Distance(mo.transform.position, mo2.transform.position);
                    }
                    else
                    {
                        if (mo != null)
                        {
                            dist += Vector3.Distance(mo.transform.position, rpos);
                        }
                        break;
                    }
                }
                info.Distance = (int)dist;
                info.Payment  = (int)(dist / 25);
            }
        }
        if (GUILayout.Button("Set rand targets", GUILayout.Width(100)))
        {
            for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++)
            {
                TransportGOController.Instance.Missions[i].Targets[0] = GetRandTarget();
                if (i > 7)
                {
                    TransportGOController.Instance.Missions[i].Targets[1] = GetRandTarget();
                }
                if (i > 12)
                {
                    TransportGOController.Instance.Missions[i].Targets[2] = GetRandTarget();
                }
                if (i > 15)
                {
                    TransportGOController.Instance.Missions[i].Targets[3] = GetRandTarget();
                }
            }
        }

        EditorGUILayout.EndHorizontal();
        _showMissionsData = EditorGUILayout.ToggleLeft("Show Missions", _showMissionsData, GUILayout.Width(200));

        if (_showMissionsData)
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Num", GUILayout.Width(30));
            GUILayout.Label("Mission Title", GUILayout.Width(300));
            GUILayout.Label("Mission Text", GUILayout.Width(300));
            GUILayout.Label("Distance", GUILayout.Width(80));
            GUILayout.Label("Playment", GUILayout.Width(80));
            GUILayout.Label("Blocked", GUILayout.Width(50));
            EditorGUILayout.EndHorizontal();

            for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++)
            {
                EditorGUILayout.BeginHorizontal();
                MissionInfo info = TransportGOController.Instance.Missions[i];
                EditorGUILayout.LabelField((i + 1).ToString(), GUILayout.Width(30));
                info.MissionTitle = EditorGUILayout.TextField(info.MissionTitle, GUILayout.Width(300));
                info.MissionText  = EditorGUILayout.TextField(info.MissionText, GUILayout.Width(300));
                info.Distance     = EditorGUILayout.IntField(info.Distance, GUILayout.Width(80));
                info.Payment      = EditorGUILayout.IntField(info.Payment, GUILayout.Width(80));
                info.Blocked      = EditorGUILayout.Toggle(info.Blocked, GUILayout.Width(50));
                EditorGUILayout.EndHorizontal();

                if (info.Targets.Length == 5)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Target " + (j + 1).ToString(), GUILayout.Width(80));
                        info.Targets[j].Objective = EditorGUILayout.TextField(info.Targets[j].Objective, GUILayout.Width(300));
                        MissionObject mo = DataStorageController.GetMissionObjectByID(info.Targets[j].ID);
                        if (mo)
                        {
                            mo = EditorGUILayout.ObjectField(mo, typeof(MissionObject), true, GUILayout.Width(200)) as MissionObject;
                        }
                        else
                        {
                            mo = EditorGUILayout.ObjectField(null, typeof(MissionObject), true, GUILayout.Width(200)) as MissionObject;
                        }
                        if (mo != null)
                        {
                            info.Targets[j].ID = mo.ID;
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }
        }

        EditorGUILayout.EndScrollView();

        EditorGUILayout.EndVertical();
    }