Example #1
0
 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();
     }
 }
Example #2
0
    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);
    }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
0
 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;
 }
Example #6
0
 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);
 }
Example #7
0
    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);
    }