/*---------------------------------------------------- AWAKE ----------------------------------------------------*/

    void Awake()
    {
        powerManager = GameObject.Find("GameManager").GetComponent<PowerManager>();

        anim = transform.FindChild("Animation").GetComponent<Animator>();

        effectorCollider1 = transform.FindChild("AreaEffectors").GetChild(0).GetComponent<BoxCollider2D>();
        effectorCollider2 = transform.FindChild("AreaEffectors").GetChild(1).GetComponent<BoxCollider2D>();
        effectorCollider3 = transform.FindChild("AreaEffectors").GetChild(2).GetComponent<BoxCollider2D>();

        consoleViewImage = transform.FindChild("ConsoleView").GetComponent<SpriteRenderer>();

        powerCost = GetComponent<Power>().powerCost;

        GameObject fanDistance = transform.FindChild("FanDistance").gameObject;

        float difference = Vector2.Distance(transform.position, fanDistance.transform.position);

        effectorCollider1.size = new Vector2(difference-1, effectorCollider1.size.y);
        effectorCollider1.offset = new Vector2(difference / 2, 0);

        effectorCollider2.size = new Vector2(difference - 1, effectorCollider2.size.y);
        effectorCollider2.offset = new Vector2(difference / 2, 1.7f);

        effectorCollider3.size = new Vector2(difference - 1, effectorCollider3.size.y);
        effectorCollider3.offset = new Vector2(difference / 2, -1.7f);
    }
Beispiel #2
0
        public PowerBinWidget( [ObjectCreator.Param] World world )
        {
            this.world = world;

            if (world.LocalPlayer != null)
                power = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
        }
Beispiel #3
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            //Need in range selected target
            if (pp.Target == null || pm.fx.getDistance(pp.User.Position, pp.Target.Position) > pm.meleeRange) { yield break; }

            yield return 200; //Synchronize with weapon swing

            //pp.Message.Field6.Field0 = swing side
            if(pp.SwingSide == 3) {
                pm.fx.PlayEffectGroupActorToActor(18671, pp.User, pp.Target);
            } else {
                pm.fx.PlayEffectGroupActorToActor(18672, pp.User, pp.Target);
            }

            IList<Actor> hits = pm.FindActorsInFront(pp.User, pp.Target.Position, 180f, 10f);
            foreach (Actor actor in hits)
            {
                //Must not be other player either will need fix
                if(actor.DynamicID != pp.User.DynamicID)
                    pm.DoDamage(actor, 20, FloatingNumberMessage.FloatType.White);
            }

            //Regenerate ressource
            pm.generateRessource(pp.User, 4);

            //Flush all player buffer
            pm.flushAll(pp.User);
        }
Beispiel #4
0
 public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
 {
     if (pm.fx.getDistance(pp.User.Position, pp.Target.Position) > pm.meleeRange)
     {
         pm.fx.PlayHitEffect(HitEffect.Flash, pp.User, pp.Target);
         pm.DoDamage(pp.Target, 25f, FloatingNumberMessage.FloatType.White);
     }
     yield break;
 }
Beispiel #5
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            /*fx.SpawnEffect(pp.User, 86790, pp.TargetPosition);
            yield return 2000;
            fx.SpawnEffect(pp.User, 86769, pp.TargetPosition);
            fx.SpawnEffect(pp.User, 90364, pp.TargetPosition, -1, 4000);

            IList<Actor> hits = fx.FindActorsInRadius(pp.TargetPosition, 13f);
            fx.DoDamage(pp.User, hits, 150f, 0);*/
            yield break;
        }
Beispiel #6
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            yield return 150;

            pm.fx.PlayEffectGroupActorToActor(18685, pp.User, pp.User);

            //Regenerate ressource
            pm.generateRessource(pp.User, 15);

            List<Actor> targetList = pp.User.World.GetActorsInRange(pp.User.Position, 17f);

            //Add stunt effect
            foreach (Actor actor in targetList)
            {
                if (actor.DynamicID != pp.User.DynamicID)
                {
                    pm.DoDamage(actor, 20f, FloatingNumberMessage.FloatType.White);
                    actor.setAttribute(GameAttribute.Stunned, new GameAttributeValue(true));
                }
            }

            //Set skill on Colldown
            pp.User.setAttribute(GameAttribute.Power_Disabled, new GameAttributeValue(true), Skills.Skills.Barbarian.FuryGenerators.GroundStomp);
            pm.SendDWordTick(pp.User.InGameClient);
            pm.flushAll(pp.User);

            yield return 3000;
            
            //Remove stunt effect after 3sec
            foreach (Actor actor in targetList)
            {
                if (actor.DynamicID != pp.User.DynamicID)
                {
                    actor.setAttribute(GameAttribute.Stunned, new GameAttributeValue(false));
                }
            }

            pm.SendDWordTick(pp.User.InGameClient);

            yield return 9000;

            //Remove skill cooldown
            pp.User.setAttribute(GameAttribute.Power_Disabled, new GameAttributeValue(false), Skills.Skills.Barbarian.FuryGenerators.GroundStomp);
            pm.SendDWordTick(pp.User.InGameClient);
            pm.flushAll(pp.User);
            
        }
Beispiel #7
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            /*if (pp.Message.Field5 == 0)
                fx.PlayEffectGroupActorToActor(96176, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));
            else if (pp.Message.Field5 == 1)
                fx.PlayEffectGroupActorToActor(96176, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));
            else if (pp.Message.Field5 == 2)
                fx.PlayEffectGroupActorToActor(96178, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));

            if (fx.WillHitMeleeTarget(pp.User, pp.Target))
            {
                fx.PlayHitEffect(2, pp.User, pp.Target);
                fx.DoDamage(pp.User, pp.Target, 25f, 0);
            }*/

            yield break;
        }
Beispiel #8
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            // HACK: made up spell, not real magic missile
            /*for (int step = 1; step < 10; ++step)
            {
                var spos = new Vector3D();
                spos.X = pp.User.Position.X + ((pp.TargetPosition.X - pp.User.Position.X) * (step * 0.10f));
                spos.Y = pp.User.Position.Y + ((pp.TargetPosition.Y - pp.User.Position.Y) * (step * 0.10f));
                spos.Z = pp.User.Position.Z + ((pp.TargetPosition.Z - pp.User.Position.Z) * (step * 0.10f));

                fx.SpawnEffect(pp.User, 61419, spos);

                IList<Actor> hits = fx.FindActorsInRadius(spos, 6f);
                fx.DoDamage(pp.User, hits, 60f, 0);
                yield return 100;
            }*/
            yield break;
        }
        /// <summary>
        /// Called when the activity is first created. </summary>
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Get an instance of the SensorManager
            mSensorManager = (SensorManager)GetSystemService(SENSOR_SERVICE);

            // Get an instance of the PowerManager
            mPowerManager = (PowerManager)GetSystemService(POWER_SERVICE);

            // Get an instance of the WindowManager
            mWindowManager = (IWindowManager)GetSystemService(WINDOW_SERVICE);
            mDisplay = mWindowManager.GetDefaultDisplay();

            // Create a bright wake lock
            mWakeLock = mPowerManager.NewWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, this.GetType().Name);

            // instantiate our simulation view and set it as the activity's content
            mSimulationView = new SimulationView(this);
            SetContentView(mSimulationView);
        }
