-
Notifications
You must be signed in to change notification settings - Fork 0
/
SpawnPointGenerator.cs
184 lines (144 loc) · 4.78 KB
/
SpawnPointGenerator.cs
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/************************************************************************************
SOURCE FILE: SpawnPointGenerator.cs
PROGRAM: server
FUNCTIONS: SpawnPointGenerator()
populateStack()
GetNextSpawnPoint()
DATE: Mar. 14, 2018
REVISIONS:
DESIGNER: Benny Wang
PROGRAMMER: Benny Wang
NOTES:
This is the class that generates spawn points for players.
**********************************************************************************/
using System;
using System.Collections;
using System.Collections.Generic;
class SpawnPointGenerator
{
private static Random rng = new Random();
private Stack<List<float>> spawnPoints;
/************************************************************************************
FUNCTION: SpawnPointGenerator
DATE: Mar. 14, 2018
REVISIONS:
DESIGNER: Benny Wang
PROGRAMMER: Benny Wang
INTERFACE: SpawnPointGenerator()
NOTES:
Creates a spawn point generator and geneartes the inital list of random spawn points.
**********************************************************************************/
public SpawnPointGenerator()
{
this.populateStack();
}
/************************************************************************************
FUNCTION: populateStack
DATE: Mar. 14, 2018
REVISIONS:
DESIGNER: Benny Wang
PROGRAMMER: Benny Wang
INTERFACE: populateStack()
NOTES:
Generates a a stack of randomly pseudo-random spawn points. All spawn points generated
are guaranteed to be around the edge of the town in the center of the map.
**********************************************************************************/
private void populateStack()
{
List<float> point;
this.spawnPoints = new Stack<List<float>>();
// Top Left Corner
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(-100, -80));
point.Add(rng.Next(80, 100));
this.spawnPoints.Push(point);
}
// Bottom Left Corner
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(-100, -80));
point.Add(rng.Next(-100, -80));
this.spawnPoints.Push(point);
}
// Top Right Corner
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(80, 100));
point.Add(rng.Next(80, 100));
this.spawnPoints.Push(point);
}
// Bottom Right Corner
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(80, 100));
point.Add(rng.Next(-100, -80));
this.spawnPoints.Push(point);
}
// Right Center
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(80, 100));
point.Add(rng.Next(-79, 80));
this.spawnPoints.Push(point);
}
// Left Center
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(-100, -80));
point.Add(rng.Next(-79, 80));
this.spawnPoints.Push(point);
}
// Top Center
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(-79, 80));
point.Add(rng.Next(80, 100));
this.spawnPoints.Push(point);
}
// Bottom Center
for (int i = 0; i < 5; i++)
{
point = new List<float>();
point.Add(rng.Next(-79, 80));
point.Add(rng.Next(-100, -80));
this.spawnPoints.Push(point);
}
}
/************************************************************************************
FUNCTION: GetNextSpawnPoint
DATE: Mar. 14, 2018
REVISIONS:
DESIGNER: Benny Wang
PROGRAMMER: Benny Wang
INTERFACE: GetNextSpawnPoint()
RETURN: A List of 2 floats, the first being the x position, the second being the z position.
NOTES:
Pops a random amount of spawn points off the stack of randomly generated spawn points.
The last one to be poped of is returned as the spawn point to use.
**********************************************************************************/
public List<float> GetNextSpawnPoint()
{
List<float> point = new List<float>();
for (int i = 0; i < rng.Next(0, 39); i++)
{
if (this.spawnPoints.Count == 0)
{
this.populateStack();
point = this.spawnPoints.Pop();
}
else
{
point = this.spawnPoints.Pop();
}
}
return point;
}
}