Example #1
0
 static void writeptr(int address, globalval value, int addressOffset = 0 /*fix vectors on .variables, each value was overwriting the previous*/)
 {
     entvars_t entvars = getedict(address).v;
     int offset = ((address % pr_edict_size) - 96) / 4;
     offset += addressOffset;
     if (offset > 104)
     {
         entvars.variables[offset - 105] = value;
         return;
     }
     switch (offset)
     {
         case 0: entvars.modelindex = cast_float(value); break;
         case 1: entvars.absmin[0] = cast_float(value); break;
         case 2: entvars.absmin[1] = cast_float(value); break;
         case 3: entvars.absmin[2] = cast_float(value); break;
         case 4: entvars.absmax[0] = cast_float(value); break;
         case 5: entvars.absmax[1] = cast_float(value); break;
         case 6: entvars.absmax[2] = cast_float(value); break;
         case 7: entvars.ltime = cast_float(value); break;
         case 8: entvars.movetype = cast_float(value); break;
         case 9: entvars.solid = cast_float(value); break;
         case 10: entvars.origin[0] = cast_float(value); break;
         case 11: entvars.origin[1] = cast_float(value); break;
         case 12: entvars.origin[2] = cast_float(value); break;
         case 13: entvars.oldorigin[0] = cast_float(value); break;
         case 14: entvars.oldorigin[1] = cast_float(value); break;
         case 15: entvars.oldorigin[2] = cast_float(value); break;
         case 16: entvars.velocity[0] = cast_float(value); break;
         case 17: entvars.velocity[1] = cast_float(value); break;
         case 18: entvars.velocity[2] = cast_float(value); break;
         case 19: entvars.angles[0] = cast_float(value); break;
         case 20: entvars.angles[1] = cast_float(value); break;
         case 21: entvars.angles[2] = cast_float(value); break;
         case 22: entvars.avelocity[0] = cast_float(value); break;
         case 23: entvars.avelocity[1] = cast_float(value); break;
         case 24: entvars.avelocity[2] = cast_float(value); break;
         case 25: entvars.punchangle[0] = cast_float(value); break;
         case 26: entvars.punchangle[1] = cast_float(value); break;
         case 27: entvars.punchangle[2] = cast_float(value); break;
         case 28: entvars.classname = cast_int(value); break;
         case 29: entvars.model = cast_int(value); break;
         case 30: entvars.frame = cast_float(value); break;
         case 31: entvars.skin = cast_float(value); break;
         case 32: entvars.effects = cast_float(value); break;
         case 33: entvars.mins[0] = cast_float(value); break;
         case 34: entvars.mins[1] = cast_float(value); break;
         case 35: entvars.mins[2] = cast_float(value); break;
         case 36: entvars.maxs[0] = cast_float(value); break;
         case 37: entvars.maxs[1] = cast_float(value); break;
         case 38: entvars.maxs[2] = cast_float(value); break;
         case 39: entvars.size[0] = cast_float(value); break;
         case 40: entvars.size[1] = cast_float(value); break;
         case 41: entvars.size[2] = cast_float(value); break;
         case 42: entvars.touch = cast_int(value); break;
         case 43: entvars.use = cast_int(value); break;
         case 44: entvars.think = cast_int(value); break;
         case 45: entvars.blocked = cast_int(value); break;
         case 46: entvars.nextthink = cast_float(value); break;
         case 47: entvars.groundentity = cast_int(value); break;
         case 48: entvars.health = cast_float(value); break;
         case 49: entvars.frags = cast_float(value); break;
         case 50: entvars.weapon = cast_float(value); break;
         case 51: entvars.weaponmodel = cast_int(value); break;
         case 52: entvars.weaponframe = cast_float(value); break;
         case 53: entvars.currentammo = cast_float(value); break;
         case 54: entvars.ammo_shells = cast_float(value); break;
         case 55: entvars.ammo_nails = cast_float(value); break;
         case 56: entvars.ammo_rockets = cast_float(value); break;
         case 57: entvars.ammo_cells = cast_float(value); break;
         case 58: entvars.items = cast_float(value); break;
         case 59: entvars.takedamage = cast_float(value); break;
         case 60: entvars.chain = cast_int(value); break;
         case 61: entvars.deadflag = cast_float(value); break;
         case 62: entvars.view_ofs[0] = cast_float(value); break;
         case 63: entvars.view_ofs[1] = cast_float(value); break;
         case 64: entvars.view_ofs[2] = cast_float(value); break;
         case 65: entvars.button0 = cast_float(value); break;
         case 66: entvars.button1 = cast_float(value); break;
         case 67: entvars.button2 = cast_float(value); break;
         case 68: entvars.impulse = cast_float(value); break;
         case 69: entvars.fixangle = cast_float(value); break;
         case 70: entvars.v_angle[0] = cast_float(value); break;
         case 71: entvars.v_angle[1] = cast_float(value); break;
         case 72: entvars.v_angle[2] = cast_float(value); break;
         case 73: entvars.idealpitch = cast_int(value); break;
         case 74: entvars.netname = cast_int(value); break;
         case 75: entvars.enemy = cast_int(value); break;
         case 76: entvars.flags = cast_float(value); break;
         case 77: entvars.colormap = cast_float(value); break;
         case 78: entvars.team = cast_float(value); break;
         case 79: entvars.max_health = cast_float(value); break;
         case 80: entvars.teleport_time = cast_float(value); break;
         case 81: entvars.armortype = cast_float(value); break;
         case 82: entvars.armorvalue = cast_float(value); break;
         case 83: entvars.waterlevel = cast_float(value); break;
         case 84: entvars.watertype = cast_float(value); break;
         case 85: entvars.ideal_yaw = cast_float(value); break;
         case 86: entvars.yaw_speed = cast_float(value); break;
         case 87: entvars.aiment = cast_int(value); break;
         case 88: entvars.goalentity = cast_int(value); break;
         case 89: entvars.spawnflags = cast_float(value); break;
         case 90: entvars.target = cast_int(value); break;
         case 91: entvars.targetname = cast_int(value); break;
         case 92: entvars.dmg_take = cast_float(value); break;
         case 93: entvars.dmg_save = cast_float(value); break;
         case 94: entvars.dmg_inflictor = cast_int(value); break;
         case 95: entvars.owner = cast_int(value); break;
         case 96: entvars.movedir[0] = cast_float(value); break;
         case 97: entvars.movedir[1] = cast_float(value); break;
         case 98: entvars.movedir[2] = cast_float(value); break;
         case 99: entvars.message = cast_int(value); break;
         case 100: entvars.sounds = cast_float(value); break;
         case 101: entvars.noise = cast_int(value); break;
         case 102: entvars.noise1 = cast_int(value); break;
         case 103: entvars.noise2 = cast_int(value); break;
         case 104: entvars.noise3 = cast_int(value); break;
         default:
             Debug.WriteLine("cant write offset " + offset);
             break;
     }
 }