Beispiel #10
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            //Need in range selected target
            if (pp.Target == null || pm.fx.getDistance(pp.User.Position, pp.Target.Position) > pm.meleeRange) { yield break; }

            yield return 100; //Synchronize with weapon swing and give time to player position to update

            //Add 20% knockback chance
            if (pm._rand.Next(0, 100) < 60) { pm.fx.DoKnockback(pp.User, pp.Target, 1); }

            //Effect may depend on rune/gender not implemented for the moment
            pm.fx.PlayEffectGroupActorToActor(18662, pp.User, pp.User);
            pm.fx.PlayHitEffect(HitEffect.Flash, pp.Target, pp.User);

            //Tmp dmg
            pm.DoDamage(pp.Target, 30f, FloatingNumberMessage.FloatType.White);
                        
            //Regenerate ressource
            pm.generateRessource(pp.User, 6);

            //Flush all player buffer
            pm.flushAll(pp.User);
        }
Beispiel #11
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            /*fx.RegisterChannelingPower(pp.User, 150);

            fx.ActorLookAt(pp.User, pp.TargetPosition);

            // if throttling only update proxy if needed, then exit
            if (pp.ThrottledCast)
            {
                if (pp.Target == null)
                    fx.GetChanneledProxy(pp.User, 0, pp.TargetPosition);
                yield break;
            }

            IList<Actor> targets;
            if (pp.Target == null)
            {
                targets = new List<Actor>();
                fx.PlayRopeEffectActorToActor(0x78c0, pp.User, fx.GetChanneledProxy(pp.User, 0, pp.TargetPosition));
            }
            else
            {
                targets = fx.FindActorsInRadius(pp.TargetPosition, 15f, 1);
                targets.Insert(0, pp.Target);
                Actor effect_source = pp.User;
                foreach (Actor actor in targets)
                {
                    fx.PlayHitEffect(2, effect_source, actor);
                    fx.PlayRopeEffectActorToActor(0x78c0, effect_source, actor);
                    effect_source = actor;
                }
            }

            fx.DoDamage(pp.User, targets, 12, 0);*/
            yield break;
        }
Beispiel #12
0
 public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
 {
     /*Vector3D startpos;
     if (pp.Target == null)
         startpos = pp.User.Position;
     else
         startpos = pp.TargetPosition;
     
     for (int n = 0; n < 7; ++n)
     {
         IList<Actor> nearby = fx.FindActorsInRadius(startpos, 20f, 1);
         if (nearby.Count > 0)
         {
             fx.SpawnEffect(pp.User, 99063, nearby[0].Position);
             fx.DoDamage(pp.User, nearby[0], 100f, 0);
             yield return 100;
         }
         else
         {
             break;
         }
     }*/
     yield break;
 }
Beispiel #13
0
 // Called to start executing a power
 // return yield an int to specify in milliseconds how long to wait before continuing.
 public abstract IEnumerable<int> Run(PowerParameters pp, PowerManager fx);
Beispiel #14
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            //Add start effect
            pm.fx.PlayEffectGroupActorToActor(18701, pp.User, pp.User);

            pm.userRessource(pp.User, 20);

            pm.flushAll(pp.User);

            yield break;
        }
Beispiel #15
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            //Add start effect
            pm.fx.PlayEffectGroupActorToActor(70614, pp.User, pp.User);

            IList<Actor> targets = pp.User.World.GetActorsInRange(pp.User.Position, 9f);

            foreach (Actor target in targets)
            {
                pm.fx.PlayEffectGroupActorToActor(70804, pp.Target, pp.Target);
                pm.DoDamage(target, 20f, FloatingNumberMessage.FloatType.Red);
                pm.SendDWordTick(pp.User.InGameClient);
            }

            pm.userRessource(pp.User, 20);

            yield return 1000;

            foreach (Actor target in targets)
            {
                pm.DoDamage(target, 20f, FloatingNumberMessage.FloatType.White);
                pm.SendDWordTick(pp.User.InGameClient);
            }

            pm.flushAll(pp.User);

            yield return 1000;

            foreach (Actor target in targets)
            {
                pm.DoDamage(target, 20f, FloatingNumberMessage.FloatType.Red);
                pm.SendDWordTick(pp.User.InGameClient);
            }

            pm.flushAll(pp.User);

            yield break;
        }
Beispiel #16
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            //Add start effect
            pm.fx.PlayEffectGroupActorToActor(18705, pp.User, pp.User);

            IList<Actor> targets = pp.User.World.GetActorsInRange(pp.User.Position, 25f);

            foreach (Actor actor in targets)
            {
                //Must not be other player either will need fix
                if (actor.DynamicID != pp.User.DynamicID)
                    actor.setAttribute(GameAttribute.Damage_Reduction_Current, new GameAttributeValue(0.5f));
            }

            //Regenerate ressource
            pm.userRessource(pp.User, 20);

            //Flush all player buffer
            pm.flushAll(pp.User);

            yield return 15000;

            //Remove debuff after 15 sec
            foreach (Actor actor in targets)
            {
                actor.setAttribute(GameAttribute.Damage_Reduction_Current, new GameAttributeValue(0f));
            }

            pm.flushAll(pp.User);

        }
