コード例 #1
0
        public static bool TryGetValue <T>(string key, out T value)
        {
            bool flag = false;

            value = default(T);
            Tuple <bool, string, OrganizationCache.LoadHandler, TimeSpan> tuple = null;

            if (OrganizationCache.definitionStore.TryGetValue(key, out tuple) && tuple.Item1)
            {
                Dictionary <string, Tuple <object, DateTime> > valueStore = OrganizationCache.ValueStore;
                flag = (string.IsNullOrEmpty(tuple.Item2) || RbacPrincipal.Current.IsInRole(tuple.Item2));
                if (flag)
                {
                    Tuple <object, DateTime> tuple2;
                    if (!valueStore.TryGetValue(key, out tuple2) || tuple2.Item2 < DateTime.UtcNow)
                    {
                        tuple.Item3(new OrganizationCache.AddValueHandler(OrganizationCache.AddValue), new OrganizationCache.LogErrorHandler(OrganizationCache.LogError));
                        valueStore.TryGetValue(key, out tuple2);
                    }
                    if (tuple2 != null)
                    {
                        value = (T)((object)tuple2.Item1);
                    }
                    else
                    {
                        flag = false;
                    }
                }
            }
            return(flag);
        }
コード例 #2
0
ファイル: MobileExt.cs プロジェクト: ruaduck/Core
        private static void EndAction <T>(Tuple <Mobile, T, Action <Mobile, T> > t)
        {
            if (!t.Item1.CanBeginAction(t.Item2))
            {
                t.Item1.EndAction(t.Item2);

                if (t.Item3 != null)
                {
                    t.Item3(t.Item1, t.Item2);
                }
            }
        }
コード例 #3
0
        private static void EndAction <T>(Tuple <Item, T, Action <Item, T> > t)
        {
            if (!CanBeginAction(t.Item1, t.Item2))
            {
                EndAction(t.Item1, t.Item2);

                if (t.Item3 != null)
                {
                    t.Item3(t.Item1, t.Item2);
                }
            }
        }
コード例 #4
0
        private static void FormatPretty(StringBuilder sb, TimeSpan ts, Tuple <string, int, Func <TimeSpan, int> > formatter)
        {
            var padding = formatter.Item2;

            if (sb.Length == 0)
            {
                padding = 1;
            }
            else
            {
                sb.Append(" ");
            }
            sb.Append(formatter.Item3(ts).ToString("D" + padding)).Append(formatter.Item1);
        }
コード例 #5
0
ファイル: JVMObject.cs プロジェクト: CoFlows/CoFlows-CE
        /// <summary>
        /// Property setter implementation tries to retrieve value from instance
        /// first then into this object
        /// </summary>
        /// <param name="binder"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override bool TrySetMember(SetMemberBinder binder, object value)
        {
            string signature = binder.Name;

            if (Instance != null)
            {
                try
                {
                    Tuple <string, object, Runtime.wrapSetProperty> funcs = (Tuple <string, object, Runtime.wrapSetProperty>)Properties[binder.Name];
                    funcs.Item3(value);
                    return(true);
                }
                catch (Exception e)
                {
                    Console.WriteLine("JVM Object TrySetMember: " + e);
                }
            }
            Properties[binder.Name] = value;
            return(true);
        }
コード例 #6
0
ファイル: ClockSensor.cs プロジェクト: lgsvl/ClockSensor
        void Publisher()
        {
            var nextPublish = Stopwatch.GetTimestamp();

            while (!Destroyed)
            {
                long now = Stopwatch.GetTimestamp();
                if (now < nextPublish)
                {
                    Thread.Sleep(0);
                    continue;
                }

                Tuple <double, float, Action> msg = null;
                lock (MessageQueue)
                {
                    if (MessageQueue.Count > 0)
                    {
                        msg = MessageQueue.Dequeue();
                    }
                }

                if (msg != null)
                {
                    if (!Sending) // Drop this message if previous sending has not finished.
                    {
                        try
                        {
                            Sending = true;
                            msg.Item3();
                        }
                        catch
                        {
                            Sending = false;
                        }
                    }
                    nextPublish   = now + (long)(Stopwatch.Frequency * msg.Item2);
                    LastTimestamp = msg.Item1;
                }
            }
        }
