def add_element(self, text):
   values  = text.split(" ", 1)
   etype = values[0].strip()
   if etype == "dialogue":
     element = Scripted_event_element(etype, values[1].strip())
   elif etype == "player":
     values = values[1].split()
     if values[0] == "orientation":
       self.last_dir = dir_from_str(values[1])
       element = Scripted_event_element(etype, values[0], self.last_dir)
     if values[0] == "animation":
       element = Scripted_event_element(etype, values[0], self.last_dir, values[1])
   else:
     element = Scripted_event_element(etype)
   
   self.elements.append(element)
Esempio n. 2
0
 def add_element(self, text):
     values = text.split(" ", 1)
     etype = values[0]
     etype = etype.strip()
     if etype == "dialogue":
         element = Scripted_event_element(etype, values[1].strip())
     else:
         if etype == "player":
             values = values[1].split()
             if values[0] == "orientation":
                 self.last_dir = dir_from_str(values[1])
                 element = Scripted_event_element(etype, values[0],
                                                  self.last_dir)
             if values[0] == "animation":
                 element = Scripted_event_element(etype, values[0],
                                                  self.last_dir)
         else:
             element = Scripted_event_element(etype)
     self.elements.append(element)
     return
Esempio n. 3
0
  def __init__(self, screen, level_name = "0"):
    self.screen = screen
    self.bgimage = pygame.image.load(data.picpath("background", "static"))
    self.image = None
    self.rect = self.bgimage.get_rect()
    self.rect.centerx = SCREEN_WIDTH / 2
    self.rect.centery = SCREEN_HEIGHT / 2
    self.flipping = False
    self.flipcounter = 0

    self.tiles = []
    self.objects = []

    self.scripted_events = []

    conffile = open(data.levelpath(level_name))
    tiley = 0
    values = []
    set = "brown"  #Parsing this from the conf file should be added

    trigger = False
    current_event = None

    for line in conffile.readlines():

      if tiley < FULL_TILES_VER:
        tilex = 0
        while tilex < FULL_TILES_VER:
          if (line[tilex] == "W"):
            self.tiles.append(Tile(self.screen, tilex, tiley))
          if (line[tilex] == "B"):
            self.tiles.append(Tile(self.screen, tilex, tiley, set, "bars"))
          if (line[tilex] == "S"):
            self.tiles.append(Spikes(self.screen, tilex, tiley))
          tilex += 1
        tiley += 1

      else:
      
        if line.strip() != "":
          values = line.split()

          if trigger:
            if values[0] == "end" and values[1] == "trigger":
              trigger = False
            else:
              current_event.add_element(line)
            continue
          if values[0] == "trigger":
            trigger = True
            current_event = Scripted_event(values[1], int(values[2]))
            self.scripted_events.append(current_event)
            continue

          x = (float(values[1]) - (FULL_TILES_HOR - TILES_HOR)) * TILE_DIM
          y = (float(values[2]) - (FULL_TILES_VER - TILES_VER))* TILE_DIM
          if values[0] == "player":
            self.player = Player(self.screen, x, y)
            continue
          if values[0] == "spider":
            self.objects.append(Spider(self.screen, x, y, dir_from_str(values[3])))
            continue
          if values[0] == "key":
            self.objects.append(Item(self.screen, x, y, set, values[0]))
            continue
          if values[0] == "lever":
            trigger_type = TRIGGER_NONE
            if values[4] == "TRIGGER_FLIP":
              trigger_type = TRIGGER_FLIP
            self.objects.append( Item(self.screen, x, y, set, values[0], int(values[3]), trigger_type) )
            continue

    self.reset_active_tiles()
    return
