• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Smarter NSTimer?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Smarter NSTimer?


  • Subject: Re: Smarter NSTimer?
  • From: John Pannell <email@hidden>
  • Date: Tue, 01 Jul 2014 13:54:56 -0600

Hi William-

Would the following scenario work for your use case?...

1.  When damage occurs, throw an object representing it into a collection.
2.  Have a single timer that repeatedly fires a "cleanUp:" method, every five seconds or so.
3.  In cleanUp:, go through the collection and remove a visual representation and take the object out of the collection if the visual representation is out of sight.  Do nothing and leave it in the collection if in sight.

It seems to me that this would (mostly) feel the same to the user as your scenario... damage would disappear if it was out of sight and older than 5 seconds.  There would be a possibility of something not getting cleaned up if the user repeatedly brought the damage back into the field of vision and it never managed to be out of vision when the timer fired.

For a closer approximation, I might add a counter to the object stored in the collection, start it with a value of 5, and decrement it every time the object was out of sight.  When it reached zero, I'd remove it from the collection.  The single master timer could fire every second in this scenario.

Food for thought - good luck!

John

On Jul 1, 2014, at 12:21 PM, William Squires <email@hidden> wrote:

>  What would be the best way to make an NSTimer that could pause/un-pause its timing? Subclassing? Containment? Just roll my own with performWithSelector:afterDelay:? That is, if I (my code) creates a (smart) NSTimer with a duration of 5 seconds, then three seconds later I need to pause the timer, the timer should un-pause with 2 seconds left on it, not revert back to a duration of 5 seconds.
>
> Use-case:
>  I have a (fictitious) FPS game in which the players or bots can "damage" the scenery by leaving blast marks. A timer should remove these "decorations" after a given delay, but I want the timers to pause if any players/bots are within line-of-sight of the decorations. The timer should then un-pause once all the players and bots are out of line-of-sight (self-repairing nanotech scenery, anyone?)
>  With a normal timer, you'd have to [<timer> invalidate], and/or re-create a new NSTimer instance, which would reset the time.
>  Another good use is a "smartly" timed weapon/power-up spawn point. If the player (or a bot) is too close, the timer will pause, preventing the spawning of the weapons/power-ups, but as soon as no players or bots are close by, the timer will resume, and a new weapon or power-up will spawn there. This would discourage "camping" around known spawn points! :)
>
> Or has this "wheel" already been invented?
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


References: 
 >Smarter NSTimer? (From: William Squires <email@hidden>)

  • Prev by Date: Re: Smarter NSTimer?
  • Next by Date: NSTableView automatic column size
  • Previous by thread: Re: Smarter NSTimer?
  • Next by thread: NSTableView automatic column size
  • Index(es):
    • Date
    • Thread