示例#1
0
        /// <summary>
        /// 派閥一覧を初期化する
        /// </summary>
        private void InitModuleOwners()
        {
            var items = new List <FactionsListItem>();

            void init(SQLiteDataReader dr, object[] args)
            {
                bool isChecked = 0 < SettingDatabase.Instance.ExecQuery($"SELECT * FROM SelectModuleCheckStateModuleOwners WHERE ID = '{dr["FactionID"]}'", (_, __) => { });

                var faction = Faction.Get((string)dr["FactionID"]);

                if (faction != null)
                {
                    items.Add(new FactionsListItem(faction, isChecked));
                }
            }

            X4Database.Instance.ExecQuery(@"
SELECT
    FactionID,
    Name
FROM
    Faction
WHERE
    FactionID IN (SELECT FactionID FROM ModuleOwner)
ORDER BY Name ASC", init, "SelectModuleCheckStateTypes");

            ModuleOwners.AddRange(items);
        }
示例#2
0
        /// <summary>
        /// チェック状態を保存する
        /// </summary>
        public void SaveCheckState() => SettingDatabase.Instance.BeginTransaction(db =>
        {
            // 前回値クリア
            db.Execute("DELETE FROM SelectModuleCheckStateModuleTypes");
            db.Execute("DELETE FROM SelectModuleCheckStateModuleOwners");

            // モジュール種別のチェック状態保存
            var checkedTypes = ModuleTypes.Where(x => x.IsChecked);
            db.Execute("INSERT INTO SelectModuleCheckStateModuleTypes(ID) VALUES (:ID)", checkedTypes);

            // 派閥一覧のチェック状態保存
            var checkedFactions = ModuleOwners.Where(x => x.IsChecked).Select(x => x.Faction);
            db.Execute("INSERT INTO SelectModuleCheckStateModuleOwners(ID) VALUES (:FactionID)", checkedFactions);
        });
示例#3
0
        /// <summary>
        /// モジュール一覧を更新する
        /// </summary>
        private void UpdateModulesMain()
        {
            var query = $@"
SELECT
    DISTINCT Module.ModuleID,
	Module.Name
FROM
    Module,
	ModuleOwner
WHERE
	Module.ModuleID = ModuleOwner.ModuleID AND
    Module.NoBlueprint = 0 AND
    Module.ModuleTypeID   IN ({string.Join(", ", ModuleTypes.Where(x => x.IsChecked).Select(x => $"'{x.ID}'"))}) AND
	ModuleOwner.FactionID IN ({string.Join(", ", ModuleOwners.Where(x => x.IsChecked).Select(x => $"'{x.Faction.FactionID}'"))})"    ;

            var list = new List <ModulesListItem>();

            X4Database.Instance.ExecQuery(query, SetModules, list);
            Modules.Reset(list);
        }