// Callback for after server data loads in void RetrievedServerMessages(List <int> ints, List <string> strings) { currentTime = Epoch.Current(); secondsToEvent = ints[0] - currentTime; secondsToEnd = ints[1] - currentTime; eventTime = ints[0]; eventEndTime = ints[1]; disclaimerText.text = strings[0]; if (ScoreKeeper.gameVersion != strings[2]) { disclaimerText.text = "Your game client is out of date!\n\nPlease update your client!"; ShowDisclaimer(); } if (!PlayerPrefs.HasKey("ClientAddress")) { PlayerPrefs.SetString("ClientAddress", strings[1]); PlayerPrefs.SetInt("ClientPort", ints[2]); PlayerPrefs.Save(); } gotServerData = true; // Start our countdown timer logic InvokeRepeating("Timer", 0, 1f); }
IEnumerator CompleteAnimationAndLoadLevel() { yield return(new WaitWhile(() => !BlackFade.instance.isFadeOutComplete())); GameStats.StartTime = Epoch.Current(); GameStats.TotalDeaths = 0; GameStats.LevelDeaths = 0; SceneManager.LoadScene("Level 00"); }
public void CmdMail_ReadMessage(int index) { if (index >= 0 && index < mailMessages.Count) { MailMessage message = mailMessages[index]; message.read = Epoch.Current(); mailMessages[index] = message; Database.singleton.Mail_UpdateMessage(message); } }
public void CmdMail_DeleteMessage(int index) { if (index >= 0 && index < mailMessages.Count) { MailMessage message = mailMessages[index]; message.deleted = Epoch.Current(); mailMessages.RemoveAt(index); Database.singleton.Mail_UpdateMessage(message); } }
private void OnPlayerDisconnected(BasePlayer player, string reason) { if (config.enableHoldQueue) { if (UserHasAnyPermission(player.UserIDString, config.permsGrantingHoldQueue)) { userDisconnectionTimes.Add(player.userID, Epoch.Current()); } } }
public void CmdMail_DeleteMessage(int index) { if (index >= 0 && index < mailMessages.Count) { MailMessage message = mailMessages[index]; message.deleted = Epoch.Current(); mailMessages.RemoveAt(index); Database.singleton.Mail_UpdateMessage(message); } nextRiskyActionTime = NetworkTime.time + mailSettings.mailWaitSeconds; }
public void CharacterLoad_Mail(Player player) { var table = connection.Query <mail>( "SELECT * FROM mail WHERE messageTo=? AND deleted=0 AND expires > ? ORDER BY sent", player.name, Epoch.Current()); foreach (var row in table) { MailMessage message = Mail_BuildMessageFromDBRow(row); player.mailMessages.Add(message); } }
private void CheckDisconnections() { int current = Epoch.Current(); int holdTimeSeconds = config.holdTime * 60; foreach (KeyValuePair <ulong, int> pair in userDisconnectionTimes.ToArray()) { if (Epoch.SecondsElapsed(current, pair.Value) >= holdTimeSeconds) { userDisconnectionTimes.Remove(pair.Key); } } }
public void CmdMail_TakeItem(int index) { if (index >= 0 && index < mailMessages.Count) { MailMessage message = mailMessages[index]; if (InventoryCanAdd(new Item(message.item), 1)) { InventoryAdd(new Item(message.item), 1); message.read = Epoch.Current(); message.item = null; mailMessages[index] = message; Database.singleton.Mail_UpdateMessage(message); } } }
// When player reaches exit, load next scene. // For now though, just reload the scene void OnTriggerEnter2D(Collider2D other) { if (other is CapsuleCollider2D && other.gameObject.GetComponent <PlayerController>()) { //GameStats.LevelDeaths = 0; //SceneManager.LoadScene((SceneManager.GetActiveScene().buildIndex + 1) % SceneManager.sceneCountInBuildSettings); //SoundManager.instance.PlayWalkSound(); GameStats.EndTime = Epoch.Current(); other.gameObject.transform.position = Vector3.zero; other.gameObject.GetComponent <PlayerController>().viewDirection = ViewDirection.Down; other.gameObject.GetComponent <PlayerController>().GameComplete = true; BlackFade.instance.AnimateFadeOut(false); StartCoroutine(CompleteAnimationAndShowCredits()); } }
// ----------------------------------------------------------------------------------- // // ----------------------------------------------------------------------------------- public void Mail_CreateMessage(string from, string to, string subject, string body, string itemName, long expiration = 0) { long sent = Epoch.Current(); long expires = 0; if (expiration > 0) { expires = sent + expiration; } if (itemName == null) { itemName = ""; } #if _MYSQL ExecuteNonQueryMySql(@"INSERT INTO mail ( messageFrom, messageTo, subject, body, sent, `expires`, `read`, `deleted`, `item` ) VALUES ( @from, @to, @subject, @body, @sent, @expires, 0, 0, @item )" , new MySqlParameter("@from", from), new MySqlParameter("@to", to), new MySqlParameter("@subject", subject), new MySqlParameter("@body", body), new MySqlParameter("@sent", sent), new MySqlParameter("@expires", expires), new MySqlParameter("@item", itemName) ); #elif _SQLITE ExecuteNonQuery(@"INSERT INTO mail ( messageFrom, messageTo, subject, body, sent, expires, read, deleted, item ) VALUES ( @from, @to, @subject, @body, @sent, @expires, 0, 0, @item )" , new SqliteParameter("@from", from), new SqliteParameter("@to", to), new SqliteParameter("@subject", subject), new SqliteParameter("@body", body), new SqliteParameter("@sent", sent), new SqliteParameter("@expires", expires), new SqliteParameter("@item", itemName) ); #endif }
// ----------------------------------------------------------------------------------- // // ----------------------------------------------------------------------------------- public void Mail_CreateMessage(string from, string to, string subject, string body, string itemName, long expiration = 0) { long sent = Epoch.Current(); long expires = 0; if (expiration > 0) { expires = sent + expiration; } if (itemName == null) { itemName = ""; } connection.Execute( "INSERT INTO mail (messageFrom, messageTo, subject, body, sent, expires, read, deleted, item) VALUES (?, ?, ?, ?, ?, ?, 0, 0, ?)", from, to, subject, body, sent, expires, itemName ); }
// ----------------------------------------------------------------------------------- // // ----------------------------------------------------------------------------------- public List <MailMessage> Mail_CheckForNewMessages(long maxID) { List <MailMessage> result = new List <MailMessage>(); #if _SERVER #if _MYSQL var table = ExecuteReaderMySql("SELECT * FROM mail WHERE id > @maxid AND deleted=0 AND expires > @expires ORDER BY sent", new MySqlParameter("@maxid", maxID), new MySqlParameter("@expires", Epoch.Current())); #elif _SQLITE var table = connection.Query <mail>("SELECT * FROM mail WHERE id > " + maxID + " AND deleted=0 AND expires > " + Epoch.Current() + " ORDER BY sent"); #endif foreach (var row in table) { MailMessage message = Mail_BuildMessageFromDBRow(row); result.Add(message); } #endif return(result); }
private void CharacterLoad_Mail(Player player) { #if _SERVER #if _MYSQL var table = ExecuteReaderMySql("SELECT * FROM mail WHERE messageTo=@character AND deleted=0 AND expires > @expires ORDER BY sent", new MySqlParameter("@character", player.name), new MySqlParameter("@expires", Epoch.Current())); #elif _SQLITE var table = connection.Query <mail>("SELECT * FROM mail WHERE messageTo=? AND deleted=0 AND expires > " + Epoch.Current() + " ORDER BY sent", player.name); #endif foreach (var row in table) { MailMessage message = Mail_BuildMessageFromDBRow(row); player.mailMessages.Add(message); } #endif }
// ----------------------------------------------------------------------------------- // Update // ----------------------------------------------------------------------------------- private void Update() { Player player = Player.localPlayer; if (player == null) { return; } long current = Epoch.Current(); //-- setup send mail button newMailButton.gameObject.SetActive(player.mailSettings.mailSendFromAnywhere); newMailButton.onClick.SetListener(() => { sendMailPanel.Show(); readMailPanel.SetActive(false); }); // -- setup delete button deleteButton.onClick.SetListener(() => { if (NetworkTime.time >= player.nextRiskyActionTime) { player.nextRiskyActionTime = NetworkTime.time + player.mailSettings.mailWaitSeconds; readingIndex = -1; for (int i = 0; i < messagesContent.childCount; ++i) { int idx = i; UIMailMessageSlot slot = messagesContent.GetChild(idx).GetComponent <UIMailMessageSlot>(); if (slot.toggle.isOn) { player.CmdMail_DeleteMessage(slot.mailIndex); } } } }); //-- setup take item button takeItemButton.gameObject.SetActive(readingIndex > -1); //count messages that haven't expired yet int mailCount = player.mailMessages.Count((m) => current <= m.expires); UIUtils.BalancePrefabs(messageSlot, mailCount, messagesContent); if (mailCount != cnt) { cnt = mailCount; } int slotIndex = -1; //loop over messages backwards because we add to the synclist so newer messages appear at end, we want to display newer on top for (int mailIndex = player.mailMessages.Count - 1; mailIndex >= 0; mailIndex--) { MailMessage message = player.mailMessages[mailIndex]; //if message has expired, skip it if (current > message.expires) { continue; } int tmpIndex = mailIndex; slotIndex++; UIMailMessageSlot slot = messagesContent.GetChild(slotIndex).GetComponent <UIMailMessageSlot>(); slot.textReceived.text = message.sentAt; slot.textFrom.text = message.from; slot.textSubject.text = message.subject; slot.mailIndex = tmpIndex; if (message.item != null) { ItemSlot item = new ItemSlot(new Item(message.item)); slot.itemSlot.interactable = false; slot.itemSlot.GetComponent <Image>().color = Color.white; slot.itemSlot.GetComponent <Image>().sprite = message.item.image; slot.itemSlot.GetComponent <UIShowToolTip>().enabled = true; slot.itemSlot.GetComponent <UIShowToolTip>().text = item.ToolTip(); } else { slot.itemSlot.interactable = false; slot.itemSlot.GetComponent <Image>().color = Color.clear; slot.itemSlot.GetComponent <Image>().sprite = null; slot.itemSlot.GetComponent <UIShowToolTip>().enabled = false; } //if the message has been read, show normal font, else bold text if (message.read > 0) { slot.textReceived.fontStyle = FontStyle.Normal; slot.textFrom.fontStyle = FontStyle.Normal; slot.textSubject.fontStyle = FontStyle.Normal; } else { slot.textReceived.fontStyle = FontStyle.Bold; slot.textFrom.fontStyle = FontStyle.Bold; slot.textSubject.fontStyle = FontStyle.Bold; } //click on slot, read message slot.readButton.onClick.SetListener(() => { readingIndex = tmpIndex; if (message.read == 0) { player.CmdMail_ReadMessage(tmpIndex); } }); } // currently selected message if (readingIndex > -1) { MailMessage reading = player.mailMessages[readingIndex]; readContent.gameObject.SetActive(true); receivedText.text = reading.sentAt; expiresText.text = reading.expiresAt; fromText.text = reading.from; subjectText.text = reading.subject; bodyText.text = reading.body; if (reading.item != null) { ItemSlot item = new ItemSlot(new Item(reading.item)); takeItemButton.onClick.SetListener(() => { player.CmdMail_TakeItem(readingIndex); takeItemButton.interactable = false; }); takeItemButton.interactable = true; takeItemButton.GetComponent <Image>().color = Color.white; takeItemButton.GetComponent <Image>().sprite = reading.item.image; takeItemButton.GetComponent <UIShowToolTip>().enabled = true; takeItemButton.GetComponent <UIShowToolTip>().text = item.ToolTip(); } else { takeItemButton.onClick.RemoveAllListeners(); takeItemButton.interactable = false; takeItemButton.GetComponent <Image>().color = Color.clear; takeItemButton.GetComponent <Image>().sprite = null; takeItemButton.GetComponent <UIShowToolTip>().enabled = false; } } else { readContent.gameObject.SetActive(false); } }
// ----------------------------------------------------------------------------------- // // ----------------------------------------------------------------------------------- public List <MailMessage> Mail_CheckForNewMessages(long maxID) { List <MailMessage> result = new List <MailMessage>(); var table = connection.Query <mail>( "SELECT * FROM mail WHERE id > ? AND deleted=0 AND expires > ? ORDER BY sent", maxID, Epoch.Current()); foreach (var row in table) { MailMessage message = Mail_BuildMessageFromDBRow(row); result.Add(message); } return(result); }