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)
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)