Example #2
0
 public static void pr_globals_write(int address, globalval value)
 {
     //Debug.WriteLine(string.Format("pr_globals_write {0}: {1}", address, value));
     globalvars_t globalvars = pr_global_struct[address * 4 / sizeof_globalvars_t];
     int offset = address % (sizeof_globalvars_t / 4);
     switch (offset)
     {
         case 0:
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:
         case 6:
         case 7:
         case 8:
         case 9:
         case 10:
         case 11:
         case 12:
         case 13:
         case 14:
         case 15:
         case 16:
         case 17:
         case 18:
         case 19:
         case 20:
         case 21:
         case 22:
         case 23:
         case 24:
         case 25:
         case 26:
         case 27:
             globalvars.pad[offset] = cast_int(value); break;
         case 28: globalvars.self = cast_int(value); break;
         case 29: globalvars.other = cast_int(value); break;
         case 30: globalvars.world = cast_int(value); break;
         case 31: globalvars.time = cast_float(value); break;
         case 32: globalvars.frametime = cast_float(value); break;
         case 33: globalvars.force_retouch = cast_float(value); break;
         case 34: globalvars.mapname = cast_int(value); break;
         case 35: globalvars.deathmatch = cast_float(value); break;
         case 36: globalvars.coop = cast_float(value); break;
         case 37: globalvars.teamplay = cast_float(value); break;
         case 38: globalvars.serverflags = cast_float(value); break;
         case 39: globalvars.total_secrets = cast_float(value); break;
         case 40: globalvars.total_monsters = cast_float(value); break;
         case 41: globalvars.found_secrets = cast_float(value); break;
         case 42: globalvars.killed_monsters = cast_float(value); break;
         case 43: globalvars.parm1 = cast_float(value); break;
         case 44: globalvars.parm2 = cast_float(value); break;
         case 45: globalvars.parm3 = cast_float(value); break;
         case 46: globalvars.parm4 = cast_float(value); break;
         case 47: globalvars.parm5 = cast_float(value); break;
         case 48: globalvars.parm6 = cast_float(value); break;
         case 49: globalvars.parm7 = cast_float(value); break;
         case 50: globalvars.parm8 = cast_float(value); break;
         case 51: globalvars.parm9 = cast_float(value); break;
         case 52: globalvars.parm10 = cast_float(value); break;
         case 53: globalvars.parm11 = cast_float(value); break;
         case 54: globalvars.parm12 = cast_float(value); break;
         case 55: globalvars.parm13 = cast_float(value); break;
         case 56: globalvars.parm14 = cast_float(value); break;
         case 57: globalvars.parm15 = cast_float(value); break;
         case 58: globalvars.parm16 = cast_float(value); break;
         case 59: globalvars.v_forward[0] = cast_float(value); break;
         case 60: globalvars.v_forward[1] = cast_float(value); break;
         case 61: globalvars.v_forward[2] = cast_float(value); break;
         case 62: globalvars.v_up[0] = cast_float(value); break;
         case 63: globalvars.v_up[1] = cast_float(value); break;
         case 64: globalvars.v_up[2] = cast_float(value); break;
         case 65: globalvars.v_right[0] = cast_float(value); break;
         case 66: globalvars.v_right[1] = cast_float(value); break;
         case 67: globalvars.v_right[2] = cast_float(value); break;
         case 68: globalvars.trace_allsolid = cast_float(value); break;
         case 69: globalvars.trace_startsolid = cast_float(value); break;
         case 70: globalvars.trace_fraction = cast_float(value); break;
         case 71: globalvars.trace_endpos[0] = cast_float(value); break;
         case 72: globalvars.trace_endpos[1] = cast_float(value); break;
         case 73: globalvars.trace_endpos[2] = cast_float(value); break;
         case 74: globalvars.trace_plane_normal[0] = cast_float(value); break;
         case 75: globalvars.trace_plane_normal[1] = cast_float(value); break;
         case 76: globalvars.trace_plane_normal[2] = cast_float(value); break;
         case 77: globalvars.trace_plane_dist = cast_float(value); break;
         case 78: globalvars.trace_ent = cast_int(value); break;
         case 79: globalvars.trace_inopen = cast_float(value); break;
         case 80: globalvars.trace_inwater = cast_float(value); break;
         case 81: globalvars.msg_entity = cast_int(value); break;
         case 82: globalvars.main = cast_int(value); break;
         case 83: globalvars.StartFrame = cast_int(value); break;
         case 84: globalvars.PlayerPreThink = cast_int(value); break;
         case 85: globalvars.PlayerPostThink = cast_int(value); break;
         case 86: globalvars.ClientKill = cast_int(value); break;
         case 87: globalvars.ClientConnect = cast_int(value); break;
         case 88: globalvars.PutClientInServer = cast_int(value); break;
         case 89: globalvars.ClientDisconnect = cast_int(value); break;
         case 90: globalvars.SetNewParms = cast_int(value); break;
         case 91: globalvars.SetChangeParms = cast_int(value); break;
         default:
             Debug.WriteLine("cant write global var offset" + offset);
             break;
     }
 }
