コード例 #1
0
class TeacherGuestFarmState(GuestFarmState):
    def __init__(self, client, input, gui, user):
        super().__init__(client, input, gui, user)
        
    def init(self):
        super().init()
        self.farm = Farm()
        self.owner = User(self.client, "")
        
        # CONTROL WINDOW
        self.ctrl_window = Window(sf.Vector2(260, 0), 256, 128, sf.Color(50, 50, 120, 255), self.input)
        self.add_button = Button(sf.Vector2(16, 0), "button", self.input, "add")
        self.set_button = Button(sf.Vector2(144, 0), "button", self.input, "set")
        self.points_textbox = Textbox(sf.Vector2(0, 64), 256, "amount of points", self.input)
        
        self.ctrl_window.add_child(self.add_button)
        self.ctrl_window.add_child(self.set_button)
        self.ctrl_window.add_child(self.points_textbox)
        
        self.gui_manager.add(self.ctrl_window)
        
    def handle_packet(self, packet):
        packet_id = packet.read()

        if packet_id == const.PacketTypes.LOAD_FARM: # when you first get into the state
            self.owner.deserialize(packet)
            self.farm.deserialize(packet)
            
            self.textbox.default_text = self.owner.user_name
            self.textbox.text.string = self.owner.user_name
    
    def render(self, target):
        super().render(target)

    def update(self, dt):
        super().update(dt)
        
    def on_mouse_button_pressed(self, mouse_button, x, y):
        super().on_mouse_button_pressed(mouse_button, x, y)
        if mouse_button == sf.Mouse.LEFT:
            if self.gui_manager.point_over_element(self.add_button, x, y) is True:
                packet = net.Packet()
                packet.write(const.PacketTypes.ADD_POINTS)
                packet.write(self.owner.user_name) # name of person
                packet.write(self.points_textbox.last_text)
                self.client.send(packet)
            elif self.gui_manager.point_over_element(self.set_button, x, y) is True:
                packet = net.Packet()
                packet.write(const.PacketTypes.SET_POINTS)
                packet.write(self.owner.user_name) # name of person
                packet.write(self.points_textbox.last_text)
                self.client.send(packet)
コード例 #2
0
class GuestFarmState(ClientState):
    def __init__(self, client, input, gui, user):
        super().__init__(client, input, gui, user)

    def init(self):
        super().init()
        self.farm = Farm()
        self.owner = User(self.client, "")
        
        # CONTROL WINDOW
        self.load_button = Button(sf.Vector2(16, 0), "button", self.input, "load")
        self.home_button = Button(sf.Vector2(144, 0), "button", self.input, "home")
        
        self.textbox = Textbox(sf.Vector2(0, 64), 256, self.owner.user_name, self.input)
        
        self.window = Window(sf.Vector2(0, 0), 256, 128, sf.Color(50, 50, 120, 255), self.input)
        self.window.add_child(self.load_button)
        self.window.add_child(self.home_button)
        self.window.add_child(self.textbox)
        
        self.gui_manager.add(self.window)

    def handle_packet(self, packet):
        packet_id = packet.read()

        if packet_id == const.PacketTypes.LOAD_FARM: # when you first get into the state
            self.owner.deserialize(packet)
            self.farm.deserialize(packet)
            
            self.textbox.default_text = self.owner.user_name
            self.textbox.text.string = self.owner.user_name
    
    def render(self, target):
        super().render(target)
        self.farm.draw(target)

    def update(self, dt):
        super().update(dt)
        
    def on_mouse_button_pressed(self, mouse_button, x, y):
        if mouse_button == sf.Mouse.LEFT:
            if self.gui_manager.point_over_element(self.home_button, x, y) is True:
                self.user.switch_state(const.GameStates.HOME_FARM)
                    
            elif self.gui_manager.point_over_element(self.load_button, x, y) is True:
                if self.textbox.last_text != self.user.user_name:
                    print(self.textbox.last_text, self.user.user_name)
                    packet = net.Packet()
                    packet.write(const.PacketTypes.SWITCH_FARM)
                    packet.write(self.textbox.last_text)
                    self.client.send(packet)
コード例 #3
0
    def __init__(self, client, user_type):
        self.client = client
        self.user_type = user_type
	        
        self.first_name = ""
        self.last_name = ""
        self.user_name = ""
        self.password = ""
		
        self.points = 0
        self.inventory = {}
        self.farm = Farm()
		
        self.states = []
        self.state = None
コード例 #4
0
 def init(self):
     super().init()
     self.farm = Farm()
     self.owner = User(self.client, "")
     
     # CONTROL WINDOW
     self.ctrl_window = Window(sf.Vector2(260, 0), 256, 128, sf.Color(50, 50, 120, 255), self.input)
     self.add_button = Button(sf.Vector2(16, 0), "button", self.input, "add")
     self.set_button = Button(sf.Vector2(144, 0), "button", self.input, "set")
     self.points_textbox = Textbox(sf.Vector2(0, 64), 256, "amount of points", self.input)
     
     self.ctrl_window.add_child(self.add_button)
     self.ctrl_window.add_child(self.set_button)
     self.ctrl_window.add_child(self.points_textbox)
     
     self.gui_manager.add(self.ctrl_window)