Beispiel #17
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            IList<Actor> inlineMonster = pm.FindActorsInFront(pp.User, pp.TargetPosition.Position, 20, pm.fx.getDistance(pp.User.Position, pp.TargetPosition.Position));

            //Add start effect
            pm.fx.PlayEffectGroupActorToActor(18680, pp.User, pp.User);

            //Play charge anim
            pm.fx.PlayAnimation(pp.User, 116118);

            //Move targe
            pm.fx.MoveActorNormal(pp.User, pp.User, pp.TargetPosition.Position, pm.fx.getRadian(pp.TargetPosition.Position, pp.User.Position));
            
            //Play end effect
            pm.fx.PlayEffectGroupActorToActor(18679, pp.User, pp.User);

            foreach (Actor target in inlineMonster)
            {
                pm.DoDamage(target, 20f, FloatingNumberMessage.FloatType.White);
            }

            foreach (Actor target in pp.User.World.GetActorsInRange(pp.TargetPosition.Position, 10f))
            {
                pm.DoDamage(target, 20f, FloatingNumberMessage.FloatType.White);
                pm.fx.DoKnockback(pp.User, target, 2);
            }

            //Play charge anim
            pm.fx.PlayAnimation(pp.User, 116117);

            //Regenerate ressource
            pm.generateRessource(pp.User, 15);

            //Set skill on Colldown
            pp.User.setAttribute(GameAttribute.Power_Disabled, new GameAttributeValue(true), Skills.Skills.Barbarian.FuryGenerators.FuriousCharge);

            pm.SendDWordTick(pp.User.InGameClient);
            pm.flushAll(pp.User);

            yield return 15000;

            //Set skill on Colldown
            pp.User.setAttribute(GameAttribute.Power_Disabled, new GameAttributeValue(true), Skills.Skills.Barbarian.FuryGenerators.FuriousCharge);
            pm.SendDWordTick(pp.User.InGameClient);
            pm.flushAll(pp.User);
        }
Beispiel #18
0
        public TrayAccess()
        {
            // BUILD UI
            Tray = new NotifyIcon
            {
                Text = System.Windows.Forms.Application.ProductName + "!",                                                   // Tooltip so people know WTF I am.
                Icon = System.Drawing.Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetExecutingAssembly().Location) // is this really the best way?
            };
            Tray.BalloonTipText = Tray.Text;
            Tray.Disposed      += (object sender, EventArgs e) => { Tray = null; };

            if (Taskmaster.Trace)
            {
                Log.Verbose("Generating tray icon.");
            }

            ms = new ContextMenuStrip();
            menu_windowopen = new ToolStripMenuItem("Open", null, RestoreMainWindow);
            menu_rescan     = new ToolStripMenuItem("Rescan", null, (o, s) =>
            {
                menu_rescan.Enabled = false;
                RescanRequest?.Invoke(this, null);
                menu_rescan.Enabled = true;
            });
            menu_configuration = new ToolStripMenuItem("Configuration");
            var menu_configuration_autopower = new ToolStripMenuItem("Power auto-adjust", null, ShowPowerConfig);
            var menu_configuration_folder    = new ToolStripMenuItem("Open in file manager", null, ShowConfigRequest);

            menu_configuration.DropDownItems.Add(menu_configuration_autopower);
            menu_configuration.DropDownItems.Add(new ToolStripSeparator());
            menu_configuration.DropDownItems.Add(menu_configuration_folder);

            menu_runatstart_reg = new ToolStripMenuItem("Run at start (RegRun)", null, RunAtStartMenuClick_Reg);
            menu_runatstart_sch = new ToolStripMenuItem("Schedule at login (Admin)", null, RunAtStartMenuClick_Sch);

            bool runatstartreg = RunAtStartRegRun(enabled: false, dryrun: true);
            bool runatstartsch = RunAtStartScheduler(enabled: false, dryrun: true);

            menu_runatstart_reg.Checked = runatstartreg;
            menu_runatstart_sch.Checked = runatstartsch;
            Log.Information("<Core> Run-at-start – Registry: {Enabled}, Scheduler: {Found}",
                            (runatstartreg ? "Enabled" : "Disabled"), (runatstartsch ? "Found" : "Missing"));

            if (Taskmaster.PowerManagerEnabled)
            {
                power_auto              = new ToolStripMenuItem("Auto", null, SetAutoPower);
                power_auto.Checked      = false;
                power_auto.CheckOnClick = true;
                power_auto.Enabled      = false;

                power_highperf = new ToolStripMenuItem(PowerManager.GetModeName(PowerInfo.PowerMode.HighPerformance), null, (s, e) => { ResetPower(PowerInfo.PowerMode.HighPerformance); });
                power_balanced = new ToolStripMenuItem(PowerManager.GetModeName(PowerInfo.PowerMode.Balanced), null, (s, e) => { ResetPower(PowerInfo.PowerMode.Balanced); });
                power_saving   = new ToolStripMenuItem(PowerManager.GetModeName(PowerInfo.PowerMode.PowerSaver), null, (s, e) => { ResetPower(PowerInfo.PowerMode.PowerSaver); });
                power_manual   = new ToolStripMenuItem("Manual override", null, SetManualPower)
                {
                    CheckOnClick = true
                };
            }

            ToolStripMenuItem menu_restart = null;

            menu_restart = new ToolStripMenuItem("Restart", null, (o, s) =>
            {
                menu_restart.Enabled = false;
                Taskmaster.ConfirmExit(restart: true);
                menu_restart.Enabled = true;
            });
            menu_exit = new ToolStripMenuItem("Exit", null, (o, s) =>
            {
                menu_restart.Enabled = false;
                Taskmaster.ConfirmExit(restart: false);
                menu_restart.Enabled = true;
            });
            ms.Items.Add(menu_windowopen);
            ms.Items.Add(new ToolStripSeparator());
            ms.Items.Add(menu_rescan);
            ms.Items.Add(new ToolStripSeparator());
            ms.Items.Add(menu_configuration);
            ms.Items.Add(menu_runatstart_reg);
            ms.Items.Add(menu_runatstart_sch);
            if (Taskmaster.PowerManagerEnabled)
            {
                ms.Items.Add(new ToolStripSeparator());
                var plab = new ToolStripLabel("--- Power Plan ---");
                plab.ForeColor = System.Drawing.SystemColors.GrayText;
                ms.Items.Add(plab);
                ms.Items.Add(power_auto);
                ms.Items.Add(power_highperf);
                ms.Items.Add(power_balanced);
                ms.Items.Add(power_saving);
                ms.Items.Add(power_manual);
            }

            ms.Items.Add(new ToolStripSeparator());
            ms.Items.Add(menu_restart);
            ms.Items.Add(menu_exit);
            Tray.ContextMenuStrip = ms;

            if (Taskmaster.Trace)
            {
                Log.Verbose("Tray menu ready");
            }

            if (!RegisterExplorerExit())
            {
                throw new InitFailure("<Tray> Explorer registeriong failed; not running?");
            }

            ms.Enabled = false;

            // Tray.Click += RestoreMainWindow;
            Tray.MouseClick += ShowWindow;

            // TODO: Toast Notifications

            if (Tray.Icon == null)
            {
                Log.Fatal("<Tray> Icon missing, setting system default.");
                Tray.Icon = System.Drawing.SystemIcons.Application;
            }

            Microsoft.Win32.SystemEvents.SessionEnding += SessionEndingEvent;             // depends on messagepump

            if (Taskmaster.Trace)
            {
                Log.Verbose("<Tray> Initialized");
            }
        }
