Exemplo n.º 1
0
class Medbay(Building):
    def __init__(self):
        self.ico_pic = pygame.image.load("sprites/generator_ico.png")
        self.image = Animation()
        self.image.setup("medbay")
        self.ico_medic = pygame.image.load("sprites/icons/mup.png")
        self.ico_medshop = pygame.image.load("sprites/icons/mup.png")
        self.size = 50

    def draw_hud(self, target):        
        target.screen.blit(self.ico_pic, (230, 500))
        target.draw_hudbuttons(2)
        target.screen.blit(self.ico_medic, target.hud.all_coords[0])
        target.screen.blit(self.ico_medshop, target.hud.all_coords[1])
        
    def detectact(self, target, curpos):
        if curpos.get_distance(vec2d(646, 456)) <= 15:
            if target.buildings[0].inventory[1][1] > 20000:
                target.buildings[0].inventory[1][1] -= 20000

                print("Medic ready for duty!")

            else:
                print("You need 20 000 ore to buy this unit!")
        if curpos.get_distance(vec2d(696, 456)) <= 15:
            if target.buildings[0].inventory[1][1] > 40000:
                target.buildings[0].inventory[1][1] -= 40000

                print("Battery truck ready for duty!")

            else:
                print("You need 40 000 ore to buy this unit!")
Exemplo n.º 2
0
class UpgradeFactory(Building):
    def __init__(self):
        self.ico_pic = pygame.image.load("sprites/factory_ico.png")
        self.image = Animation()
        self.image.setup("factory")
        self.supic = pygame.image.load("sprites/icons/spu.png")
        self.mupic = pygame.image.load("sprites/icons/mup.png")
        self.size = 50
        
    def draw_hud(self, target):
        target.screen.blit(self.ico_pic, (230, 500))
        target.draw_hudbuttons(2)
        target.screen.blit(self.supic, target.hud.all_coords[0])
        target.screen.blit(self.mupic, target.hud.all_coords[1])
        
    def detectact(self, target, curpos):
        if curpos.get_distance(vec2d(646, 456)) <= 15:
            if target.buildings[0].inventory[1][1] > 40000:
                target.buildings[0].inventory[1][1] -= 40000
                Drone.speed = 6
                print("Drone speed upgraded by 20%.")
                for drone in target.drones:
                    drone.speed = 6
            else:
                print("You need 40 000 ore to buy speed upgrade!")
        if curpos.get_distance(vec2d(696, 456)) <= 15:
            if target.buildings[0].inventory[1][1] > 40000:
                target.buildings[0].inventory[1][1] -= 40000
                Drone.mining_speed = 2
                print("Drone mining speed increased by 100%")
                for drone in target.drones:
                    drone.mining_speed = 2
            else:
                print("You need 40 000 ore to buy mining speed upgrade!")
Exemplo n.º 3
0
 def upgrade(self):
     self.level = 1
     self.target = self.pos
     self.fire_target = self.pos
     tempimage = Animation()
     tempimage.setup("upoutpost")
     self.image = tempimage
Exemplo n.º 4
0
class Outpost(Building):
    def __init__(self):
        self.ico_pic = pygame.image.load("sprites/generator_ico.png")
        self.up_ico = pygame.image.load("sprites/icons/up_ico.png")
        self.image = Animation()
        self.image.setup("outpost")
        self.size = 35
        self.level = 0
        self.target = vec2d(0, 0)
        self.fire_target = vec2d(0, 0)
        
    def draw_hud(self, target):
        target.screen.blit(self.ico_pic, (230, 500))
        target.draw_hudbuttons(1)
        target.screen.blit(self.up_ico, target.hud.all_coords[0])

    def detectact(self, target, curpos):
        if curpos.get_distance(vec2d(646, 456)) <= 15:
            self.upgrade()
            
    def upgrade(self):
        self.level = 1
        self.target = self.pos
        self.fire_target = self.pos
        tempimage = Animation()
        tempimage.setup("upoutpost")
        self.image = tempimage
