SubscribeOnce() public static method

public static SubscribeOnce ( string api, Action action ) : void
api string
action Action
return void
Esempio n. 1
0
        public void Initialize()
        {
            FuckTanaka();

            ApiService.SubscribeOnce("api_get_member/require_info", delegate
            {
                using (var rConnection = new SQLiteConnection(@"Data Source=Data\AbyssalFleets.db; Page Size=8192").OpenAndReturn())
                    using (var rCommand = rConnection.CreateCommand())
                    {
                        rCommand.CommandText =
                            "CREATE TABLE IF NOT EXISTS composition(" +
                            "id INTEGER NOT NULL, " +
                            "position INTEGER NOT NULL, " +
                            "ship INTEGER NOT NULL, " +
                            "PRIMARY KEY(id, position)) WITHOUT ROWID;" +

                            "CREATE TABLE IF NOT EXISTS fleet(" +
                            "map INTEGER NOT NULL, " +
                            "node INTEGER NOT NULL, " +
                            "difficulty INTEGER NOT NULL, " +
                            "formation INTEGER NOT NULL, " +
                            "composition INTEGER NOT NULL REFERENCES composition(id), " +
                            "synced INTEGER NOT NULL, " +
                            "PRIMARY KEY(map, node, difficulty, formation, composition)) WITHOUT ROWID;";

                        rCommand.ExecuteNonQuery();
                    }

                r_Connection = CoreDatabase.Connection;
                using (var rCommand = r_Connection.CreateCommand())
                {
                    rCommand.CommandText = "ATTACH @filename AS abyssal;";
                    rCommand.Parameters.AddWithValue("@filename", new FileInfo(@"Data\AbyssalFleets.db").FullName);

                    rCommand.ExecuteNonQuery();
                }
            });

            var rBattleApis = new[]
            {
                "api_req_sortie/battle",
                "api_req_battle_midnight/sp_midnight",
                "api_req_sortie/airbattle",
                "api_req_sortie/ld_airbattle",
                "api_req_combined_battle/airbattle",
                "api_req_combined_battle/battle",
                "api_req_combined_battle/battle_water",
                "api_req_combined_battle/sp_midnight",
                "api_req_combined_battle/ld_airbattle",
                "api_req_combined_battle/ec_battle",
                "api_req_combined_battle/each_battle",
                "api_req_combined_battle/each_battle_water",
            };

            ApiService.Subscribe(rBattleApis, ProcessAbyssalFleet);
        }
Esempio n. 2
0
        public void Initialize()
        {
            ApiService.SubscribeOnce("api_start2", delegate
            {
                var rDataFile = new FileInfo(DataFilename);
                if (!rDataFile.Exists)
                {
                    Infos = new Dictionary <int, QuestInfo>();
                }
                else
                {
                    using (var rReader = new JsonTextReader(rDataFile.OpenText()))
                    {
                        var rData = JArray.Load(rReader);

                        Infos = rData.Select(r => new QuestInfo(r)).ToDictionary(r => r.ID);
                    }
                }

                if (r_InitializationLock != null)
                {
                    r_InitializationLock.Set();
                    r_InitializationLock.Dispose();
                    r_InitializationLock = null;
                }
            });

            ApiService.Subscribe("api_get_member/require_info", _ =>
            {
                if (r_InitializationLock != null)
                {
                    r_InitializationLock.Wait();
                }

                Progresses = RecordService.Instance.QuestProgress.Reload();
            });

            ApiService.Subscribe("api_get_member/questlist", r => ProcessQuestList(r.Data as RawQuestList));
            ApiService.Subscribe("api_req_quest/clearitemget", r => Progresses.Remove(int.Parse(r.Parameters["api_quest_id"])));
        }