Beispiel #19
0
        public void GetSystemPowerInformationTest()
        {
            var res = PowerManager.GetSystemPowerInformation();

            res.DumpFields();
        }
Beispiel #20
0
        /// <summary>
        /// This will find a safe place to stand in both Kiting and Avoidance situations
        /// </summary>
        /// <param name="isStuck"></param>
        /// <param name="stuckAttempts"></param>
        /// <param name="dangerPoint"></param>
        /// <param name="shouldKite"></param>
        /// <param name="avoidDeath"></param>
        /// <returns></returns>
        internal static Vector3 FindSafeZone(bool isStuck, int stuckAttempts, Vector3 dangerPoint, bool shouldKite = false, IEnumerable <TrinityCacheObject> monsterList = null, bool avoidDeath = false)
        {
            // Handle The Butcher's Lair
            var butcherFloorPanels = CacheData.TimeBoundAvoidance.Where(aoe => DataDictionary.ButcherFloorPanels.Contains(aoe.ActorSNO)).ToList();

            if (butcherFloorPanels.Any())
            {
                foreach (var safePoint in DataDictionary.ButcherPanelPositions.OrderBy(p => p.Value.Distance2DSqr(Trinity.Player.Position)))
                {
                    // Floor panel with fire animation was added to cache
                    if (butcherFloorPanels.Any(p => p.ActorSNO == safePoint.Key && p.Position.Distance2DSqr(safePoint.Value) <= 15f * 15f))
                    {
                        continue;
                    }

                    // floor panel position is in Butcher animation avoidance (charging, chain hook)
                    if (CacheData.TimeBoundAvoidance.Any(aoe => aoe.Position.Distance2D(safePoint.Value) < aoe.Radius))
                    {
                        continue;
                    }

                    // no avoidance object in cache, this point is safe
                    return(safePoint.Value);
                }

                // Don't fall back to regular avoidance
                return(Vector3.Zero);
            }

            if (!isStuck)
            {
                if (shouldKite && DateTime.UtcNow.Subtract(lastFoundSafeSpot).TotalMilliseconds <= 1500 && lastSafeZonePosition != Vector3.Zero)
                {
                    return(lastSafeZonePosition);
                }
                if (DateTime.UtcNow.Subtract(lastFoundSafeSpot).TotalMilliseconds <= 800 && lastSafeZonePosition != Vector3.Zero)
                {
                    return(lastSafeZonePosition);
                }
                hasEmergencyTeleportUp = (!Player.IsIncapacitated && (
                                              // Leap is available
                                              (CombatBase.CanCast(SNOPower.Barbarian_Leap)) ||
                                              // Whirlwind is available
                                              (CombatBase.CanCast(SNOPower.Barbarian_Whirlwind) &&
                                               ((Player.PrimaryResource >= 10 && !CombatBase.IsWaitingForSpecial) || Player.PrimaryResource >= Trinity.MinEnergyReserve)) ||
                                              // Tempest rush is available
                                              (CombatBase.CanCast(SNOPower.Monk_TempestRush) &&
                                               ((Player.PrimaryResource >= 20 && !CombatBase.IsWaitingForSpecial) || Player.PrimaryResource >= Trinity.MinEnergyReserve)) ||
                                              // Teleport is available
                                              (CombatBase.CanCast(SNOPower.Wizard_Teleport) && Player.PrimaryResource >= 15) ||
                                              // Archon Teleport is available
                                              (CombatBase.CanCast(SNOPower.Wizard_Archon_Teleport))
                                              ));
                // Wizards can look for bee stings in range and try a wave of force to dispel them
                if (!shouldKite && Player.ActorClass == ActorClass.Wizard && CombatBase.CanCast(SNOPower.Wizard_WaveOfForce) &&
                    !Player.IsIncapacitated && CacheData.TimeBoundAvoidance.Count(u => u.ActorSNO == 5212 && u.Position.Distance(Player.Position) <= 15f) >= 2 &&
                    (
                        //HotbarSkills.PassiveSkills.Contains(SNOPower.Wizard_Passive_CriticalMass) ||
                        PowerManager.CanCast(SNOPower.Wizard_WaveOfForce)))
                {
                    ZetaDia.Me.UsePower(SNOPower.Wizard_WaveOfForce, Vector3.Zero, Player.WorldDynamicID, -1);
                }
            }


            float highestWeight = 0f;

            if (monsterList == null)
            {
                monsterList = new List <TrinityCacheObject>();
            }

            //Vector3 vBestLocation = FindSafeZone(dangerPoint, shouldKite, isStuck, monsterList, avoidDeath);
            Vector3 vBestLocation = MainFindSafeZone(dangerPoint, shouldKite, isStuck, monsterList, avoidDeath);

            highestWeight = 1;

            // Loop through distance-range steps
            if (highestWeight <= 0)
            {
                return(vBestLocation);
            }

            lastFoundSafeSpot    = DateTime.UtcNow;
            lastSafeZonePosition = vBestLocation;
            return(vBestLocation);
        }
Beispiel #21
0
        public override void OnReceive(Context context, Intent intent)
        {
            var powerManager = PowerManager.FromContext(context);
            var wakeLock     = powerManager.NewWakeLock(WakeLockFlags.Partial, WakeLockTag);

            wakeLock.Acquire();

            var dataStore = ServiceLocator.Instance.Get <IVplanDataStore>();

            Task.Run(async() =>
            {
                try {
                    var diff = await dataStore.Refresh();

                    if (diff.NewBookmarkedChanges.Any() || diff.NewNewSchoolClassBookmarks.Any())
                    {
                        string text;
                        if (diff.NewBookmarkedChanges.Any())
                        {
                            text = diff.NewBookmarkedChanges.Count() + " neue Einträge";
                        }
                        else
                        {
                            text = diff.NewNewSchoolClassBookmarks.Count() + " neue Klassen";
                        }

                        var notificationManager = NotificationManager.FromContext(context);

                        if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
                        {
                            var channel = new NotificationChannel(ChannelId, "Vertretungsplan", NotificationImportance.High);
                            channel.EnableLights(true);
                            channel.EnableVibration(true);
                            notificationManager.CreateNotificationChannel(channel);
                        }

                        var resultIntent = new Intent(context, typeof(MainActivity));
                        var stackBuilder = Android.Support.V4.App.TaskStackBuilder.Create(context);
                        stackBuilder.AddNextIntentWithParentStack(resultIntent);
                        var pendingIntent = stackBuilder.GetPendingIntent(0, 0);

                        var builder = new NotificationCompat.Builder(context, ChannelId)
                                      .SetContentTitle("Neuer Vertretungsplan verfügbar")
                                      .SetContentText(text)
                                      .SetSmallIcon(Resource.Mipmap.Icon)
                                      .SetPriority(NotificationCompat.PriorityMax)
                                      .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                                      .SetDefaults(NotificationCompat.DefaultVibrate | NotificationCompat.DefaultLights)
                                      .SetContentIntent(pendingIntent)
                                      .SetAutoCancel(true);
                        notificationManager.Notify(NotificationId, builder.Build());
                    }
                }
                catch (Exception e)
                {
                }
                finally
                {
                    wakeLock.Release();
                }
            });
        }
