public void OnEvent(AtavismEventData eData) { if (eData.eventType == "MAIL_UPDATE") { // Update if (!open) { ToggleOpen(); } if (viewingMail != null) { // Update the viewingMail viewingMail = ClientAPI.ScriptObject.GetComponent<Mailing>().GetMailEntryById(viewingMail.mailId); } } else if (eData.eventType == "MAIL_SENT") { mailboxState = MailBoxStateEnum.Menu; ClearItems(); } }
public void HandleMailList(Dictionary<string, object> props) { mailList = new List<MailEntry>(); int numMail = (int)props["numMail"]; for (int i = 0; i < numMail; i++) { MailEntry entry = new MailEntry(); entry.mailId = (int)props["mail_" + i + "ID"]; entry.senderOid = (OID)props["mail_" + i + "SenderOid"]; entry.senderName = (string)props["mail_" + i + "SenderName"]; entry.subject = (string)props["mail_" + i + "Subject"]; entry.message = (string)props["mail_" + i + "Message"]; List<MailItem> items = new List<MailItem>(); //TODO: put item reading code here int numItems = (int)props["mail_" + i + "NumItems"]; for (int j = 0; j < numItems; j++) { MailItem mailItem = new MailItem(); int itemTemplate = (int)props["mail_" + i + "ItemTemplate" + j]; if (itemTemplate > 0) { mailItem.item = ClientAPI.ScriptObject.GetComponent<Inventory>().GetItemByTemplateID(itemTemplate); mailItem.count = (int)props["mail_" + i + "ItemCount" + j]; } items.Add(mailItem); } entry.items = items; entry.currencyType = (int)props["mail_" + i + "CurrencyType"]; entry.currencyAmount = (int)props["mail_" + i + "CurrencyAmount"]; entry.cashOnDelivery = (bool)props["mail_" + i + "CoD"]; entry.read = (bool)props["mail_" + i + "Read"]; mailList.Add(entry); } //dispatch an event to tell the rest of the system string[] args = new string[1]; AtavismEventSystem.DispatchEvent("MAIL_UPDATE", args); }
public void DeleteMail(MailEntry mail) { Dictionary<string, object> props = new Dictionary<string, object>(); props.Add("mailID", mail.mailId); NetworkAPI.SendExtensionMessage(ClientAPI.GetPlayerOid(), false, "inventory.DELETE_MAIL", props); }
public void TakeMailItem(MailEntry mail, int itemNum) { Dictionary<string, object> props = new Dictionary<string, object>(); props.Add("mailID", mail.mailId); props.Add("itemPos", itemNum); NetworkAPI.SendExtensionMessage(ClientAPI.GetPlayerOid(), false, "inventory.MAIL_TAKE_ITEM", props); //ClientAPI.Write("Send take mail command with mail ID: " + mail.mailId); }
public void StartComposingMail(string recipient) { mailBeingComposed = new MailEntry(); mailBeingComposed.senderName = recipient; List<MailItem> items = new List<MailItem>(); for (int i = 0; i < itemLimit; i++) { items.Add(new MailItem()); } mailBeingComposed.items = items; }
public void SetMailRead(MailEntry mail) { mail.read = true; Dictionary<string, object> props = new Dictionary<string, object>(); props.Add("mailID", mail.mailId); NetworkAPI.SendExtensionMessage(ClientAPI.GetPlayerOid(), false, "inventory.MAIL_READ", props); }
void DrawMailMenu() { GUILayout.Label("Inbox:"); //GUILayout.Box ("Email Received goes here", GUILayout.Height(220)); int startingItem = currentPage * mailPerPage; for (int i = 0; i < mailPerPage; i++) { GUILayout.BeginHorizontal(); MailEntry entry = ClientAPI.ScriptObject.GetComponent<Mailing>().GetMailEntry(startingItem + i); if (entry != null) { if (GUILayout.Button(entry.senderName + " - " + entry.subject)) { viewingMail = entry; if (!viewingMail.read) ClientAPI.ScriptObject.GetComponent<Mailing>().SetMailRead(viewingMail); mailboxState = MailBoxStateEnum.ReadMail; } } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); // Buttons to move between pages if (currentPage != 0) { if (GUI.Button(new Rect(uiRect.x + 3, uiRect.yMax - 23, 20, 20), ">")) { currentPage--; } } int maxMailCount = mailPerPage * (currentPage + 1); if (ClientAPI.ScriptObject.GetComponent<Mailing>().MailList.Count > maxMailCount) { if (GUI.Button(new Rect(uiRect.xMax - 23, uiRect.yMax - 23, 20, 20), ">")) { currentPage++; } } GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); // Action Buttons GUILayout.BeginHorizontal(); /*GUILayout.BeginVertical (); if (GUILayout.Button ("Read")) { mailboxState = MailBoxStateEnum.ReadMail; } GUILayout.EndVertical ();*/ GUILayout.BeginVertical (); if (GUILayout.Button ("Write New Mail")) { ClientAPI.ScriptObject.GetComponent<Mailing>().StartComposingMail(); mailboxState = MailBoxStateEnum.NewMail; } GUILayout.EndVertical (); GUILayout.FlexibleSpace(); /*GUILayout.BeginVertical (); if (GUILayout.Button ("Delete")) { mailboxState = MailBoxStateEnum.DeleteMail; } GUILayout.EndVertical ();*/ GUILayout.EndHorizontal(); GUILayout.Space(10); }