// ----------------------------------------------------------------- /// <summary> /// /// </summary> // ----------------------------------------------------------------- private void DoJsonReadNotecard(UUID reqID, UUID hostID, UUID scriptID, UUID storeID, string path, UUID assetID) { AssetBase a = m_scene.AssetService.Get(assetID.ToString()); if (a == null) { GenerateRuntimeError(String.Format("Unable to find notecard asset {0}", assetID)); } if (a.Type != (sbyte)AssetType.Notecard) { GenerateRuntimeError(String.Format("Invalid notecard asset {0}", assetID)); } m_log.DebugFormat("[JsonStoreScripts] read notecard in context {0}", storeID); try { string jsondata = SLUtil.ParseNotecardToString(Encoding.UTF8.GetString(a.Data)); int result = m_store.SetValue(storeID, path, jsondata, true) ? 1 : 0; m_comms.DispatchReply(scriptID, result, "", reqID.ToString()); return; } catch (Exception e) { m_log.WarnFormat("[JsonStoreScripts] Json parsing failed; {0}", e.Message); } GenerateRuntimeError(String.Format("Json parsing failed for {0}", assetID.ToString())); m_comms.DispatchReply(scriptID, 0, "", reqID.ToString()); }
// protected void OnObjectAddedToScene(SceneObjectGroup sog) // { // m_log.InfoFormat( // "[WATER WARS]: Got notice of {0} {1} at {2} added to scene", // sog.Name, sog.LocalId, sog.AbsolutePosition); // //// if (sog.Name == GameManager.IN_WORLD_NAME) //// new GameManager(this, sog); // } /// <summary> /// Get our configuration object from a given prim /// </summary> /// <param name="so"></param> /// <returns>The config found, null if none could be found</returns> protected IConfig GetPrimConfig(SceneObjectGroup so) { IConfig config = null; IList <TaskInventoryItem> gmConfigItems = so.RootPart.Inventory.GetInventoryItems(WaterWarsConstants.REGISTRATION_INI_NAME); if (gmConfigItems.Count > 0) { AssetBase asset = Scenes[0].AssetService.Get(gmConfigItems[0].AssetID.ToString()); IConfigSource gmConfigSource = GameModelConfigurationParser.Parse( SLUtil.ParseNotecardToString(Encoding.UTF8.GetString(asset.Data))); config = gmConfigSource.Configs[GameModelConfigurationParser.GENERAL_SECTION_NAME]; } return(config); }
// ----------------------------------------------------------------- /// <summary> /// /// </summary> // ----------------------------------------------------------------- private void DoJsonReadNotecard( UUID reqID, UUID hostID, UUID scriptID, UUID storeID, string path, string notecardIdentifier) { UUID assetID; if (!UUID.TryParse(notecardIdentifier, out assetID)) { SceneObjectPart part = m_scene.GetSceneObjectPart(hostID); assetID = ScriptUtils.GetAssetIdFromItemName(part, notecardIdentifier, (int)AssetType.Notecard); } AssetBase a = m_scene.AssetService.Get(assetID.ToString()); if (a == null) { GenerateRuntimeError(String.Format("Unable to find notecard asset {0}", assetID)); } if (a.Type != (sbyte)AssetType.Notecard) { GenerateRuntimeError(String.Format("Invalid notecard asset {0}", assetID)); } m_log.DebugFormat("[JsonStoreScripts]: read notecard in context {0}", storeID); try { string jsondata = SLUtil.ParseNotecardToString(a.Data); int result = m_store.SetValue(storeID, path, jsondata, true) ? 1 : 0; m_comms.DispatchReply(scriptID, result, "", reqID.ToString()); return; } catch (SLUtil.NotANotecardFormatException e) { m_log.WarnFormat("[JsonStoreScripts]: Notecard parsing failed; assetId {0} at line number {1}", assetID.ToString(), e.lineNumber); } catch (Exception e) { m_log.WarnFormat("[JsonStoreScripts]: Json parsing failed; {0}", e.Message); } GenerateRuntimeError(String.Format("Json parsing failed for {0}", assetID)); m_comms.DispatchReply(scriptID, 0, "", reqID.ToString()); }
/// <summary> /// Fetch configuration. /// </summary> /// <exception cref="ConfigurationException">Thrown if there is a problem with the configuration.</exception> /// <param name="configNotecardName"></param> /// <returns></returns> public virtual string FetchConfiguration(string configNotecardName) { IList <TaskInventoryItem> items = m_part.Inventory.GetInventoryItems(configNotecardName); if (items.Count == 0) { string message = string.Format( "Could not find configuration notecard with name {0}. Please create one.", configNotecardName); throw new ConfigurationException(message); } else if (items.Count > 1) { m_log.ErrorFormat( "[WATER WARS]: Unexpectedly found {0} {1} items in {2}", items.Count, configNotecardName, m_part.Name); } AssetBase asset = m_scene.AssetService.Get(items[0].AssetID.ToString()); return(SLUtil.ParseNotecardToString(Encoding.UTF8.GetString(asset.Data))); }