Exemplo n.º 5
0
class Drone:
    '''Class for workers!'''
    def __init__(self):
        self.pos = vec2d(0, 0)
        self.target = []
        self.single_t = True
        self.image = Animation()
        self.image.setup("drone")
        self.def_pic = pygame.image.load("sprites/icons/bat_ico.png")
        self.ico_pic = pygame.image.load("sprites/bot_ico.png")
        self.generator_ico = pygame.image.load("sprites/icons/gico.png")
        self.factory_ico = pygame.image.load("sprites/icons/faico.png")
        self.medbay_ico = pygame.image.load("sprites/icons/med_ico.png")
        self.outpost_ico = pygame.image.load("sprites/icons/out_ico.png")
        self.stockpile_ico = pygame.image.load("sprites/icons/sto_ico.png")
        self.power = 255
        self.inventory = [["battery", 0], ["iron ore", 0]]
        self.task = 0
        self.speed = 5
        self.mining_speed = 1
        
    def update(self):
        dir = self.target[0] - self.pos      
        self.power -= 0.1
        if dir.length >= self.speed:
            dir.length = self.speed
            self.pos = vec2d(int(self.pos[0] + dir[0]), int(self.pos[1] + dir[1]))
        else:
            if len(self.target) > 1:
                temptargets = self.target[1:]
                self.target = temptargets
                
    def draw_hud(self, target):
        if self.single_t == 1:
            target.screen.blit(target.hud.sing_dir, (280, 427))
        else:
            target.screen.blit(target.hud.mul_dir, (280, 427))
            
        target.screen.blit(self.ico_pic, (230, 505))
        target.drawbattery(cap = 1)
            
        target.screen.blit(target.ores[0].ico, (380, 505))
        pygame.draw.rect(target.screen, (75, 75, 75), (380, 505, 25, 25 - int(self.inventory[1][1] / 40)))
        pygame.draw.rect(target.screen, (0, 0, 0), (380, 505, 25, 25), 2)
            
        target.draw_hudbuttons(5)
        target.screen.blit(self.factory_ico, target.hud.all_coords[0])
        target.screen.blit(self.generator_ico, target.hud.all_coords[1])
        target.screen.blit(self.medbay_ico, target.hud.all_coords[2])
        target.screen.blit(self.outpost_ico, target.hud.all_coords[3])
        target.screen.blit(self.stockpile_ico, target.hud.all_coords[4])
        
    def detectact(self, target, curpos):
        ''' `buttons` contains button coords and building instructions '''
        button = [((646, 456), (6000, 1)), ((696, 456), (5000, 2)), ((746, 456), (5000, 3)), ((646, 506), (5000, 4)), ((696, 506), (5000, 5)),]
        for build_button in button:
            if curpos.get_distance(vec2d(*build_button[0])) <= 15:
                target.startbuild(*build_button[1]) 
       
    def colider (self, odrone, targ):
        dist = self.pos.get_distance(odrone.pos)
        if dist < 56:
            overlap = 56 - dist
            ndir = odrone.pos - self.pos
            ndir.length = overlap
            if self.task == 2 and odrone.power < 1:
                self.inventory[0][1] -= 1
                odrone.power = 150
                self.task = 0    
            if self == targ.selected:
                odrone.pos = odrone.pos + ndir
            elif odrone == targ.selected:
                self.pos = self.pos - ndir
            else:
                ndir.length =  ndir.length / 2
                odrone.pos = odrone.pos + ndir
                self.pos = self.pos - ndir
                
    def droneaction(self, target, pos):
        def helpdrone(target, pos):
            for drone in target.drones:
                if drone.pos.get_distance(vec2d(pos[0] + target.hud.pos[0], pos[1] + target.hud.pos[1])) < 20 and drone.power < 1:
                    if drone is not target.selected:
                        target.selected.target.append(target.buildings[0].pos)
                        target.selected.task = 2
                        target.selected.target.append(vec2d(int(drone.pos[0]), int(drone.pos[1])))
                        print("Going to charge another drone!")
                        return 1
            return 0
        
        def visitbuilding(target, pos):
            for building in target.buildings:
                if building.pos.get_distance(vec2d(pos[0] + target.hud.pos[0], pos[1] + target.hud.pos[1])) < building.size:
                    target.selected.target.append(building.pos)
                    return 1
            return 0
            
        def builddata(target, pos):
            if target.hud.build_mode == 1:
                permit = True
                btarget = vec2d(pos[0] + target.hud.pos[0], pos[1] + target.hud.pos[1])
                for building in target.buildings:
                    dir = building.pos - btarget
                    if dir.length < building.size + 50: permit = False
                if permit:
                    print("The new building will be built at - ", btarget)
                    target.project = btarget
                    target.hud.build_mode = 2
                    target.builder.target.append(target.project)
                    return 1
            return 0
            
        def movedrone(target, pos):
            if target.selected.single_t == 0:
                dtarget = vec2d(pos[0] + target.hud.pos[0], pos[1] + target.hud.pos[1])
                target.selected.target.append(dtarget)
            else:
                targets = []
                dtarget = vec2d(pos[0] + target.hud.pos[0], pos[1] + target.hud.pos[1])
                targets.append(dtarget)
                target.selected.target = targets
                
        found = helpdrone(target, pos)
        if found == 0:
            found = visitbuilding(target, pos)           
        if found == 0:
            found = builddata(target, pos)            
        if found == 0:
            movedrone(target, pos)
