Example #1
0
        // -----------------------------------------------------------------
        /// <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());
        }
Example #4
0
        /// <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)));
        }