Exemple #1
0
    // Methods
    private static unsafe byte AttAdd_gui(byte *buf, runattinf *b1, runattinf *b2, runattinf *b3, byte yunsuan)
    {
        ushort index = 0;

        if ((((b1->attlei == attshulei.Sstr.typevalue) && (b2->attlei == attshulei.Sstr.typevalue)) && (b3->attlei == attshulei.Sstr.typevalue)) && (yunsuan == 0x2b))
        {
            if ((b1->datafrom == 0xfe) && (b1->Pz == b3->Pz))
            {
                if (Attmake_SetAtt(b2, b3, yunsuan) > 0)
                {
                    return(1);
                }
            }
            else if ((b2->datafrom == 0xfe) && (b2->Pz == b3->Pz))
            {
                if (Attmake_SetAtt(b1, b3, yunsuan) > 0)
                {
                    return(1);
                }
            }
            else
            {
                if (Attmake_SetAtt(b1, b3, 0) == 0)
                {
                    return(0);
                }
                if (Attmake_SetAtt(b2, b3, yunsuan) > 0)
                {
                    return(1);
                }
            }
        }
        else
        {
            if (((b2->attlei != attshulei.Sstr.typevalue) && (b3->attlei == attshulei.Sstr.typevalue)) && ((yunsuan == 0x2d) || ((yunsuan == 0x2b) && (b2->val < 0))))
            {
                index = Strmake.Strmake_GetStrlen_Encode(b3->Pz, b3->att.encodeh_star);
                if (b2->val >= index)
                {
                    b3->Pz[0] = 0;
                    return(1);
                }
                index         = Strmake.Strmake_GetStrlen_Encode_Lenth(b3->Pz, b3->att.encodeh_star, (byte)(index - b2->val));
                b3->Pz[index] = 0;
                return(1);
            }
            if (((b1->attlei != attshulei.Sstr.typevalue) && (b2->attlei != attshulei.Sstr.typevalue)) && (b3->attlei != attshulei.Sstr.typevalue))
            {
                if (yunsuan == 0x2b)
                {
                    b3->val = b1->val + b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x2d)
                {
                    b3->val = b1->val - b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x2a)
                {
                    b3->val = b1->val * b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x2f)
                {
                    b3->val = (b2->val == 0) ? 0 : (b1->val / b2->val);
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x25)
                {
                    b3->val = b1->val % b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x7c)
                {
                    b3->val = b1->val | b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x26)
                {
                    b3->val = b1->val & b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 60)
                {
                    b3->val = b1->val << b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
                if (yunsuan == 0x3e)
                {
                    b3->val = b1->val >> b2->val;
                    return(Attmake_SetAtt(b3, b3, 0));
                }
            }
        }
        myapp.errcode = 0x1b;
        return(0);
    }