Example #3
0
        static string PR_ValueString(int type, globalval val)
        {
            ddef_t def;
            dfunction_t f;

            type &= ~DEF_SAVEGLOBAL;

            switch ((etype_t)type)
            {
                case etype_t.ev_string:
                    line = pr_string(cast_int(val));
                    break;
                case etype_t.ev_entity:
                    line = "entity " + NUM_FOR_EDICT(PROG_TO_EDICT(cast_int(val)));
                    break;
                case etype_t.ev_function:
                    f = pr_functions[cast_int(val)];
                    line = pr_string(f.s_name) + "()";
                    break;
                case etype_t.ev_field:
                    def = ED_FieldAtOfs(cast_int(val));
                    line = "." + pr_string(def.s_name);
                    break;
                case etype_t.ev_void:
                    line = "void";
                    break;
                case etype_t.ev_float:
                    line = string.Format("{0:F1}", cast_float(val));
                    break;
                case etype_t.ev_vector:
                    var vec = (double[])val;
                    //line = "'" + vec[0] + " " + vec[1] + " " + vec[2] + "'";
                    line = string.Format("'{0:F1} {1:F1} {2:F1}'", vec[0], vec[1], vec[2]);
                    break;
                case etype_t.ev_pointer:
                    line = "pointer";
                    break;
                default:
                    line = "bad type " + type;
                    break;
            }

            return line;
        }
Example #4
0
        public static float cast_float(globalval value)
        {
            float val;
            if (value == null)
            {
                val = 0;
            }
            else if (value.Type == globalval_type.Int)
            {
                val = BitConverter.ToSingle(BitConverter.GetBytes((int)value.Value), 0);
            }
            else if (value.Type == globalval_type.Float)
            {
                val = (float)value.Value;
            }
            else
            {
                val = (float)(double)value.Value;
            }

            //Debug.WriteLine(string.Format("cast_float old: {0} ", value == null ? "null" : value.Value));
            //Debug.WriteLine(string.Format("cast_float new: {0} ", val));
            if (float.IsNaN(val))
            {
                Debug.WriteLine(string.Format("cast_float NaN: {0} type: {1}", cast_int(value), value.Type));
            }
            return val;
        }
Example #5
0
        public static int cast_int(globalval value)
        {
            int val;
            if (value == null)
            {
                val = 0;
            }
            else if (value.Type == globalval_type.Float)
            {
                val = BitConverter.ToInt32(BitConverter.GetBytes((float)value.Value), 0);
            }
            else if (value.Type == globalval_type.Double)
            {
                val = BitConverter.ToInt32(BitConverter.GetBytes((float)(double)value.Value), 0);
            }
            else
            {
                val = (int)value.Value; //CastHelpers.ToUint32(?????
            }

            //Debug.WriteLine(string.Format("cast_float old: {0} ", value == null ? "null" : value.Value));
            //Debug.WriteLine(string.Format("cast_float new: {0} ", val));
            return val;
        }