Hardly.Library.Twitch.ChannelPointManager.GetPointsFromString C# (CSharp) Method

GetPointsFromString() public method

public GetPointsFromString ( string message ) : ulong
message string
return ulong
        public ulong GetPointsFromString(string message)
        {
            message = message?.Trim();
            ulong pointsValue = 0;

            if(message != null) {
                if(message.StartsWith("all", StringComparison.CurrentCultureIgnoreCase)) {
                    return ulong.MaxValue;
                } else {
                    do {
                        double numberValue;
                        string numberString = message.GetBefore(" ")?.Trim();
                        if(numberString == null) {
                            numberString = message;
                        }
                        if(!double.TryParse(numberString, out numberValue)) {
                            numberValue = (ulong)(pointsValue == 0 ? 1 : 0);
                        } else {
                            message = message.GetAfter(" ")?.Trim();
                        }

                        string numberUnit = message.GetBefore(" ")?.Trim();
                        if(numberUnit == null) {
                            numberUnit = message;
                            message = null;
                        } else {
                            message = message.GetAfter(" ")?.Trim();
                        }

                        PointUnit unit = units[0];
                        if(numberUnit != null) {
                            for(uint i = 0; i < units.Length; i++) {
                                if(numberUnit.Equals(units[i].nameSingular, StringComparison.CurrentCultureIgnoreCase) || numberUnit.Equals(units[i].namePlural, StringComparison.CurrentCultureIgnoreCase)) {
                                    unit = units[i];
                                    if(numberValue == 0) {
                                        numberValue = 1;
                                    }
                                    break;
                                }
                            }
                        }

                        pointsValue += (ulong)(numberValue * unit.value);
                    } while(message != null);

                    return pointsValue;
                }
            } else {
                return 1;
            }
        }