コード例 #7
0
        void Publisher()
        {
            var nextPublish = Stopwatch.GetTimestamp();

            while (!Destroyed)
            {
                long now = Stopwatch.GetTimestamp();
                if (now < nextPublish)
                {
                    Thread.Sleep(0);
                    continue;
                }

                Tuple <double, float, Action> msg = null;
                lock (MessageQueue)
                {
                    if (MessageQueue.Count > 0)
                    {
                        msg = MessageQueue.Dequeue();
                    }
                }

                if (msg != null)
                {
                    try
                    {
                        msg.Item3();
                    }
                    catch (Exception ex)
                    {
                        UnityEngine.Debug.LogException(ex, this);
                    }
                    nextPublish   = now + (long)(Stopwatch.Frequency * msg.Item2);
                    LastTimestamp = msg.Item1;
                }
            }
        }
コード例 #8
0
        private void ApplyPermissions()
        {
            foreach (Tuple <string, SpawnerEntityEditorHelper.Permission, Action <float> > childrenPermission in this._stableChildrenPermissions)
            {
                Tuple <string, SpawnerEntityEditorHelper.Permission, Action <float> > item = childrenPermission;
                KeyValuePair <string, MatrixFrame> keyValuePair = this.stableChildrenFrames.Find((Predicate <KeyValuePair <string, MatrixFrame> >)(x => x.Key == item.Item1));
                MatrixFrame frame = this.GetGhostEntityOrChild(item.Item1).GetFrame();
                if (!frame.NearlyEquals(keyValuePair.Value))
                {
                    switch (item.Item2.TypeOfPermission)
                    {
                    case SpawnerEntityEditorHelper.PermissionType.scale:
                        if (frame.origin.NearlyEquals(keyValuePair.Value.origin, 0.0001f) && frame.rotation.f.NormalizedCopy().NearlyEquals(keyValuePair.Value.rotation.f.NormalizedCopy(), 0.0001f) && (frame.rotation.u.NormalizedCopy().NearlyEquals(keyValuePair.Value.rotation.u.NormalizedCopy(), 0.0001f) && frame.rotation.s.NormalizedCopy().NearlyEquals(keyValuePair.Value.rotation.s.NormalizedCopy(), 0.0001f)))
                        {
                            switch (item.Item2.PermittedAxis)
                            {
                            case SpawnerEntityEditorHelper.Axis.x:
                                if (!frame.rotation.f.NearlyEquals(keyValuePair.Value.rotation.f))
                                {
                                    this.ChangeStableChildMatrixFrame(item.Item1, frame);
                                    item.Item3(frame.rotation.f.Length);
                                    continue;
                                }
                                continue;

                            case SpawnerEntityEditorHelper.Axis.y:
                                if (!frame.rotation.s.NearlyEquals(keyValuePair.Value.rotation.s))
                                {
                                    this.ChangeStableChildMatrixFrame(item.Item1, frame);
                                    item.Item3(frame.rotation.s.Length);
                                    continue;
                                }
                                continue;

                            case SpawnerEntityEditorHelper.Axis.z:
                                if (!frame.rotation.u.NearlyEquals(keyValuePair.Value.rotation.u))
                                {
                                    this.ChangeStableChildMatrixFrame(item.Item1, frame);
                                    item.Item3(frame.rotation.u.Length);
                                    continue;
                                }
                                continue;

                            default:
                                continue;
                            }
                        }
                        else
                        {
                            continue;
                        }

                    case SpawnerEntityEditorHelper.PermissionType.rotation:
                        switch (item.Item2.PermittedAxis)
                        {
                        case SpawnerEntityEditorHelper.Axis.x:
                            if (!frame.rotation.f.NearlyEquals(keyValuePair.Value.rotation.f) && !frame.rotation.u.NearlyEquals(keyValuePair.Value.rotation.u) && frame.rotation.s.NearlyEquals(keyValuePair.Value.rotation.s))
                            {
                                this.ChangeStableChildMatrixFrame(item.Item1, frame);
                                item.Item3(frame.rotation.GetEulerAngles().x);
                                continue;
                            }
                            continue;

                        case SpawnerEntityEditorHelper.Axis.y:
                            if (!frame.rotation.s.NearlyEquals(keyValuePair.Value.rotation.s) && !frame.rotation.u.NearlyEquals(keyValuePair.Value.rotation.u) && frame.rotation.f.NearlyEquals(keyValuePair.Value.rotation.f))
                            {
                                this.ChangeStableChildMatrixFrame(item.Item1, frame);
                                item.Item3(frame.rotation.GetEulerAngles().y);
                                continue;
                            }
                            continue;

                        case SpawnerEntityEditorHelper.Axis.z:
                            if (!frame.rotation.f.NearlyEquals(keyValuePair.Value.rotation.f) && !frame.rotation.s.NearlyEquals(keyValuePair.Value.rotation.s) && frame.rotation.u.NearlyEquals(keyValuePair.Value.rotation.u))
                            {
                                this.ChangeStableChildMatrixFrame(item.Item1, frame);
                                item.Item3(frame.rotation.GetEulerAngles().z);
                                continue;
                            }
                            continue;

                        default:
                            continue;
                        }

                    default:
                        continue;
                    }
                }
            }
        }