コード例 #5
0
 def init(self):
     super().init()
     self.farm = Farm()
     self.owner = User(self.client, "")
     
     # CONTROL WINDOW
     self.load_button = Button(sf.Vector2(16, 0), "button", self.input, "load")
     self.home_button = Button(sf.Vector2(144, 0), "button", self.input, "home")
     
     self.textbox = Textbox(sf.Vector2(0, 64), 256, self.owner.user_name, self.input)
     
     self.window = Window(sf.Vector2(0, 0), 256, 128, sf.Color(50, 50, 120, 255), self.input)
     self.window.add_child(self.load_button)
     self.window.add_child(self.home_button)
     self.window.add_child(self.textbox)
     
     self.gui_manager.add(self.window)
コード例 #6
0
class User:
    def __init__(self, client, user_type):
        self.client = client
        self.user_type = user_type
	        
        self.first_name = ""
        self.last_name = ""
        self.user_name = ""
        self.password = ""
		
        self.points = 0
        self.inventory = {}
        self.farm = Farm()
		
        self.states = []
        self.state = None
		
    def serialize(self, packet):
        packet.write(self.user_type)
        packet.write(self.first_name)
        packet.write(self.last_name)
        packet.write(self.user_name)
        packet.write(self.password)
        packet.write(self.points)

        self.farm.serialize(packet)
        
        packet.write(len(self.inventory))
        for item in self.inventory:
            packet.write(item) # type
            packet.write(self.inventory[item]) # amount
		
    def deserialize(self, packet):
        self.user_type = packet.read()
        self.first_name = packet.read()
        self.last_name = packet.read()
        self.user_name = packet.read()
        self.password = packet.read()
        self.points = packet.read()

        self.farm.deserialize(packet)
        
        inventory_size = packet.read()
        for item in range(0, inventory_size):
            type = packet.read()
            amount = packet.read()
            self.inventory[type] = amount
		
    def render(self, target):
        self.states[self.state].render(target)
		
    def update(self, dt):
        self.states[self.state].update(dt)
        
    def switch_state(self, state):
        # stop gui, updating, taking input, etc.
        self.states[self.state].gui_manager.remove_all()
        self.states[self.state].input.remove_key_handler(self.states[self.state])
        self.states[self.state].input.remove_text_handler(self.states[self.state])
        self.states[self.state].input.remove_mouse_handler(self.states[self.state])
        
        # set new state
        self.state = state
        self.states[self.state].init()
コード例 #7
0
    def handle_packet(self, packet, client_id):
        packet_id = packet.read()
    
        if packet_id == const.PacketTypes.LOGIN:
            self.on_login(packet, client_id)
            
        elif packet_id == const.PacketTypes.ADD_FARM_ITEM:
            type = packet.read() # type of tree
            x = packet.read()
            y = packet.read()
            
            # got all data from packet, send it back with new data
            packet.write(packet_id)
            packet.write(type)
            packet.write(x)
            packet.write(y)
            self.send(client_id, packet)

        elif packet_id == const.PacketTypes.ADD_INVENTORY_ITEM:
            type = packet.read()
            self.connected_users[client_id].inventory[type] = int(self.connected_users[client_id].inventory[type]) # intify it
            self.connected_users[client_id].inventory[type] += 1
            
            packet.write(packet_id)
            self.connected_users[client_id].serialize(packet)
            self.send(client_id, packet)

        elif packet_id == const.PacketTypes.SWITCH_FARM:
            name = packet.read()

            # got all data from packet, send it back with new data
            if name in self.users:
                packet = net.Packet()
                packet.write(packet_id)
                packet.write(name)
                self.send(client_id, packet)

        elif packet_id == const.PacketTypes.LOAD_FARM:
            name = packet.read()

            # got all data from packet, send it back with new data
            packet.write(packet_id)
            self.users[name].serialize(packet)
            self.load_farm(self.users[name])
            self.users[name].farm.serialize(packet)
            self.send(client_id, packet)
            
        elif packet_id == const.PacketTypes.SAVE_FARM:
            farm = Farm()
            farm.deserialize(packet)
            self.save_farm(self.connected_users[client_id], farm)
            
        elif packet_id == const.PacketTypes.ADD_POINTS:
            name = packet.read()
            points = float(packet.read())
            self.users[name].points = float(self.users[name].points)
            self.users[name].points += points
            self.save_user_data(self.users[name])
            # messes up inventory

        elif packet_id == const.PacketTypes.SET_POINTS:
            name = packet.read()
            points = float(packet.read())
            self.users[name].points = points
            self.save_user_data(self.users[name])

        elif packet_id == const.PacketTypes.GET_USER:
            packet.write(packet_id)
            self.connected_users[client_id].serialize(packet)
            self.send(client_id, packet)