Ejemplo n.º 1
0
 private List <DefensiveBattleController.CameraEventData> GetMostReleventCameraEvents()
 {
     if (this.cameraEvents.Count > 0)
     {
         DefensiveCameraEventType defensiveCameraEventType = DefensiveCameraEventType.None;
         if (this.currentCameraEvent != null)
         {
             defensiveCameraEventType = this.currentCameraEvent.type;
         }
         List <DefensiveBattleController.CameraEventData> list = new List <DefensiveBattleController.CameraEventData>();
         float num  = 10f;
         float time = Time.time;
         for (int i = this.cameraEvents.Count - 1; i >= 0; i--)
         {
             DefensiveBattleController.CameraEventData cameraEventData = this.cameraEvents[i];
             if (this.currentCameraEvent != null)
             {
                 Vector2 a = new Vector2(cameraEventData.posX, cameraEventData.posZ);
                 Vector2 b = new Vector2(this.currentCameraEvent.posX, this.currentCameraEvent.posZ);
                 num = Math.Abs(Vector2.Distance(a, b));
             }
             if (num >= 10f && time < cameraEventData.timeStamp + this.GetExpirationTimeForEvent(cameraEventData.type) && cameraEventData.type <= defensiveCameraEventType)
             {
                 list.Add(cameraEventData);
             }
         }
         return(list);
     }
     return(null);
 }
Ejemplo n.º 2
0
 private void AddCameraEvent(float x, float z, DefensiveCameraEventType type)
 {
     if (!this.autoMoveCamera)
     {
         return;
     }
     DefensiveBattleController.CameraEventData cameraEventData = new DefensiveBattleController.CameraEventData();
     cameraEventData.posX      = x;
     cameraEventData.posZ      = z;
     cameraEventData.type      = type;
     cameraEventData.timeStamp = Time.time;
     this.cameraEvents.Add(cameraEventData);
     this.MoveCameraToAction();
 }
Ejemplo n.º 3
0
        private float GetExpirationTimeForEvent(DefensiveCameraEventType type)
        {
            switch (type)
            {
            case DefensiveCameraEventType.BuildingDestroyed:
            case DefensiveCameraEventType.WallDestroyed:
            case DefensiveCameraEventType.TroopDestroyed:
                return(0.5f);

            case DefensiveCameraEventType.TroopSpawned:
                return(0.5f);

            case DefensiveCameraEventType.EntityDamaged:
                return(0.2f);

            default:
                return(0f);
            }
        }
Ejemplo n.º 4
0
        public EatResponse OnEvent(EventId id, object cookie)
        {
            switch (id)
            {
            case EventId.PreEntityKilled:
            {
                Entity             entity             = (Entity)cookie;
                BuildingComponent  buildingComponent  = entity.Get <BuildingComponent>();
                TransformComponent transformComponent = entity.Get <TransformComponent>();
                if (transformComponent != null)
                {
                    DefensiveCameraEventType type = DefensiveCameraEventType.TroopDestroyed;
                    if (buildingComponent != null)
                    {
                        if (buildingComponent.BuildingType.Type == BuildingType.Wall)
                        {
                            type = DefensiveCameraEventType.WallDestroyed;
                        }
                        else
                        {
                            type = DefensiveCameraEventType.BuildingDestroyed;
                        }
                    }
                    this.AddCameraEvent(Units.BoardToWorldX(transformComponent.CenterX()), Units.BoardToWorldZ(transformComponent.CenterZ()), type);
                }
                return(EatResponse.NotEaten);
            }

            case EventId.EntityKilled:
            {
                Entity item = (Entity)cookie;
                if (this.currentWave != null && this.currentWave.Troops.Contains(item))
                {
                    this.currentWave.Troops.Remove(item);
                    if (this.currentWave.Troops.Count == 0 && this.timers.Count == 0)
                    {
                        this.EndCurrentWave();
                    }
                }
                return(EatResponse.NotEaten);
            }

            case EventId.PostBuildingEntityKilled:
            case EventId.EntityDestroyed:
IL_1D:
                if (id == EventId.CameraFinishedMoving)
                {
                    this.MoveCameraToAction();
                    return(EatResponse.NotEaten);
                }
                if (id != EventId.UserStartedCameraMove)
                {
                    return(EatResponse.NotEaten);
                }
                this.autoMoveCamera = false;
                this.cameraEvents.Clear();
                this.numTimesEntityHit.Clear();
                this.UnRegisterObservers();
                return(EatResponse.NotEaten);

            case EventId.EntityHit:
            {
                Bullet             bullet        = (Bullet)cookie;
                SmartEntity        target        = bullet.Target;
                uint               iD            = target.ID;
                TransformComponent transformComp = target.TransformComp;
                BuildingComponent  buildingComp  = target.BuildingComp;
                if (buildingComp != null && transformComp != null)
                {
                    if (this.numTimesEntityHit.ContainsKey(iD))
                    {
                        Dictionary <uint, int> dictionary;
                        uint key;
                        (dictionary = this.numTimesEntityHit)[key = iD] = dictionary[key] + 1;
                    }
                    else
                    {
                        this.numTimesEntityHit.Add(iD, 1);
                    }
                    if (this.currentCameraEvent == null || this.numTimesEntityHit[iD] > 5)
                    {
                        this.numTimesEntityHit[iD] = 0;
                        this.AddCameraEvent(Units.BoardToWorldX(transformComp.CenterX()), Units.BoardToWorldZ(transformComp.CenterZ()), DefensiveCameraEventType.EntityDamaged);
                    }
                }
                return(EatResponse.NotEaten);
            }
            }
            goto IL_1D;
        }