예제 #1
0
        static string GetConditionName(EvalEnum evalEnum, string value)
        {
            switch (evalEnum)
            {
            case EvalEnum.INHAND:
            case EvalEnum.COL_BY:
            case EvalEnum.CONTACT:
            case EvalEnum.HIT_BY:
            case EvalEnum.HIT:
            case EvalEnum.ACTOR_COLLIDER:
                return(GetObjectName(value));

            case EvalEnum.POSREL:
                return(vars.GetText(VarEnum.POSREL, value));

            case EvalEnum.ACTION:
                return(vars.GetText(VarEnum.ACTIONS, value));

            case EvalEnum.ANIM:
                return(vars.GetText(VarEnum.ANIMS, value));

            case EvalEnum.BODY:
                return(vars.GetText(VarEnum.BODYS, value));

            case EvalEnum.KEYBOARD_INPUT:
                return(vars.GetText(VarEnum.KEYBOARD_INPUT, value));

            case EvalEnum.NUM_TRACK:
                return(vars.GetText(VarEnum.TRACKS, value));

            case EvalEnum.MUSIC:
                return(vars.GetText(VarEnum.MUSIC, value));

            case EvalEnum.LIFE:
                return(vars.GetText(VarEnum.LIFES, value));

            default:
                return(value);
            }
        }
예제 #2
0
        static string Evalvar(out EvalEnum evalEnum)
        {
            evalEnum = EvalEnum.NONE;
            int curr = GetParam();

            if (curr == -1)
            {
                //constant
                return(GetParam().ToString());
            }

            if (curr == 0)
            {
                //variable
                curr = GetParam();
                string name = vars.GetText(VarEnum.VARS, curr, "var_" + curr);
                if (name == "player_current_action")
                {
                    evalEnum = EvalEnum.ACTION;
                }

                return(name);
            }

            //function
            string result = string.Empty;

            if ((curr & 0x8000) == 0x8000)
            {
                //change actor
                result = GetObjectName(GetParam()) + ".";
            }

            curr &= 0x7FFF;
            curr--;
            if (curr < 0 || curr >= config.EvalMacro.Length)
            {
                throw new NotImplementedException(curr.ToString());
            }

            evalEnum = config.EvalMacro[curr];

            string parameter = evalEnum.ToString().ToLowerInvariant();

            switch (evalEnum)
            {
            case EvalEnum.DIST:
                parameter += string.Format("({0})", GetObjectName(GetParam()));
                break;

            case EvalEnum.POSREL:
                if (config.Version == GameVersion.TIMEGATE || config.Version == GameVersion.TIMEGATE_DEMO)
                {
                    parameter += string.Format("({0})", Evalvar());
                }
                else
                {
                    parameter += string.Format("({0})", GetObjectName(GetParam()));
                }
                break;

            case EvalEnum.OBJECT:
            case EvalEnum.THROW:
                parameter += string.Format("({0})", GetObjectName(GetParam()));
                break;

            case EvalEnum.ISFOUND:
                parameter += string.Format("({0})", GetObjectName(Evalvar()));
                break;

            case EvalEnum.RAND:
                parameter += string.Format("({0})", GetParam());
                break;

            case EvalEnum.C_VAR:
                parameter = vars.GetText(VarEnum.CVARS, GetParam(), "cvar_" + curr);
                break;

            case EvalEnum.TEST_ZV_END_ANIM:
            case EvalEnum.MATRIX:
                parameter += string.Format("({0} {1})", GetParam(), GetParam());
                break;

            case EvalEnum.DIV_BY_2:
                parameter += string.Format("({0})", GetParam());
                break;
            }

            result += parameter;
            return(result);
        }