public static void GetOnlineStatus(Client c, string[] connectUserId, Callback <OnlineStatus[]> callback) { c.BigDB.LoadKeysOrCreate(OnlineStatusTable, connectUserId, delegate(DatabaseObject[] result) { var rtn = new OnlineStatus[result.Length]; for (var i = 0; i < result.Length; i++) { if (result[i].GetString("name", "") != "") { rtn[i] = new OnlineStatus(c, result[i]); } else { rtn[i] = new OnlineStatus(); } } callback.Invoke(rtn); }); }
public void Init(Client c, Callback successCallback) { if (this.IsInitializing) { return; } this.IsInitializing = true; OnlineStatus.GetOnlineStatus(c, this.ConnectUserId, delegate(OnlineStatus os) { this.onlineStatusObject = os; this.onlineStatusObject.Name = this.Name; this.onlineStatusObject.IpAddress = this.IPAddress.ToString(); this.onlineStatusObject.LastUpdate = DateTime.Now; c.BigDB.LoadOrCreate("friends", this.ConnectUserId, delegate(DatabaseObject friendslist) { this.friends = new Hashtable(); foreach (var key in friendslist.Properties) { if (friendslist.GetBool(key)) { this.friends.Add(key, true); } } Console.WriteLine("check player init: " + (this.onlineStatusObject != null) + ", " + (this.friends != null)); if (this.onlineStatusObject != null && this.friends != null) { if (!this.AllowSaveSmiley(this.Smiley)) { this.Smiley = 0; } this.IsInitializingDone = true; this.IsInitializing = false; successCallback.Invoke(); } }); }); }