Exemple #1
0
            public override void HandleSuccess(CallbackInfo <WebObjects.User.NetdriveFetchResponse> info)
            {
                //TODO: Move this into the ParseXML function in NetdriveFetchResponse

                /*
                 * string value = "";
                 * string str = null;
                 *
                 * IXMLNode nd = info.data.GetNode("roar>0>user>0>netdrive_get>0>netdrive_field>0>data>0");
                 * if(nd!=null)
                 * {
                 * str = nd.Text;
                 * }
                 * if (str!=null) value = str;
                 *
                 * data.Data_[key] = value;
                 * info.msg = value;
                 *
                 * if ( value==null || value == "")
                 * {
                 * data.logger_.DebugLog("[roar] -- No data for key: "+key);
                 * info.code = IWebAPI.UNKNOWN_ERR;
                 * info.msg = "No data for key: "+key;
                 * cbx( new CallbackInfo<string>( null, IWebAPI.UNKNOWN_ERR, "no data for key: "+key ) );
                 * }
                 */

                data.Data_[key] = info.data;


                cbx(new CallbackInfo <string>(info.data.data, IWebAPI.OK, null));
                RoarManager.OnDataLoaded(key, info.data.data);
            }
Exemple #2
0
            public override void HandleSuccess(CallbackInfo <WebObjects.Items.EquipResponse> info)
            {
                DomainObjects.InventoryItem item = inventory.dataStore.inventory.Get(id);
                item.equipped = true;

                RoarManager.OnGoodEquipped(new RoarManager.GoodInfo(id, item.ikey, item.label));
            }
Exemple #3
0
    public void TestUpdate()
    {
        string xml =
            @"<update type=""core"" ikey=""health"" value=""120"" />";

        bool eventTriggered = false;

        System.Xml.XmlElement            nn       = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.UpdateEvent> callback = (Roar.Events.UpdateEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.ikey, "health");
            StringAssert.IsMatch(eve.type, "core");
            StringAssert.IsMatch(eve.val, "120");
        };

        RoarManager.roarServerUpdateEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerUpdateEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #4
0
    public void TestItemLose()
    {
        string xml =
            @"<item_lose item_id=""1234"" item_ikey=""somthing""/>";

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.ItemLoseEvent> callback = (Roar.Events.ItemLoseEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.item_id, "1234");
            StringAssert.IsMatch(eve.item_ikey, "somthing");
        };

        RoarManager.roarServerItemLoseEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerItemLoseEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #5
0
    public void TestScript()
    {
        string xml =
            @"<script key=""abc"" value=""blah""/>";

        bool eventTriggered = false;

        System.Xml.XmlElement            nn       = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.ScriptEvent> callback = (Roar.Events.ScriptEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.key, "abc");
            StringAssert.IsMatch(eve.val, "blah");
        };

        RoarManager.roarServerScriptEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerScriptEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #6