Esempio n. 4
0
    def __init__(self, screen, level_name="0"):
        self.screen = screen
        self.bgimage = pygame.image.load(data.picpath("background", "static"))
        self.image = None
        self.rect = self.bgimage.get_rect()
        self.rect.centerx = SCREEN_WIDTH / 2
        self.rect.centery = SCREEN_HEIGHT / 2
        self.flipping = False
        self.flipcounter = 0

        self.tiles = []
        self.objects = []

        self.scripted_events = []

        conffile = open(data.levelpath(level_name))
        tiley = 0
        values = []
        set = "brown"  #Parsing this from the conf file should be added

        trigger = False
        current_event = None

        for line in conffile.readlines():

            if tiley < FULL_TILES_VER:
                tilex = 0
                while tilex < FULL_TILES_VER:
                    if (line[tilex] == "W"):
                        self.tiles.append(Tile(self.screen, tilex, tiley))
                    if (line[tilex] == "B"):
                        self.tiles.append(
                            Tile(self.screen, tilex, tiley, set, "bars"))
                    if (line[tilex] == "S"):
                        self.tiles.append(Spikes(self.screen, tilex, tiley))
                    tilex += 1
                tiley += 1

            else:

                if line.strip() != "":
                    values = line.split()

                    if trigger:
                        if values[0] == "end" and values[1] == "trigger":
                            trigger = False
                        else:
                            current_event.add_element(line)
                        continue
                    if values[0] == "trigger":
                        trigger = True
                        current_event = Scripted_event(values[1],
                                                       int(values[2]))
                        self.scripted_events.append(current_event)
                        continue

                    x = (float(values[1]) -
                         (FULL_TILES_HOR - TILES_HOR)) * TILE_DIM
                    y = (float(values[2]) -
                         (FULL_TILES_VER - TILES_VER)) * TILE_DIM
                    if values[0] == "player":
                        self.player = Player(self.screen, x, y)
                        continue
                    if values[0] == "spider":
                        self.objects.append(
                            Spider(self.screen, x, y, dir_from_str(values[3])))
                        continue
                    if values[0] == "key":
                        self.objects.append(
                            Item(self.screen, x, y, set, values[0]))
                        continue
                    if values[0] == "lever":
                        trigger_type = TRIGGER_NONE
                        if values[4] == "TRIGGER_FLIP":
                            trigger_type = TRIGGER_FLIP
                        self.objects.append(
                            Item(self.screen, x, y, set, values[0],
                                 int(values[3]), trigger_type))
                        continue

        self.reset_active_tiles()
        return
  def __init__(self, screen, level_name = "w0-l0"):
    self.screen = screen
    self.image = None
    self.flipping = False
    self.flipcounter = 0
    self.set = "brown"  #The default tileset, can be changed through level configuration

    self.tiles = []
    self.objects = []

    self.scripted_events = []

    self.cached_ground_check = {}

    self.dust_color = COLOR_DUST["brown"]

    self.level_name = level_name

    self.orientation = 0

    conffile = codecs.open(data.levelpath(self.level_name), "r", "utf_8")

    tiley = 0
    values = []

    trigger = False
    current_event = None

    parse_tiles = False

    for line in conffile:

      if parse_tiles:
        if tiley < FULL_TILES_VER:
          tilex = 0
          while tilex < FULL_TILES_VER:
            if (line[tilex] == "W") or (line[tilex] == "B") or (line[tilex] == "S"):
              self.add_tile(line[tilex], (tilex, tiley))
            tilex += 1
          tiley += 1
          continue
        else:
          parse_tiles = False
          continue

      elif line.strip() != "":
          values = line.split()

          #Parsing special commands

          if trigger:
            if values[0] == "end" and values[1] == "trigger":
              trigger = False
            else:
              current_event.add_element(line)
            continue
          elif values[0] == "trigger":
            trigger = True
            current_event = Scripted_event(values[1], int(values[2]))
            self.scripted_events.append(current_event)
            continue
          elif values[0] == "tiles":
            parse_tiles = True
            continue
          elif values[0] == "set":
            self.set = values[1]
            continue

          #Parsing objects
          x, y = tile_coords_to_screen_coords(values[1], values[2])
          if values[0] == "player":
            self.player = Player(self.screen, x, y)
            continue
          elif values[0] == "spider":
            self.objects.append(Spider( self.screen, x, y, dir_from_str(values[3]) ))
            continue
          elif values[0] == "blob":
            self.objects.append(Blob(self.screen, x, y, self.player))
            continue
          elif values[0] == "lever":
            trigger_type = TRIGGER_FLIP
            if values[4] == "TRIGGER_FLIP":
              trigger_type = TRIGGER_FLIP
            self.objects.append( Item(self.screen, x, y, self.set, values[0], int(values[3]), trigger_type) )
            continue
          else:
            try:
              self.objects.append(Item(self.screen, x, y, self.set, values[0]))
            except:
              error_message("Couldn't add object '" + values[0] + "'")
            continue

    self.dust_color = COLOR_DUST[self.set]

    self.bg_animations = {}
    self.bg_animations["default"] = Animation(self.set + "_background", "static")
    self.current_animation = "default"
    self.rect = (self.bg_animations[self.current_animation].update_and_get_image()).get_rect()
    self.rect.centerx = SCREEN_WIDTH / 2
    self.rect.centery = SCREEN_HEIGHT / 2

    self.reset_active_tiles()
    return