-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspawner.py
More file actions
115 lines (83 loc) · 3.33 KB
/
spawner.py
File metadata and controls
115 lines (83 loc) · 3.33 KB
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
#======================================================================#
#
# Team:
# Hunter Quant
# Edward Pryor
# Nick marasco
# Shayne Peterson
# Brandon Williams
# Jeremy Rose
#
# Last modification: 12/8/14 By: Brandon
#
# Description: Spawning Enemies
#
#======================================================================#
# Python imports
import sys
# Our class imports
from enemy import Enemy
from boss import Boss
# Panda imports
from direct.showbase.DirectObject import DirectObject
#Handles enemy spawning
class Spawner(DirectObject):
def __init__(self, level, spawnFile):
#Reads in enemy spawn locations for current level
self.eSpawnsFile = open("./enemySpawns/" + spawnFile + "Spawns.txt")
self.eSpawnsList = self.eSpawnsFile.readlines()
self.eSpawnsFile.close()
self.enemyX = 0
self.enemyY = 0
self.enemyZ = 0
self.spawnId = 0
self.offset = 0
#Gets enemies spawn location
def spawn(self):
lineIndex = 0
while lineIndex < len(self.eSpawnsList):
self.enemyX = float(self.eSpawnsList[lineIndex].split("=")[1].translate(None,"\n"))
self.enemyY = float(self.eSpawnsList[lineIndex + 1].split("=")[1].translate(None,"\n"))
self.enemyZ = float(self.eSpawnsList[lineIndex + 2].split("=")[1].translate(None,"\n"))
lineIndex += 3
self.spawnEnemy(1, self.spawnId)
# Increase enemy count
self.spawnId += 1
#If it's the third level add the spawn event trigger
if base.levelChanger.currentLevel == 3:
base.taskMgr.add(self.spawnEnemies, "Spawn enemies", taskChain='GameTasks')
#If it's the fourth level spawn the boss
if base.levelChanger.currentLevel == 4:
self.spawnBoss()
#Spawns enemy at specified location
def spawnEnemy(self, modelNum, id):
if modelNum == 1:
enemyModel = "resources/humanoid"
else:
print "Invalid Model Number Given"
enemy = Enemy(enemyModel, id+self.offset)
enemy.setAI()
enemy.setPos(self.enemyX, self.enemyY, self.enemyZ)
base.enemyList.append(enemy)
self.offset+=1
#On the third level spawns enemies behind the player
def spawnEnemies(self, task):
if base.player.playerModel.getX() >= 0:
lineIndex = 0
while lineIndex < len(self.eSpawnsList):
self.enemyX = -1 * float(self.eSpawnsList[lineIndex].split("=")[1].translate(None,"\n"))
self.enemyY = -1 * float(self.eSpawnsList[lineIndex + 1].split("=")[1].translate(None,"\n"))
self.enemyZ = float(self.eSpawnsList[lineIndex + 2].split("=")[1].translate(None,"\n"))
lineIndex += 3
self.spawnEnemy(1, self.spawnId*base.levelChanger.currentLevel)
# Increase enemy count
self.spawnId += 1
return task.done
return task.cont
#Spawns the boss on the fourth level
def spawnBoss(self):
bossModel = "resources/lordMonkey"
boss = Boss(bossModel, 9000)
boss.setPos(-245,245,20)
boss.setAI()
base.enemyList.append(boss)