0
    public void TestChromeWebStore()
    {
        string xml =
            @"<chrome_web_store ikey=""abc"" transaction_id=""abc"">
	    <costs>
	    </costs>
		<modifiers>
	    </modifiers>
	  </chrome_web_store>"    ;

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.ChromeWebStoreEvent> callback = (Roar.Events.ChromeWebStoreEvent eve) =>
        {
            eventTriggered = true;
        };

        RoarManager.roarServerChromeWebStoreEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerChromeWebStoreEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #7
0
    public void TestMailIn()
    {
        string xml =
            @"<mail_in/>";

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);

        Action <Roar.Events.MailInEvent> callback = (Roar.Events.MailInEvent eve) =>
        {
            eventTriggered = true;
        };

        RoarManager.roarServerMailInEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerMailInEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #8
0
    public void TestUnequip()
    {
        string xml =
            @"<unequip item_id=""1234""/>";

        bool eventTriggered = false;

        System.Xml.XmlElement             nn       = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.UnequipEvent> callback = (Roar.Events.UnequipEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.item_id, "1234");
        };

        RoarManager.roarServerUnequipEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerUnequipEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #9
0
    public void TestFriendRequest()
    {
        string xml =
            @"<friend_request name=""Lex Luthor"" from_player_id=""12313231"" level=""123"" friend_invite_row_id=""12341345"" />";

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.FriendRequestEvent> callback = (Roar.Events.FriendRequestEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.name, "Lex Luthor");
            StringAssert.IsMatch(eve.from_player_id, "12313231");
            StringAssert.IsMatch(eve.level, "123");
            StringAssert.IsMatch(eve.friend_invite_row_id, "12341345");
        };

        RoarManager.roarServerFriendRequestEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerFriendRequestEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #10
0
    public void TestTransaction()
    {
        string xml =
            @"<transaction ikey=""diamonds"" value=""120"" />";

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.TransactionEvent> callback = (Roar.Events.TransactionEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.ikey, "diamonds");
            StringAssert.IsMatch(eve.val, "120");
        };

        RoarManager.roarServerTransactionEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerTransactionEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #11
0
    public void TestInviteAccepted()
    {
        string xml =
            @"<invite_accepted name=""Lex Luthor"" player_id=""12313231"" level=""123"" />";

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.InviteAcceptedEvent> callback = (Roar.Events.InviteAcceptedEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.name, "Lex Luthor");
            StringAssert.IsMatch(eve.player_id, "12313231");
            StringAssert.IsMatch(eve.level, "123");
        };

        RoarManager.roarServerInviteAcceptedEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerInviteAcceptedEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #12
0
    public void TestCollectChanged()
    {
        string xml =
            @"<collect_changed ikey=""health"" next=""12313231"" />";

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.CollectChangedEvent> callback = (Roar.Events.CollectChangedEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.ikey, "health");
            StringAssert.IsMatch(eve.next, "12313231");
        };

        RoarManager.roarServerCollectChangedEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerCollectChangedEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #13
0
    public void TestLevelUp()
    {
        string xml =
            @"<level_up value=""5"" />";

        bool eventTriggered = false;

        System.Xml.XmlElement             nn       = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.LevelUpEvent> callback = (Roar.Events.LevelUpEvent eve) =>
        {
            eventTriggered = true;
            StringAssert.IsMatch(eve.val, "5");
        };

        RoarManager.roarServerLevelUpEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerLevelUpEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #14
0
    public void Unset(string key, bool silent)
    {
        // Setup temporary copy of attributes to be assigned
        // to the previousAttributes register if a change occurs
        var prev = Clone(this.attributes);

        // Check that server data is present
        if (!HasDataFromServer)
        {
            this.OnNoData(key);
            return;
        }

        if (this.attributes [key] != null)
        {
            // Remove the specific element
            this.attributes.Remove(key);

            this.hasChanged = true;
            // Broadcasts an attribute specific change event of the form:
            // **change:attribute_name**
            if (!silent)
            {
                RoarManager.OnComponentChange(this.name);
            }
        }

        // Broadcasts a `change` event if the model changed
        if (HasChanged && !silent)
        {
            this.previousAttributes = prev;
            this.Change();
        }
    }
Exemple #15
0
 public override void HandleSuccess(CallbackInfo <WebObjects.Shop.BuyResponse> info)
 {
     RoarManager.OnGoodBought(
         new RoarManager.PurchaseInfo(
             ikey,
             info.data.buy_response
             ));
 }
Exemple #16
0
    // Removes all attributes from the model
    public void Clear(bool silent)
    {
        attributes = new Dictionary <string, CT> ();

        // Set internal changed flag
        this.hasChanged = true;

        if (!silent)
        {
            RoarManager.OnComponentChange(name);
        }
    }
Exemple #17
0
    protected IEnumerator SendCore(string apicall, Hashtable args, IRequestCallback cb, bool requires_auth_token)
    {
        if (GameKey == "")
        {
            logger.DebugLog("[roar] -- No game key set!--");
            yield break;
        }

        logger.DebugLog("[roar] -- Calling: " + apicall);

        // Encode POST parameters
        WWWForm post = new WWWForm();

        if (args != null)
        {
            foreach (DictionaryEntry param in args)
            {
                //Debug.Log(string.Format("{0} => {1}", param.Key, param.Value));
                post.AddField(param.Key as string, param.Value as string);
            }
        }

        if (requires_auth_token)
        {
            AddAuthToken(args, post);
        }

        // Fire call sending event
        RoarManager.OnRoarNetworkStart();

        //Debug.Log ( "roar_api_url = " + RoarAPIUrl );
        if (Debug.isDebugBuild)
        {
            Debug.Log("Requesting : " + RoarAPIUrl + GameKey + "/" + apicall + "/");
        }

        //NOTE: This is a work-around for unity not supporting zero length body for POST requests
        if (post.data.Length == 0)
        {
            post.AddField("dummy", "x");
        }

        var xhr = new WWW(RoarAPIUrl + GameKey + "/" + apicall + "/", post);

        yield return(xhr);

        OnServerResponse(xhr.text, apicall, cb);
    }
Exemple #18
0
    public void testPropertyUpdated()
    {
        mockFetch(userView, null);

        StringAssert.IsMatch("5", properties.GetValue("stamina") as String);

        System.Xml.XmlElement   updateNode = RoarExtensions.CreateXmlElement("<update type='attribute' ikey='stamina' value='2'/>");
        Roar.Events.UpdateEvent e          = Roar.Events.UpdateEvent.CreateFromXml(updateNode);
        StringAssert.IsMatch("stamina", e.ikey);
        StringAssert.IsMatch("attribute", e.type);
        StringAssert.IsMatch("2", e.val);

        RoarManager.OnRoarServerUpdate(e);

        StringAssert.IsMatch("2", properties.GetValue("stamina") as String);
    }
Exemple #19
0
    public void TestTaskComplete()
    {
        string xml =
            @"<task_complete>
	    <ikey>task_unique_ikey</ikey>
	    <label>Label for the task, set by the developer</label>
	    <description>Description of the task, as set by the developer.</description>
	    <location>Location set by the developer.</location>
	    <tags>
	      <tag value=""blah""/>
	    </tags>
	    <costs>
	      <stat_cost ikey=""premium_currency"" type=""Health"" value=""10"" />
	    </costs>
	    <modifiers>
	      <add_xp value=""3""/>
	      <stat_change ikey=""coins"" value=""1500""/>
	    </modifiers>
	    <mastery level=""3"" progress=""100""/>
	  </task_complete>"    ;

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
        Action <Roar.Events.TaskCompleteEvent> callback = (Roar.Events.TaskCompleteEvent eve) =>
        {
            eventTriggered = true;
            //StringAssert.IsMatch(eve.task, "health");
        };

        RoarManager.roarServerTaskCompleteEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerTaskCompleteEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #20
0
    public void TestAchievementComplete()
    {
        string xml =
            @"<achievement_complete ikey=""some_achievement""
				progress_count=""2""
				steps=""10""
				description=""An achievement you need to do 10 times to complete""
				label=""An example achievement""
				job_ikey=""job_ikey""
				job_label=""The job label""
			/>"            ;

        bool eventTriggered = false;

        System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);

        Action <Roar.Events.AchievementCompleteEvent> callback = (Roar.Events.AchievementCompleteEvent eve) =>
        {
            Console.Out.Write("test2");
            eventTriggered = true;
            StringAssert.IsMatch(eve.ikey, "some_achievement");
            StringAssert.IsMatch(eve.progress_count, "2");
            StringAssert.IsMatch(eve.steps, "10");
            StringAssert.IsMatch(eve.description, "An achievement you need to do 10 times to complete");
            StringAssert.IsMatch(eve.label, "An example achievement");
            StringAssert.IsMatch(eve.task_ikey, "job_ikey");
            StringAssert.IsMatch(eve.task_label, "The job label");
        };

        RoarManager.roarServerAchievementCompleteEvent += callback;

        try
        {
            RoarManager.OnServerEvent(nn);
        }
        finally
        {
            RoarManager.roarServerAchievementCompleteEvent -= callback;
        }

        Assert.IsTrue(eventTriggered);
    }
Exemple #21
0
    // Preps the data from server and places it within the Model
    // Not clear whether this should ammend or replace the data
    // At the moment it ammends!
    private void ProcessData(DT d, Roar.Callback <IDictionary <string, CT> > cb)
    {
        Dictionary <string, CT> o = converter.convert(d);

        // Flag server cache called
        // Must do before `set()` to flag before change events are fired
        HasDataFromServer = true;

        // Update the Model
        this.Set(o);
        if (cb != null)
        {
            cb(new Roar.CallbackInfo <IDictionary <string, CT> >(o, WebAPI.OK, null));
        }

        logger.DebugLog("Setting the model in " + name + " to : " + Roar.Json.ObjectToJSON(o));
        logger.DebugLog("[roar] -- Data Loaded: " + name);

        // Broadcast data ready event
        RoarManager.OnComponentReady(this.name);
    }
Exemple #22
0
    //TODO: This should probably be called "Add" as it seems to
    // update/add to the model rather than replace all the entries.

    public DataModel <CT, DT> Set(Dictionary <string, CT> data, bool silent)
    {
        string changedProp;
        // Setup temporary copy of attributes to be assigned
        // to the previousAttributes register if a change occurs
        Dictionary <string, CT> prev = Clone(this.attributes);

        // Reset the internal register
        attributes = new Dictionary <string, CT> ();

        foreach (string propKey in data.Keys)
        {
            this.attributes [propKey] = data[propKey];

            if (!prev.ContainsKey(propKey) || (!Comparer <CT> .Equals(prev[propKey], data[propKey])))
            {
                this.hasChanged = true;
                changedProp     = propKey;
                RoarManager.OnComponentAttributeChange(this.name, changedProp);
            }
        }

        if (hasChanged)
        {
            if (!silent)
            {
                RoarManager.OnComponentChange(this.name);
            }
        }

        // Broadcasts a `change` event if the model changed
        if (HasChanged && !silent)
        {
            this.previousAttributes = prev;
            this.Change();
        }

        return(this);
    }
Exemple #23
0
    public void testNotifyOfServerChanges()
    {
        System.Xml.XmlDocument doc        = new System.Xml.XmlDocument();
        System.Xml.XmlElement  serverNode = doc.CreateElement("server");
        System.Xml.XmlElement  child1     = doc.CreateElement("child1");
        System.Xml.XmlElement  child2     = doc.CreateElement("child2");

        serverNode.AppendChild(child1);
        serverNode.AppendChild(child2);
        doc.AppendChild(serverNode);

        bool called = false;

        Action <object> callback = o => { called = true; Console.WriteLine(o.ToString()); };

        RoarManager.roarServerAllEvent += callback;

        RoarManager.NotifyOfServerChanges(serverNode);

        Assert.IsTrue(called);

        this.mockery.VerifyAllExpectationsHaveBeenMet();
    }
Exemple #24
0
 public override void HandleSuccess(CallbackInfo <WebObjects.User.LogoutResponse> info)
 {
     RoarManager.OnLoggedOut();
 }
Exemple #25
0
 public override void HandleSuccess(CallbackInfo <WebObjects.User.LoginResponse> info)
 {
     //Debug.Log("Login -> OnSuccess :"+info.data.DebugAsString());
     RoarManager.OnLoggedIn();
     // @todo Perform auto loading of game and player data
 }
Exemple #26
0
 public override void HandleError(RequestResult info)
 {
     RoarManager.OnLogInFailed(info.msg);
 }
Exemple #27
0
 public override void HandleSuccess(CallbackInfo <WebObjects.User.CreateResponse> info)
 {
     RoarManager.OnCreatedUser();
     RoarManager.OnLoggedIn();
 }
Exemple #28
0
 public override void HandleError(RequestResult info)
 {
     RoarManager.OnCreateUserFailed(info.msg);
 }
Exemple #29
0
 public override void HandleSuccess(CallbackInfo <WebObjects.Google.LoginUserResponse> info)
 {
     RoarManager.OnLoggedIn();
 }
Exemple #30
0
 // Manually fires a "change" event on this model
 public void Change()
 {
     RoarManager.OnComponentChange(this.name);
     this.hasChanged = false;
 }