Beispiel #22
0
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.Window.RequestFeature(WindowFeatures.ActionBar);
            base.OnCreate(bundle);

            mContext = this;
            Instance = this;

            try
            {
                var width   = Resources.DisplayMetrics.WidthPixels;
                var height  = Resources.DisplayMetrics.HeightPixels;
                var density = Resources.DisplayMetrics.Density; //屏幕密度
                App.ScreenWidth  = width / density;             //屏幕宽度
                App.ScreenHeight = height / density;            //屏幕高度
            }
            catch (System.Exception) { }

            //返回此活动是否为任务的根
            if (!IsTaskRoot)
            {
                Finish();
                return;
            }

            PowerManager pm = (PowerManager)GetSystemService(Context.PowerService);

            isPause = pm.IsScreenOn;
            if (handler == null)
            {
                handler = new Handler();
            }


            //注册广播,屏幕点亮状态监听,用于单独控制音乐播放
            if (screenStateReceiver == null)
            {
                screenStateReceiver = new ScreenStateReceiver();
                var intentFilter = new IntentFilter();
                intentFilter.AddAction("_ACTION_SCREEN_OFF"); //熄屏
                intentFilter.AddAction("_ACTION_SCREEN_ON");  //点亮
                intentFilter.AddAction("_ACTION_BACKGROUND"); //后台
                intentFilter.AddAction("_ACTION_FOREGROUND"); //前台
                RegisterReceiver(screenStateReceiver, intentFilter);
            }


            Window.AddFlags(WindowManagerFlags.KeepScreenOn);
            if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
            {
                Window.ClearFlags(WindowManagerFlags.TranslucentStatus);
                Window.AddFlags(WindowManagerFlags.TranslucentNavigation);
                TranslucentStatubar.Immersive(Window);
                Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
                Window.ClearFlags(WindowManagerFlags.Fullscreen);
            }

            //在andrioid m之后,必须在运行时请求权限
            GetPersimmions();

            //图片裁切
            BitImageEditor.Droid.Platform.Init(this, bundle);

            //初始 Popup
            Popup.Init(this);

            //版本更新配置
            AutoUpdate.Init(this, "com.dcms.clientv3.fileprovider");

            //初始 Xamarin.Forms 实验性标志
            Forms.SetFlags("Shell_Experimental",
                           "SwipeView_Experimental",
                           "CarouselView_Experimental",
                           "RadioButton_Experimental",
                           "IndicatorView_Experimental",
                           "Expander_Experimental",
                           "Visual_Experimental",
                           "CollectionView_Experimental",
                           "FastRenderers_Experimental");

            #region //初始 FFImageLoading

            CachedImageRenderer.Init(true);
            CachedImageRenderer.InitImageViewHandler();
            ImageCircleRenderer.Init();
            var config = new FFImageLoading.Config.Configuration()
            {
                VerboseLogging                 = false,
                VerbosePerformanceLogging      = false,
                VerboseMemoryCacheLogging      = false,
                VerboseLoadingCancelledLogging = false,
            };
            ImageService.Instance.Initialize(config);

            #endregion

            Forms.Init(this, bundle);

            //初始 对话框组件
            UserDialogs.Init(this);

            //初始 ZXing
            ZXingPlatform.Platform.Init();

            LoadApplication(new App(new AndroidInitializer()));
        }
Beispiel #23
0
 public ShowWholeMap(ActorInitializer init, ShowWholeMapInfo info) : base(info)
 {
     self      = init.Self;
     this.info = info;
     powerMgr  = self.Owner.PlayerActor.Trait <PowerManager>();
 }
Beispiel #24
0
 void Awake()
 {
     _instance = this;
 }
Beispiel #25
0
 private void App_OnExit(object sender, ExitEventArgs e)
 {
     DisposeMutex();
     PowerManager?.Dispose();
     HotKeyManager?.Dispose();
 }
Beispiel #26
0
        public void GetGetLastSleepTimeTest()
        {
            var res = PowerManager.GetLastSleepTime();

            res.DumpValue();
        }
Beispiel #27
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            /*if (pp.Message.Field5 == 0)
                fx.PlayEffectGroupActorToActor(18987, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));
            else if (pp.Message.Field5 == 1)
                fx.PlayEffectGroupActorToActor(18988, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));
            else if (pp.Message.Field5 == 2)
                fx.PlayEffectGroupActorToActor(96519, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));

            if (pp.Message.Field5 != 2)
            {
                if (fx.WillHitMeleeTarget(pp.User, pp.Target))
                {
                    fx.PlayHitEffect(6, pp.User, pp.Target);
                    fx.DoDamage(pp.User, pp.Target, 25f, 0);
                }
            }
            else
            {
                IList<Actor> hits = fx.FindActorsInRadius(pp.User.Position, 10);
                foreach (Actor hit in hits)
                {
                    fx.PlayHitEffect(6, pp.User, hit);
                    fx.DoDamage(pp.User, hit, 25f, 0);
                }
            }*/
            yield break;
        }
Beispiel #28
0
 public ProductionItem(ProductionQueue queue, string item, int time, int cost, PowerManager pm, Action onComplete)
 {
     if (time <= 0)
     {
         time = 1;
     }
     Item          = item;
     RemainingTime = TotalTime = time;
     RemainingCost = TotalCost = cost;
     OnComplete    = onComplete;
     Queue         = queue;
     this.pm       = pm;
     //Log.Write("debug", "new ProductionItem: {0} time={1} cost={2}", item, time, cost);
 }
Beispiel #29
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            /*yield return 350;
            fx.PlayEffectGroupActorToActor(19356, pp.User, fx.SpawnTempProxy(pp.User, pp.User.Position));

            IList<Actor> hits = fx.FindActorsInRadius(pp.User.Position, 20);
            foreach (Actor actor in hits)
            {
                fx.DoKnockback(pp.User, actor, 10f);
                fx.DoDamage(pp.User, actor, 20, 0);
            }*/
            yield break;
        }
 public PowerManagerCom()
 {
     _powerManager = new PowerManager();
 }
