Alorn15
08-30-2009, 09:54 PM
This is a pretty simple StopWatch object for scripts to time hunts. Thought I may as well share it.
Output:
[platform: Last hunt: 2 min. 57.00 secs.]
[platform: Average hunt: 2 min. 44.00 secs.]
[platform: Total time running: 151 min. 11.00 secs.]
################
# STOPWATCH: For timing things
# Author: Azanoth
# SETUP:
# 1. Add '$LOAD_PATH << $script_dir' to your script
# 2. Add 'load "stopwatch.lic"' to your script
# 3. Create a StopWatch object - @watch = StopWatch.new
# 4. Call functions!
################
class StopWatch
@birthTime
@startTime
@log
def initialize
@birthTime = Time.now.to_i
@startTime = 0
@log = Array.new
end
def start()
@startTime = Time.now.to_i
end
def stop()
if(@startTime != 0)
@log.push(Time.now.to_i - @startTime)
end
@startTime = 0;
return Time.now.to_i
end
def lastTime()
if(@log.size > 0)
seconds = @log[@log.size - 1]
echo( sprintf("Last recording: %d min. ", seconds / 60) + sprintf("%0.2f secs.", seconds % 60) )
else
echo( sprintf("Last recording: No last hunt recorded") )
end
return @log[@log.size - 1]
end
def averageTime()
average = 0
if(@log.size > 0)
@log.each { |entry| average += entry }
average /= @log.size
echo( sprintf("Average recording: %d min. ", average / 60) + sprintf("%0.2f secs.", average % 60) )
else
echo( sprintf("Average recording: No hunts recorded") )
end
return average
end
def totalTime()
total = Time.now.to_i - @birthTime
echo( sprintf("Total time running: %d min. ", total / 60) + sprintf("%0.2f secs.", total % 60) )
return total
end
end
Each method return can essentially be ignored, as there is a built-in echo. If you prefer, the methods do return an integer representing seconds.
Output:
[platform: Last hunt: 2 min. 57.00 secs.]
[platform: Average hunt: 2 min. 44.00 secs.]
[platform: Total time running: 151 min. 11.00 secs.]
################
# STOPWATCH: For timing things
# Author: Azanoth
# SETUP:
# 1. Add '$LOAD_PATH << $script_dir' to your script
# 2. Add 'load "stopwatch.lic"' to your script
# 3. Create a StopWatch object - @watch = StopWatch.new
# 4. Call functions!
################
class StopWatch
@birthTime
@startTime
@log
def initialize
@birthTime = Time.now.to_i
@startTime = 0
@log = Array.new
end
def start()
@startTime = Time.now.to_i
end
def stop()
if(@startTime != 0)
@log.push(Time.now.to_i - @startTime)
end
@startTime = 0;
return Time.now.to_i
end
def lastTime()
if(@log.size > 0)
seconds = @log[@log.size - 1]
echo( sprintf("Last recording: %d min. ", seconds / 60) + sprintf("%0.2f secs.", seconds % 60) )
else
echo( sprintf("Last recording: No last hunt recorded") )
end
return @log[@log.size - 1]
end
def averageTime()
average = 0
if(@log.size > 0)
@log.each { |entry| average += entry }
average /= @log.size
echo( sprintf("Average recording: %d min. ", average / 60) + sprintf("%0.2f secs.", average % 60) )
else
echo( sprintf("Average recording: No hunts recorded") )
end
return average
end
def totalTime()
total = Time.now.to_i - @birthTime
echo( sprintf("Total time running: %d min. ", total / 60) + sprintf("%0.2f secs.", total % 60) )
return total
end
end
Each method return can essentially be ignored, as there is a built-in echo. If you prefer, the methods do return an integer representing seconds.