Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryParseSingle()

static bool System.Xml.XmlConverter.TryParseSingle ( byte[] chars,
int offset,
int count,
out float result )
inlinestaticprivate

Definition at line 688 of file XmlConverter.cs.

689 {
690 result = 0f;
691 int num = offset + count;
692 bool flag = false;
693 if (offset < num && chars[offset] == 45)
694 {
695 flag = true;
696 offset++;
697 count--;
698 }
700 {
701 return false;
702 }
703 int num2 = 0;
704 while (offset < num)
705 {
706 int num3 = chars[offset] - 48;
707 switch (num3)
708 {
709 case -2:
710 {
711 offset++;
712 int num4 = 1;
713 while (offset < num)
714 {
715 num3 = chars[offset] - 48;
716 if ((uint)num3 >= 10u)
717 {
718 return false;
719 }
720 num4 *= 10;
721 num2 = num2 * 10 + num3;
722 offset++;
723 }
724 if (count > 8)
725 {
726 result = (float)((double)num2 / (double)num4);
727 }
728 else
729 {
730 result = (float)num2 / (float)num4;
731 }
732 if (flag)
733 {
734 result = 0f - result;
735 }
736 return true;
737 }
738 default:
739 return false;
740 case 0:
741 case 1:
742 case 2:
743 case 3:
744 case 4:
745 case 5:
746 case 6:
747 case 7:
748 case 8:
749 case 9:
750 break;
751 }
752 num2 = num2 * 10 + num3;
753 offset++;
754 }
755 if (count == 10)
756 {
757 return false;
758 }
759 if (flag)
760 {
761 result = -num2;
762 }
763 else
764 {
765 result = num2;
766 }
767 return true;
768 }

References System.chars, System.count, System.Xml.Dictionary, and System.offset.

Referenced by System.Xml.XmlConverter.ToSingle().