Exemplo n.º 6
0
class MainBase(Building):
    def __init__(self):
        self.size = 140
        self.storepic = pygame.image.load("sprites/main_store.png")
        self.image = Animation()
        self.image.setup("main")
        self.ico_pic = pygame.image.load("sprites/main_ico.png")
        self.bat_ico = pygame.image.load("sprites/icons/bat_ico.png")
        self.dro_ico = pygame.image.load("sprites/icons/dro_ico.png")
        self.inventory = [["battery", 2], ["iron ore", 500000]]
        self.powergain = 5
        self.target = vec2d(0, 0)
        self.power = 100000
        self.inv = 1000000
        
    def request(self, requester, caller):
        if self.power > 255:
            self.power -= int(255 - requester.power)
            requester.power = 255
        if requester.task == 1:
            self.inventory[1][1] += requester.inventory[1][1]
            requester.inventory[1][1] = 0
            print("Main stock is: ", self.inventory, "Power: ", self.power)
            requester.task = 0
            print("Drone returns to mining duty.")
        elif requester.task == 2:
            if self.inventory[0][1] > 0:
                print("Drone took one battery from store.We have ", self.inventory[0][1]," left!")
                self.inventory[0][1] -= 1
                requester.inventory[0][1] += 1
        requester.target.insert(1, caller.target)
               
    def buy_drone(self):
        if self.inventory[1][1] > 10000:
            self.inventory[1][1] -= 10000
            tempdrone = Drone()
            tempdrone.pos = self.pos
            target = self.pos
            tempdrone.target.append(target)
            print("New drone is waiting for orders!")
            return tempdrone
        else:
            print("You need 10 000 ore to buy this!")
            
    def buy_battery(self):
        if self.inventory[1][1] > 5000:
            self.inventory[1][1] -= 5000
            self.inventory[0][1] += 1
            print("Another battery added to storage!")
        else:
            print("You need 5000 to buy a battery!")
            
    def update (self):
        if self.power < 255000:
            self.power += self.powergain
            
    def draw_hud(self, target):
        target.screen.blit(self.ico_pic, (230, 500))
        target.drawbattery(cap = 1000)       
        target.screen.blit(self.storepic, (381, 501))
        pygame.draw.rect(target.screen, (85, 85, 85), (381, 501, 201, 51 - int(self.inventory[1][1] / (self.inv / 50))))
        pygame.draw.rect(target.screen, (0, 0, 0), (380, 500, 202, 52), 2)  
        target.draw_hudbuttons(2)
        target.screen.blit(self.dro_ico, target.hud.all_coords[0])
        target.screen.blit(self.bat_ico, target.hud.all_coords[1])
            
    def detectact(self, target, curpos):
        if curpos.get_distance(vec2d(646, 456)) <= 15:
            new_drone = self.buy_drone()
            if new_drone: 
                target.drones.append(new_drone)
        if curpos.get_distance(vec2d(696, 456)) <= 15:
            self.buy_battery()
Exemplo n.º 7
0
class Whearhouse(Building):
    def __init__(self):
        self.ico_pic = pygame.image.load("sprites/generator_ico.png")
        self.image = Animation()
        self.image.setup("stockpile")
        self.size = 50    
Exemplo n.º 8
0
class Generator(Building):
    def __init__(self):
        self.ico_pic = pygame.image.load("sprites/generator_ico.png")
        self.image = Animation()
        self.image.setup("generator")
        self.size = 50