コード例 #1
0
        private object CreateHexIntegerLiteral(char first)
        {
            CharBuilder cb = new CharBuilder();

            cb.Append(first);
            cb.Append(ReadChar());//x or X (ever tested before)
            double val = 0;

            while (CanAdvance)
            {
                char next = PeekChar();
                switch (next)
                {
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                {
                    cb.Append(next);
                    val = val * 16 + next - '0';
                    ReadChar();
                    continue;
                }

                case 'a':
                case 'b':
                case 'c':
                case 'd':
                case 'e':
                case 'f':
                {
                    cb.Append(next);
                    val = val * 16 + next - 'a' + 10;
                    ReadChar();
                    continue;
                }

                case 'A':
                case 'B':
                case 'C':
                case 'D':
                case 'E':
                case 'F':
                {
                    cb.Append(next);
                    val = val * 16 + next - 'A' + 10;
                    ReadChar();
                    continue;
                }
                }
                break;
            }
            return(int.Parse(cb.ToString()));
        }
コード例 #2
0
        private object CreateOctalIntegerLiteral(char first)
        {
            var cb = new CharBuilder();

            cb.Append(first);//0
            double val = 0;

            while (CanAdvance)
            {
                char next = PeekChar();
                switch (next)
                {
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                {
                    cb.Append(next);
                    val = val * 8 + next - '0';
                    ReadChar();
                    continue;
                }
                }
                break;
            }
            return(int.Parse(cb.ToString()));
        }
コード例 #3
0
        public string ReadString()
        {
            CharBuilder cb = new CharBuilder();

            for (; c != '`'; c = ReadChar())
            {
                cb.Append(c);
            }
            return(cb.ToString());
        }
コード例 #4
0
        public string ReadVariableName()
        {
            CharBuilder cb = new CharBuilder();

            for (; char.IsLetterOrDigit(c) || c == '_'; c = ReadChar())
            {
                cb.Append(c);
            }
            c = FallBack();
            return(cb.ToString());
        }
コード例 #5
0
        public string ReadTypeName()
        {
            CharBuilder cb = new CharBuilder();

            //todo use do while
            for (; char.IsLetterOrDigit(c) || c == '_' || c == '.'; c = ReadChar())
            {
                cb.Append(c);
            }
            c = FallBack();
            return(cb.ToString());
        }
コード例 #6
0
    private Character BuildCharacter(CharInfo charInfo, Transform initialSlot, bool isHero)
    {
        DivineDebug.Log("Building character " + charInfo.moniker.ToString() + " .");

        if (isHero)
        {
            return(HeroBuilder.Build(charInfo as HeroInfo, this, initialSlot.position, initialSlot.rotation));
        }
        else
        {
            return(CharBuilder.Build(charInfo, this, initialSlot.position, initialSlot.rotation));
        }
    }
コード例 #7
0
ファイル: CharBio.cs プロジェクト: aaron2610/Scripts
    private void Start()

    {
        thisObj      = gameObject;
        religionName = religion.Name();
        religionGod  = religion.GodName();
        CharBuilder charbuilder = gameObject.AddComponent <CharBuilder>();

        charbuilder.BuildNow();

        TraitManager traitManager = gameObject.AddComponent <TraitManager>();

        traitManager.Trait(traitOne, 1.3f);
        traitManager.Trait(traitTwo, 1.1f);
        traitManager.Trait(familyTrait, 1f);
        animator = gameObject.GetComponent <Animator>();
        if (religion.Name() == "Atheist")
        {
            piety = 0f;
        }
        else
        {
            piety = Random.Range(1f, 80f);
        }

        if (isPlayer == true)
        {
            gameObject.AddTag("Player");
        }

        gameObject.AddTag(professionType.ToString());
        gameObject.AddTag(religion.Name());
        gameObject.AddTag(FactionManager.facts[factionList].factionName);

        currentHealth = maxHealth;
        currentThirst = maxThirst;
        currentHunger = maxHunger;
        currentEnergy = maxEnergy;

        fullName    = firstName + " " + familyName;
        displayName = fullName;

        if (isPlayer)
        {
            Debug.Log("Starting Invokes");
        }

        StartCoroutine(StatCheck());
        StartCoroutine(StatUpdate());
    }
コード例 #8
0
        private object ReadNumber(char first)
        {
            CharBuilder builder = new CharBuilder();

            builder.Append(first);
            int dot = 0;
            int exp = 0;

            while (CanAdvance)
            {
                char next = PeekChar();
                switch (next)
                {
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                {
                    builder.Append(next);
                    ReadChar();
                    continue;
                }

                case '.':
                    //skip .
                    ReadChar();
                    next = PeekChar();
                    if (char.IsDigit(next))
                    {
                        dot++;
                        //add .
                        builder.Append('.');
                        builder.Append(next);
                        //skip digit
                        ReadChar();
                        if (dot > 1)
                        {
                            break;
                        }
                        continue;
                    }
                    FallBack();
                    break;

                case 'e':
                case 'E':
                {
                    builder.Append(next);
                    c = ReadChar();
                    exp++;
                    if (exp > 1)
                    {
                        break;
                    }
                    next = PeekChar();
                    if (next == '+' || next == '-')
                    {
                        builder.Append(next);
                        ReadChar();
                    }
                    continue;
                }
                }
                break;
            }
            if (dot > 0)
            {
                return(double.Parse(builder.ToString()));
            }
            else
            {
                return(int.Parse(builder.ToString()));
            }
        }
コード例 #9
0
 public CharacterFactory()
 {
     this._charBuilder = new CharBuilder();
 }