Beispiel #31
0
 public SelfConstructingProductionItem(ProductionQueue queue, Actor actor, int cost, PowerManager pm, Action onComplete)
     : base(queue, actor.Info.Name, cost, pm, onComplete)
 {
     Actor = actor;
 }
Beispiel #32
0
 public BasicBatteryBlock() : base("Basic Battery", false)
 {
     this.IsPlaceable = true;
     PowerManager.ValidateBlockID(this.TypeName, new BasicBattery());
 }
Beispiel #33
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            yield return 200; 

            //Add start effect
            pm.fx.PlayEffectGroupActorToActor(158731, pp.User, pp.User);

            IList<Actor> hits = pm.FindActorsInFront(pp.User, pp.Target.Position, 180f, 15f);
            foreach (Actor actor in hits)
            {
                //Must not be other player either will need fix
                if (actor.DynamicID != pp.User.DynamicID)
                {
                    //15% crit chance
                    if (pm._rand.Next(0, 100) < 15) {
                        pm.DoDamage(actor, 40, FloatingNumberMessage.FloatType.White);
                    } else {
                        pm.DoDamage(actor, 40, FloatingNumberMessage.FloatType.WhiteCritical);
                    }
                }
                pm.SendDWordTick(pp.User.InGameClient);
            }

            //Regenerate ressource
            pm.userRessource(pp.User, 20);

            //Flush all player buffer
            pm.flushAll(pp.User);
        }
 public void Initialize()
 {
     powerManager = new PowerManager();
 }
Beispiel #35
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager pm)
        {
            //Add start effect
            pm.fx.PlayEffectGroupActorToActor(18664, pp.User, pp.User);

            //Add crit
            //pp.User.setAttribute(GameAttribute.Crit_Percent_Cap, new GameAttributeValue(pp.User.Attributes.GetAttributeValue(GameAttribute.Crit_Percent_Cap, null).Value + 4));

            //Add dmg
            //pp.User.setAttribute(GameAttribute.Crit_Percent_Cap, new GameAttributeValue(pp.User.Attributes.GetAttributeValue(GameAttribute.Crit_Percent_Cap, null).Value + 4));

            //Regenerate ressource
            pm.userRessource(pp.User, 20);

            //Flush all player buffer
            pm.flushAll(pp.User);

            yield break;
        }
        public override void OnCreate()
        {
            base.OnCreate();

            this.disposable = new CompositeDisposable();

            this.wakeLock = PowerManager.FromContext(this).NewWakeLock(WakeLockFlags.Partial, "espera-wake-lock");
            this.wifiLock = WifiManager.FromContext(this).CreateWifiLock(WifiMode.Full, "espera-wifi-lock");

            NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected).Where(x => x)
            .Subscribe(x => this.NotifyNetworkMessengerConnected())
            .DisposeWith(this.disposable);

            NetworkMessenger.Instance.Disconnected.Subscribe(x => this.NotifyNetworkMessengerDisconnected())
            .DisposeWith(this.disposable);

            var userSettings = Locator.Current.GetService <UserSettings>();

            NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected).SampleAndCombineLatest(userSettings
                                                                                              .WhenAnyValue(x => x.Port).DistinctUntilChanged(), (connected, _) => connected)
            .Where(x => x)
            .Subscribe(x => NetworkMessenger.Instance.Disconnect())
            .DisposeWith(this.disposable);

            AndroidVolumeRequests.Instance.VolumeDown.CombineLatest(NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected),
                                                                    NetworkMessenger.Instance.WhenAnyValue(x => x.AccessPermission),
                                                                    (_, connected, permission) => connected && permission == NetworkAccessPermission.Admin)
            .Where(x => x)
            .SelectMany(_ => NetworkMessenger.Instance.GetVolume().ToObservable().SwallowNetworkExceptions())
            .Where(currentVolume => currentVolume > 0)
            .Select(currentVolume => Math.Max(currentVolume - 0.1f, 0))
            .Select(volume => NetworkMessenger.Instance.SetVolume(volume).ToObservable().SwallowNetworkExceptions())
            .Concat()
            .Subscribe()
            .DisposeWith(this.disposable);

            AndroidVolumeRequests.Instance.VolumeUp.CombineLatest(NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected),
                                                                  NetworkMessenger.Instance.WhenAnyValue(x => x.AccessPermission),
                                                                  (_, connected, permission) => connected && permission == NetworkAccessPermission.Admin)
            .Where(x => x)
            .SelectMany(_ => NetworkMessenger.Instance.GetVolume().ToObservable().SwallowNetworkExceptions())
            .Where(currentVolume => currentVolume < 1)
            .Select(currentVolume => Math.Min(currentVolume + 0.1f, 1))
            .Select(volume => NetworkMessenger.Instance.SetVolume(volume).ToObservable().SwallowNetworkExceptions())
            .Concat()
            .Subscribe()
            .DisposeWith(this.disposable);

            var androidSettings = Locator.Current.GetService <AndroidSettings>();

            NetworkMessenger.Instance.WhenAnyValue(x => x.IsConnected).CombineLatest(androidSettings.WhenAnyValue(x => x.SaveEnergy), (connected, saveEnergy) =>
            {
                if (connected && !saveEnergy)
                {
                    this.wakeLock.Acquire();
                    this.wifiLock.Acquire();
                }

                else if (!connected)
                {
                    this.ReleaseWakeLocks();
                }

                return(Unit.Default);
            })
            .Subscribe()
            .DisposeWith(this.disposable);
        }
Beispiel #37
0
 public void SleepTest()
 {
     PowerManager.Sleep();
 }
Beispiel #38
0
 public InfiltrateForPowerOutage(Actor self, InfiltrateForPowerOutageInfo info)
 {
     this.info   = info;
     playerPower = self.Owner.PlayerActor.Trait <PowerManager>();
 }
Beispiel #39
0
 public void RemoveHibernationFileTest()
 {
     PowerManager.RemoveHibernationFile();
 }
Beispiel #40
0
 void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
 {
     playerPower = self.Owner.PlayerActor.Trait <PowerManager>();
 }
Beispiel #41
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            // TODO: make buffs disappear so skill can be implemented
            //if (pp.Message.Field5 == 0)
            //    fx.PlayEffectGroupActorToActor(73953, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));
            //else if (pp.Message.Field5 == 1)
            //    fx.PlayEffectGroupActorToActor(73953, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));
            //else if (pp.Message.Field5 == 2)
            //    fx.PlayEffectGroupActorToActor(73953, pp.User, fx.SpawnTempProxy(pp.User, pp.TargetPosition));

            yield break;
        }
 void Start()
 {
     // Get Objects
     scoreManager = GameObject.FindObjectOfType <ScoreManager>();
     powerManager = GameObject.FindObjectOfType <PowerManager>();
 }
