summaryrefslogtreecommitdiff
path: root/client/Piztor/src/com/macaroon/piztor/MapInfo.java
blob: 9cd1dd32b80ee498fc82a118e0ecc589492ac4ad (plain) (blame)
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
package com.macaroon.piztor;

import java.io.Flushable;
import java.util.HashMap;
import java.util.Vector;

import com.baidu.platform.comapi.basestruct.GeoPoint;

import android.annotation.SuppressLint;
import android.graphics.drawable.Drawable;
import android.location.Location;


public class MapInfo {
	HashMap<Integer, UserInfo> mp;
	HashMap<Integer, MarkerInfo> pm;
	Vector<UserInfo> allUsers;
	Vector<MarkerInfo> markerInfo;
	UserInfo myInfo;
	myApp app;
	int myScore, otherScore;
	
	@SuppressLint("UseSparseArrays")
	MapInfo(myApp ap) {
		mp = new HashMap<Integer, UserInfo>();
		allUsers = new Vector<UserInfo>();
		markerInfo = new Vector<MarkerInfo>();
		pm = new HashMap<Integer, MarkerInfo>();
		app  = ap;
		myScore = otherScore = 0;
	}

	void clear() {
		mp.clear();
		allUsers.clear();
	}

	void addUserInfo(UserInfo userInfo) {
		allUsers.add(userInfo);
		mp.put(userInfo.uid, userInfo);
	}
	
	void addMarkerInfo(MarkerInfo mInfo) {
		markerInfo.add(mInfo);
		pm.put(mInfo.markerId, mInfo);
	}

	UserInfo getUserInfo(int uid) {
		if (mp.containsKey(uid))
			return mp.get(uid);
		else
			return null;
	}

	MarkerInfo getMarkerInfo(int mid) {
		if (pm.containsKey(mid))
			return pm.get(mid);
		else 
			return null;
	}

	void sendCheckin(int mid) {
		if (pm.containsKey(mid)) {
			ReqCheckin req = new ReqCheckin(app.token, app.username, mid, System.currentTimeMillis(), 10 * 1000);
			app.transam.send(req);
		}
	}
	
	void removeMarker(int mid) {
		if (pm.containsKey(mid)) {
			markerInfo.remove(pm.get(mid));
			pm.remove(mid);
		}
	}
	
	public Vector<UserInfo> getVector() {
		return allUsers;
	}
	
	public UserInfo getMyInfo() {
		return myInfo;
	}
}

class MarkerInfo {
	GeoPoint markerPoint;
	long markerTimestamp;
	int score;
	int markerId;
	int level;
	
	MarkerInfo copy() {
		MarkerInfo res = new MarkerInfo();
		res.level = level;
		res.markerPoint = new GeoPoint(markerPoint.getLatitudeE6(), markerPoint.getLongitudeE6());
		res.markerTimestamp = markerTimestamp;
		return res;
	}
	
}

class UserInfo {
	int uid, sex;
	int company;		//group id
	int section;
	int level;
	GeoPoint location;
	String nickname;
	
	UserInfo copy() {
		UserInfo res = new UserInfo(uid);
		res.location = location;
		res.nickname = nickname;
		res.section = section;
		res.company = company;
		res.level = level;
		return res;
	}
	
	UserInfo(int uid) {
		this.uid = uid;
	}

	void setLocation(double lat, double lot) {
		location = new GeoPoint((int)(lat * 1e6), (int)(lot * 1e6));
	}

	void setInfo(int company, int section, int sex, String nickName) {
		this.company = company;
		this.section = section;
		this.sex = sex;
		this.nickname = nickName;
	}
	
	public GeoPoint getLocation(){
		return location;
	}

	public double getLatitude() {
		return location.getLatitudeE6() / 1e6;
	}

	public double getLongitude() {
		return location.getLongitudeE6() / 1e6;
	}
}

interface Style {
	Drawable getDrawable(UserInfo user);
}