File: TimeHelper.java

package info (click to toggle)
spring 104.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 47,512 kB
  • sloc: cpp: 391,093; ansic: 79,943; python: 12,356; java: 12,201; awk: 5,889; sh: 1,826; xml: 655; makefile: 486; perl: 405; php: 211; objc: 194; sed: 2
file content (157 lines) | stat: -rwxr-xr-x 4,591 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// Copyright Hugh Perkins 2009
// hughperkins@gmail.com http://manageddreams.com
//
// This program is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
//  more details.
//
// You should have received a copy of the GNU General Public License along
// with this program in the file licence.txt; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-
// 1307 USA
// You can find the licence also on the web at:
// http://www.opensource.org/licenses/gpl-license.php
//
// ======================================================================================
//

package hughai.utils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

import com.springrts.ai.oo.clb.*;

import hughai.*;


public class TimeHelper
{
	// abstracts out our specific implementation of how we are storing time
	public static class TimePoint {
	}
	public static class GameTimePoint extends TimePoint{
		public int frame;
		public GameTimePoint(){}
		public GameTimePoint( int frame ){
			this.frame = frame;
		}
		public TimeSpan asTimeSpan(){
			return new TimeSpan((frame * 1000) / 30 );
		}
		@Override
		public String toString(){
			return "" + asTimeSpan(); 
		}
	}
	public static class RealTimePoint extends TimePoint {
		public long milliseconds;
		public RealTimePoint(){}
		public RealTimePoint(double seconds){
			this.milliseconds = (long)(seconds * 1000);
		}
		public RealTimePoint(long milliseconds){
			this.milliseconds = milliseconds;
		}
	}
	public static class TimeSpan{
		public int hours;
		public int minutes;
		public int seconds;
		public int milliseconds;
		public TimeSpan(){}
		public TimeSpan( int hours, int minutes, int seconds, int milliseconds){
			this.hours = hours;
			this.minutes = minutes;
			this.seconds = seconds;
			this.milliseconds = milliseconds;
		}
		public void add( TimeSpan second ) {
		   fromMilliseconds( getTotalMilliseconds() 
		         + second.getTotalMilliseconds() );
		}
		public TimeSpan( double seconds ){
			fromMilliseconds( (long)( seconds * 1000 ));
		}
		public TimeSpan( long milliseconds ){
			fromMilliseconds( milliseconds );
		}
		public long getTotalMilliseconds(){
			return (long)hours * 1000 * 60 * 60
				+ (long)minutes * 1000 * 60
				+ (long)seconds * 1000
				+ (long)milliseconds;
		}
		void fromMilliseconds( long milliseconds ){
			hours = (int)( milliseconds / 60 / 60 / 1000 );
			milliseconds -= hours * 60 * 60 * 1000;
			minutes = (int)( milliseconds / 60 / 1000 );
			milliseconds -= minutes * 60 * 1000;
			this.seconds = (int)( milliseconds / 1000);
			milliseconds -= this.seconds * 1000;
			this.milliseconds = (int)( milliseconds );			
		}
		@Override
		public String toString(){
		   if( getTotalMilliseconds() < 1000 ) {
		      return milliseconds + " ms";
		   }
		   return hours + ":" + minutes + ":" + seconds + "." + milliseconds;			
		}
	}
	
//	OOAICallback aicallback;
//	FrameController frameController;
	PlayerObjects playerObjects;
	
	public TimeHelper( PlayerObjects playerObjects ){
//		this.aicallback = aicallback;
	   this.playerObjects = playerObjects;
	}
	
	public RealTimePoint GetRealTimePoint()
	{
		return new RealTimePoint(System.currentTimeMillis());
	}
	public GameTimePoint GetGameTimePoint()
	{
		return new GameTimePoint(getCurrentFrame());
	}
	public int getCurrentFrame(){
		return playerObjects.getFrameController().getFrame();
	}
	public double getGameTimeSeconds(){
		int frames = playerObjects.getFrameController().getFrame();
		return (double)frames / 30;		
	}
	
	public String GetCurrentGameTimeString()
	{
		double gameTimeSeconds = getGameTimeSeconds();
		TimeSpan timeSpan = new TimeSpan( gameTimeSeconds );
		return "" + timeSpan;
	}
	public String GetCurrentRealTimeString()
	{
		Date now = new Date( System.currentTimeMillis() );
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        return dateFormat.format(now);
	}
	
	public String FormatTimeSpan(TimeSpan timespan)
	{
		return "" + timespan;
	}
	
	public TimeSpan CompareRealTimePoint(RealTimePoint later, RealTimePoint earlier) {
		return new TimeSpan( later.milliseconds - earlier.milliseconds );
	}
}