Beispiel #43
0
 public PowerBarWidget(World world)
 {
     pm = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
     tooltipContainer = Lazy.New(() =>
         Widget.RootWidget.GetWidget<TooltipContainerWidget>(TooltipContainer));
 }
Beispiel #44
0
 public BlankScreen(LayoutSettings layoutSettings, PowerManager powerManager)
 {
     _powerManager  = powerManager;
     BackgroundForm = new BackgroundForm(layoutSettings);
 }
Beispiel #45
0
 static Color GetPowerColor(PowerManager pm)
 {
     if (pm.PowerState == PowerState.Critical) return Color.Red;
     if (pm.PowerState == PowerState.Low) return Color.Orange;
     return Color.LimeGreen;
 }
Beispiel #46
0
        public void GetSystemBatteryStateTest()
        {
            var res = PowerManager.GetSystemBatteryState();

            res.DumpFields();
        }
Beispiel #47
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            /*fx.RegisterChannelingPower(pp.User);

            // TODO: hit effects
            Effect pid = fx.GetChanneledProxy(pp.User, 0, pp.TargetPosition);
            if (! pp.UserIsChanneling)
            {
                fx.PlayRopeEffectActorToActor(30888, pp.User, pid);
            }

            // TODO: beam damage
            //DoDamage(user, target, 12, 0);*/
            yield break;
        }
Beispiel #48
0
 public void PowerManagementRegistration(Window window, ISystemState systemState)
 {
     SystemState = systemState;
     PowerManager.RegisterMonitorStatusChange(window);
     HwndSource.FromHwnd(new WindowInteropHelper(window).Handle).AddHook(WndProc);
 }
Beispiel #49
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
           /* fx.RegisterChannelingPower(pp.User, 200);

            if (!pp.UserIsChanneling)
            {
                Actor targetProxy = fx.GetChanneledProxy(pp.User, 0, pp.TargetPosition);
                Actor userProxy = fx.GetChanneledProxy(pp.User, 1, pp.User.Position);
                fx.ActorLookAt(userProxy, pp.TargetPosition);
                fx.PlayEffectGroupActorToActor(97385, userProxy, userProxy);
                fx.PlayEffectGroupActorToActor(134442, userProxy, targetProxy);
            }

            if (!pp.ThrottledCast)
            {
                yield return 800;
                // update proxy target location laggy
                if (fx.ChannelingCanceled(pp.User))
                    fx.GetChanneledProxy(pp.User, 0, pp.TargetPosition);

                fx.SpawnEffect(pp.User, 97821, pp.TargetPosition);
                fx.DoDamage(pp.User, fx.FindActorsInRadius(pp.TargetPosition, 6f), 20, 0);
            }*/
            yield break;
        }
Beispiel #50
0
 public void HibernateTest()
 {
     PowerManager.Hibernate();
 }
Beispiel #51
0
 public PowerBarWidget(World world)
 {
     pm = world.LocalPlayer.PlayerActor.Trait <PowerManager>();
     tooltipContainer = Lazy.New(() =>
                                 Ui.Root.GetWidget <TooltipContainerWidget>(TooltipContainer));
 }
    public void Redraw()
    {
        if (Player.SelectedUnit != null && Player.SelectedUnit is Tower)
        {
            Tower        tower = (Tower)Player.SelectedUnit;
            PowerManager power = tower._powerManager;
            // Needs history data still.
            // Currently, it still will call IO even if it doesn't need to, with the value being unchanged. Hence wasted effort.
            // first, check how expensive set and get are
            // Then experiment to see how expensive it is to just store last tick's data, to compare with.
            {
                // Highlight the buttons corresponding to which ability is active.
                bool shortSelected  = (InputManager.Active.MouseState == InputManager.MOUSE_STATE.ADD_SHORT_LINK);
                bool longSelected   = (InputManager.Active.MouseState == InputManager.MOUSE_STATE.ADD_LONG_LINK);
                bool removeSelected = (InputManager.Active.MouseState == InputManager.MOUSE_STATE.REMOVE_LINK);

                if (shortSelected || longSelected || removeSelected)
                {
                    if (shortSelected)
                    {
                        TextShortLink.color = COLOR_SELECTED;
                    }
                    else
                    {
                        TextShortLink.color = COLOR_NOT_SELECTED;
                    }
                    if (longSelected)
                    {
                        TextLongLink.color = COLOR_SELECTED;
                    }
                    else
                    {
                        TextLongLink.color = COLOR_NOT_SELECTED;
                    }
                    if (removeSelected)
                    {
                        TextRemoveLink.color = COLOR_SELECTED;
                    }
                    else
                    {
                        TextRemoveLink.color = COLOR_NOT_SELECTED;
                    }
                }
                else
                {
                    TextShortLink.color  = COLOR_NORMAL;
                    TextLongLink.color   = COLOR_NORMAL;
                    TextRemoveLink.color = COLOR_NORMAL;
                }
            }

            if (tower._prototype._upgradesTo != null)
            {
                int price = tower._prototype._upgradesTo._price - tower._prototype._price;
                TextUpgrade.text = "Upgrade (" + price + ") (Q)";

                if (Player.Active._gold >= price)
                {
                    TextUpgrade.color = COLOR_NORMAL;
                }
                else
                {
                    TextUpgrade.color = COLOR_NOT_SELECTED;
                }
            }
            else
            {
                TextUpgrade.text = "----";
            }

            TextSell.text  = "Sell (" + tower._prototype._price + ") (W)";
            TextSell.color = COLOR_NORMAL;

            if (true) // Is not consumer.
            {
                TextShortLink.text = "Short Link (A)";
            }
            if (true) // Is Transfer Tower.
            {
                TextLongLink.text = "Long Link (S)";
            }
            if (true) // Is not Consumer
            {
                TextRemoveLink.text = "Remove Link (D)";
            }
        }
        else
        {
            TextUpgrade.color = COLOR_NOT_SELECTED;

            TextSell.color = COLOR_NOT_SELECTED;

            TextShortLink.color  = COLOR_NOT_SELECTED;
            TextLongLink.color   = COLOR_NOT_SELECTED;
            TextRemoveLink.color = COLOR_NOT_SELECTED;

            TextUpgrade.text    = "----";
            TextSell.text       = "----";
            TextShortLink.text  = "----";
            TextLongLink.text   = "----";
            TextRemoveLink.text = "----";
        }
    }