コード例 #9
0
 private static void FormatPretty(StringBuilder sb, TimeSpan ts, Tuple<string, int, Func<TimeSpan, int>> formatter)
 {
     var padding = formatter.Item2;
     if (sb.Length == 0)
         padding = 1;
     else
         sb.Append(" ");
     sb.Append(formatter.Item3(ts).ToString("D" + padding)).Append(formatter.Item1);
 }
コード例 #10
0
        /// <summary>
        /// Attempt to translate any Extra text for an item.
        /// </summary>
        /// <param name="strExtra">Extra string to translate.</param>
        public static string TranslateExtra(string strExtra)
        {
            string strReturn = string.Empty;

            // Only attempt to translate if we're not using English. Don't attempt to translate an empty string either.
            if (_strLanguage != GlobalOptions.DefaultLanguage && !string.IsNullOrWhiteSpace(strExtra))
            {
                // Attempt to translate CharacterAttribute names.
                switch (strExtra)
                {
                case "BOD":
                    strReturn = GetString("String_AttributeBODShort");
                    break;

                case "AGI":
                    strReturn = GetString("String_AttributeAGIShort");
                    break;

                case "REA":
                    strReturn = GetString("String_AttributeREAShort");
                    break;

                case "STR":
                    strReturn = GetString("String_AttributeSTRShort");
                    break;

                case "CHA":
                    strReturn = GetString("String_AttributeCHAShort");
                    break;

                case "INT":
                    strReturn = GetString("String_AttributeINTShort");
                    break;

                case "LOG":
                    strReturn = GetString("String_AttributeLOGShort");
                    break;

                case "WIL":
                    strReturn = GetString("String_AttributeWILShort");
                    break;

                case "EDG":
                    strReturn = GetString("String_AttributeEDGShort");
                    break;

                case "MAG":
                    strReturn = GetString("String_AttributeMAGShort");
                    break;

                case "MAGAdept":
                    strReturn = GetString("String_AttributeMAGShort") + " (" + GetString("String_DescAdept") + ")";
                    break;

                case "RES":
                    strReturn = GetString("String_AttributeRESShort");
                    break;

                case "DEP":
                    strReturn = GetString("String_AttributeDEPShort");
                    break;

                case "Physical":
                    strReturn = GetString("Node_Physical");
                    break;

                case "Mental":
                    strReturn = GetString("Node_Mental");
                    break;

                case "Social":
                    strReturn = GetString("Node_Social");
                    break;

                case "Left":
                    strReturn = GetString("String_Improvement_SideLeft");
                    break;

                case "Right":
                    strReturn = GetString("String_Improvement_SideRight");
                    break;

                default:
                    string strExtraNoQuotes = strExtra.FastEscape('\"');

                    object strReturnLock = new object();
                    Parallel.For(0, lstXPathsToSearch.Length, (i, state) =>
                    {
                        Tuple <string, string, Func <XmlNode, string>, Func <XmlNode, string> > objXPathPair = lstXPathsToSearch[i];
                        foreach (XmlNode objNode in XmlManager.Load(objXPathPair.Item1).SelectNodes(objXPathPair.Item2))
                        {
                            if (objXPathPair.Item3(objNode) == strExtraNoQuotes)
                            {
                                string strTranslate = objXPathPair.Item4(objNode);
                                if (!string.IsNullOrEmpty(strTranslate))
                                {
                                    lock (strReturnLock)
                                        strReturn = strTranslate;
                                    state.Stop();
                                    break;
                                }
                            }
                        }
                    });
                    break;
                }
            }

            // If no translation could be found, just use whatever we were passed.
            if (string.IsNullOrEmpty(strReturn) || strReturn.Contains("Error finding string for key - "))
            {
                strReturn = strExtra;
            }

            return(strReturn);
        }