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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); } }
public override void HandleSuccess(CallbackInfo <WebObjects.Shop.BuyResponse> info) { RoarManager.OnGoodBought( new RoarManager.PurchaseInfo( ikey, info.data.buy_response )); }
// 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); } }
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); }
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); }
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); }
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); }
// 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); }
//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); }
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(); }
public override void HandleSuccess(CallbackInfo <WebObjects.User.LogoutResponse> info) { RoarManager.OnLoggedOut(); }
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 }
public override void HandleError(RequestResult info) { RoarManager.OnLogInFailed(info.msg); }
public override void HandleSuccess(CallbackInfo <WebObjects.User.CreateResponse> info) { RoarManager.OnCreatedUser(); RoarManager.OnLoggedIn(); }
public override void HandleError(RequestResult info) { RoarManager.OnCreateUserFailed(info.msg); }
public override void HandleSuccess(CallbackInfo <WebObjects.Google.LoginUserResponse> info) { RoarManager.OnLoggedIn(); }
// Manually fires a "change" event on this model public void Change() { RoarManager.OnComponentChange(this.name); this.hasChanged = false; }