예제 #1
0
파일: Racer.DC.cs 프로젝트: everalert/swe1r
            public void Update(Racer racer)
            {
                CheckUpdateable();
                switch (pathId)
                {
                case Path.Static:
                    data = racer.GetData((Addr.Static)offset, dataLen);
                    break;

                case Path.Pod:
                    data = racer.GetData((Addr.Pod)offset, dataLen);
                    break;

                case Path.PodState:
                    data = racer.GetData((Addr.PodState)offset, dataLen);
                    break;

                case Path.Race:
                    data = racer.GetData((Addr.Race)offset, dataLen);
                    break;

                case Path.Rendering:
                    data = racer.GetData((Addr.Rendering)offset, dataLen);
                    break;

                default:
                    break;
                }
            }
예제 #2
0
        private bool CheckRaceDataMatch(Racer r)
        {
            var ingame_track   = r.GetData(Addr.Race.SelectedTrack);
            var ingame_vehicle = r.GetData(Addr.Race.SelectedVehicle);

            return(ingame_track == Track && ingame_vehicle == Vehicle);
        }
예제 #3
0
        // CONTROL

        private void Init(Racer r)
        {
            if (CheckInRace(r) && data.Count <= 0)
            {
                // get race info
                meta_track          = r.GetData(Addr.Race.SelectedTrack);
                meta_vehicle        = r.GetData(Addr.Race.SelectedVehicle);
                meta_player         = r.GetData(Addr.Static.SaveFile01, 0x20);
                meta_upgrade_level  = r.GetData(Addr.Static.SaveFile01 + 0x41, 0x7);
                meta_upgrade_health = r.GetData(Addr.Static.SaveFile01 + 0x48, 0x7);

                // write first frame
                // index 0 used as canonical data set; referred to for file output and serves as base for new frames
                DataCollection first = new DataCollection();
                first.GetValue(r, Addr.Pod.TimeTotal);
                first.GetValue(r, Addr.Pod.Lap);
                first.GetValue(r, Addr.Pod.Flags);
                first.GetValue(r, Addr.PodState.Flags1);
                first.GetValue(r, Addr.PodState.Flags2);
                first.GetValue(r, Addr.PodState.X);
                first.GetValue(r, Addr.PodState.Y);
                first.GetValue(r, Addr.PodState.Z);
                first.GetValue(r, Addr.PodState.Vector3D_1A);
                first.GetValue(r, Addr.PodState.Vector3D_1B);
                first.GetValue(r, Addr.PodState.Vector3D_1C);
                first.GetValue(r, Addr.PodState.Vector3D_2A);
                first.GetValue(r, Addr.PodState.Vector3D_2B);
                first.GetValue(r, Addr.PodState.Vector3D_2C);
                first.GetValue(r, Addr.PodState.LapCompletion);
                first.GetValue(r, Addr.PodState.Speed);
                first.GetValue(r, Addr.PodState.Heat);
                first.GetValue(r, Addr.PodState.EngineDamageTL);
                first.GetValue(r, Addr.PodState.EngineDamageML);
                first.GetValue(r, Addr.PodState.EngineDamageBL);
                first.GetValue(r, Addr.PodState.EngineDamageTR);
                first.GetValue(r, Addr.PodState.EngineDamageMR);
                first.GetValue(r, Addr.PodState.EngineDamageBR);
                /* also add inputs at some point; need to figure out how to conflate all the input methods */
                //also - LightningPirate: I'd say just the main stuff like what pod, upgrades, upgrade health, and track and then xyz, time, current lap, progress, speed, boost, thrust, pitch, brake, turning, repair, slide, tilt, deaths, engine stuff (health, fire, temp)
                //also also - 3d transformation data, animation id, animation frame
                //so far mostly included except animation stuff (addresses not known) and input stuff
                data.Add(first);
                initialized = true;
            }
        }
예제 #4
0
 private bool CheckRacePaused(Racer r)
 {
     return(r.GetData(Addr.Static.PauseState) > 0);
 }
예제 #5
0
        // CHECKING

        private bool CheckInRace(Racer r)
        {
            return(r.GetData(Addr.Static.InRace) > 0);
        }