Beispiel #53
0
        public override IEnumerable<int> Run(PowerParameters pp, PowerManager fx)
        {
            // HACK: made up demonic meteor spell, not real hydra
            /*fx.SpawnEffect(pp.User, 185366, pp.TargetPosition);
            yield return 400;

            IList<Actor> hits = fx.FindActorsInRadius(pp.TargetPosition, 10f);
            fx.DoDamage(pp.User, hits, 100f, 0);*/
            yield break;
        }
Beispiel #54
0
 protected override void Created(Actor self)
 {
     playerPower = self.Owner.PlayerActor.TraitOrDefault <PowerManager>();
 }
Beispiel #55
0
    // Use this for initialization
    void Start()
    {
        player = GetComponent<Player>();
        m_power = GetComponent<PowerManager>();
        m_tiles = GameObject.FindGameObjectWithTag("GameController").GetComponent<TileManager>();
        m_units = GameObject.FindGameObjectWithTag("GameController").GetComponent<UnitManager>();
        m_hud = GameObject.FindGameObjectWithTag("GameController").GetComponent<HUDManager>();

        tilesInPower = new List<Tile>();
        unitsInPower = new List<Unit>();
    }
Beispiel #56
0
        private void StartForeground()
        {
            Notification notification = null;

            NotificationCompat.Builder notificationBuilder = null;

            Intent intentNotif = new Intent(this, typeof(MainActivity));

            intentNotif.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
            PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, intentNotif, 0);

            int sdk = (int)Android.OS.Build.VERSION.SdkInt;

            if (sdk >= 26)
            {
                NotificationChannel chan1 = new NotificationChannel(
                    "dkpositiontracking",
                    "service",
                    NotificationImportance.Default);

                chan1.LightColor           = Color.Transparent;
                chan1.LockscreenVisibility = NotificationVisibility.Secret;
                chan1.Importance           = NotificationImportance.Low;

                var notificationManager = NotificationManager.FromContext(Application.Context);
                notificationManager.CreateNotificationChannel(chan1);

                notificationBuilder = new NotificationCompat.Builder(Application.Context, "dkpositiontracking");
            }
            else
            {
                notificationBuilder = new NotificationCompat.Builder(Application.Context);
            }

            notificationBuilder.SetSmallIcon(Resource.Drawable.ic_stat_onesignal_default)
            .SetContentTitle(Constants.APPTITLE)
            .SetContentText("GPS Location tracking is active.")
            .SetContentIntent(pendingIntent);

            if ((int)Android.OS.Build.VERSION.SdkInt >= 19)
            {
                notificationBuilder.SetLargeIcon(BitmapFactory.DecodeResource(Application.Context.Resources, Resource.Drawable.ic_notification));
            }

            notificationBuilder.SetPriority(NotificationCompat.PriorityDefault);

            if ((int)Android.OS.Build.VERSION.SdkInt >= 16)
            {
                notification = notificationBuilder.Build();
            }
            else
            {
                notification = notificationBuilder.Notification;
            }

            StartForeground(NotificationId, notification);

            PowerManager pm = (PowerManager)GetSystemService(Context.PowerService);

            wl = pm.NewWakeLock(WakeLockFlags.Partial, "PositionTrackingLock");
            wl.Acquire();
        }
 public PowerBarWidget( [ObjectCreator.Param] World world )
 {
     pm = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
     tooltipContainer = new Lazy<TooltipContainerWidget>(() =>
         Widget.RootWidget.GetWidget<TooltipContainerWidget>(TooltipContainer));
 }
Beispiel #58
0
 public PlayerPowerProperties(ScriptContext context, Player player)
     : base(context, player)
 {
     pm = player.PlayerActor.Trait <PowerManager>();
 }
Beispiel #59
0
	void Awake(){
		_instance = this;
	}
        public override RunStatus Tick(object context)
        {
            if (!Hotbar.HasPower(Power))
            {
                return(RunStatus.Failure);
            }

            if (ContextChangeHandler != null && context == null)
            {
                CombatTargeting.Instance.Pulse();
                context = ContextChangeHandler(null);
            }
            if (context == null)
            {
                return(RunStatus.Failure);
            }

            bool minReqs = ExtraCondition == null || ExtraCondition(context);

            if (!minReqs)
            {
                return(RunStatus.Failure);
            }

            if (!_isSpamming)
            {
                using (new PerformanceLogger(BelphegorSettings.Instance.Debug.IsDebugCanCastLogging, "CanCast"))
                {
                    bool canCast = PowerManager.CanCast(Power);
                    if (!canCast)
                    {
                        return(RunStatus.Failure);
                    }
                }
            }

            Vector3 clickPosition = PositionRetriever != null?PositionRetriever(context) : Vector3.Zero;

            int worldId = DynamicWorldIdRetriever != null?DynamicWorldIdRetriever(context) : 0;

            int acdGuid = TargetGuidRetriever != null?TargetGuidRetriever(context) : -1;

            bool keepSpamming = KeepSpamming != null && KeepSpamming(context);

            bool castSucceeded = ZetaDia.Me.UsePower(Power, clickPosition, worldId, acdGuid);


            if (!castSucceeded)
            {
                return(RunStatus.Failure);
            }

            if (BelphegorSettings.Instance.Debug.IsDebugCastLoggingActive && !keepSpamming)
            {
                CastLogSw.Stop();
                string castOn = acdGuid == -1
                    ? "at location " + clickPosition
                    : "on Unit " + acdGuid.ToString(CultureInfo.InvariantCulture);
                Log.InfoFormat("Using Power: {0} {1}, delay from last cast is {2}ms", Power.ToString(), castOn,
                               CastLogSw.ElapsedMilliseconds);
                CastLogSw.Restart();
            }

            if (!_isSpamming && SucceedRunner != null)
            {
                SucceedRunner(context);
            }

            if (keepSpamming)
            {
                _isSpamming = true;
                if (BelphegorSettings.Instance.Debug.IsDebugCastLoggingActive)
                {
                    CastLogSw.Stop();
                    string castOn = acdGuid == -1
                        ? "at location " + clickPosition
                        : "on Unit " + acdGuid.ToString(CultureInfo.InvariantCulture);
                    Log.InfoFormat("Using Power: Is Spamming {0} {1}, delay from last cast is {2}ms",
                                   Power.ToString(), castOn, CastLogSw.ElapsedMilliseconds);
                    CastLogSw.Restart();
                }
                return(RunStatus.Running);
            }
            _isSpamming = false;
            return(RunStatus.Success);
        }