コード例 #1
0
 private void GameAnalyzer_OnZone(object sender, StringEventArgs e) {
     this.zoneMap = MapReader.ReadMap(e.value);
     mapVisuals.Clear();
     spawnVisuals.Clear();
     //ResizeCanvasToZone(e.value);
     this.rvh = GetResizeValHolder(e.value);
     DrawMap(this.rvh);
     if (followSelf) {
         centerView();
     }
     lblZone.Content = this.zoneMap.zone;
 }
コード例 #2
0
ファイル: GameAnalyzer.cs プロジェクト: CraigArnold/ShowEmu
        private void analyze(GameState newGameState) {
            //ontick always goes off
            if(OnTick != null) {
                OnTick(this);
            }
            //see if we zoned
            if (newGameState.zone != "" && oldGameState.zone != newGameState.zone) {
                oldGameState.spawnList.Clear();
                StringEventArgs zoneArgs = new StringEventArgs();
                zoneArgs.value = newGameState.zone;
                if (OnZone != null) {
                    OnZone(this, zoneArgs);
                }
            }
            //spawnlistUpdate events
            //add new spawns
            foreach (Spawn s in newGameState.spawnList.Except(oldGameState.spawnList, new SpawnComparer()).ToArray()) {
                SpawnEventArgs args = new SpawnEventArgs();
                args.spawn = s;
                if(OnSpawnAdd != null) {
                    OnSpawnAdd(this, args);
                }              
            }
            //update position on existing spawns
            foreach (Spawn s in newGameState.spawnList.Intersect(oldGameState.spawnList, new SpawnComparer()).ToArray()) {
                Spawn tmpSpawn = oldGameState.spawnList.Find(x => x.id == s.id);
                if (s.xLoc != tmpSpawn.xLoc || s.yLoc != tmpSpawn.yLoc || s.heading != tmpSpawn.heading) {
                    SpawnEventArgs args = new SpawnEventArgs();
                    args.spawn = s;
                    if (OnSpawnUpdate != null) {
                        OnSpawnUpdate(this, args);
                    }
                }
                if (s.type != tmpSpawn.type) {
                    //something died so the spawn poofs and corpse is spawned
                    SpawnEventArgs args = new SpawnEventArgs();
                    args.spawn = s;
                    if (OnSpawnDelete != null) {
                        OnSpawnDelete(this, args);
                    }
                    if (OnSpawnAdd != null) {
                        OnSpawnAdd(this, args);
                    }   
                }
            }
            //remove missing spawns
            foreach (Spawn s in oldGameState.spawnList.Except(newGameState.spawnList, new SpawnComparer()).ToArray()) {
                SpawnEventArgs args = new SpawnEventArgs();
                args.spawn = s;
                if (OnSpawnDelete != null) {
                    OnSpawnDelete(this, args);
                }
            }

            //ToDo: groundSpawnListUpdate events

            //check for new target
            if (newGameState.spawnList.Count > 0 && oldGameState.target != newGameState.target) {
                SpawnEventArgs args = new SpawnEventArgs();
                args.spawn = newGameState.target;
                if (OnTargetChange != null) {
                    OnTargetChange(this, args);
                }
            }
            //check if target moved
            if(oldGameState.target.xLoc != newGameState.target.xLoc
                || oldGameState.target.yLoc != newGameState.target.yLoc
                || oldGameState.target.zLoc != newGameState.target.zLoc) {
                    CoordinatesEventArgs OnTargetMoveArgs = new CoordinatesEventArgs();
                    OnTargetMoveArgs.point.X = newGameState.target.xLoc;
                    OnTargetMoveArgs.point.Y = newGameState.target.yLoc;
                    OnTargetMoveArgs.point.Z = newGameState.target.zLoc;
                    if(OnTargetMove != null) {
                        OnTargetMove(this, OnTargetMoveArgs);
                }
            }   
            //check if we moved
            if (oldGameState.self.xLoc != newGameState.self.xLoc
                || oldGameState.self.yLoc != newGameState.self.yLoc
                || oldGameState.self.zLoc != newGameState.self.zLoc) {
                    CoordinatesEventArgs playerMoveArgs = new CoordinatesEventArgs();
                    playerMoveArgs.point.X = newGameState.self.xLoc;
                    playerMoveArgs.point.Y = newGameState.self.yLoc;
                    playerMoveArgs.point.Z = newGameState.self.zLoc;
                    if (OnPlayerMove != null) {
                        OnPlayerMove(this, playerMoveArgs);
                    }
            }     
            //check if we changed level
            if (oldGameState.self.level != newGameState.self.level) {
                IntEventArgs intEventArgs = new IntEventArgs();
                intEventArgs.value = newGameState.self.level;
                if (OnPlayerLevelChange != null) {
                    OnPlayerLevelChange(this, intEventArgs);
                }
            }
        }