File: tile.py

package info (click to toggle)
whichwayisup 0.7.9-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 1,604 kB
  • ctags: 240
  • sloc: python: 2,368; makefile: 49; sh: 2
file content (64 lines) | stat: -rw-r--r-- 1,972 bytes parent folder | download | duplicates (9)
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
import pygame
import os

from pygame.locals import *

from locals import *

import data

from visibleobject import VisibleObject
from animation import Animation

from log import log_message

class Tile(VisibleObject):
  def __init__(self, screen, tilex, tiley, set = "brown", tileclass = "wall"):
    x = (tilex - (FULL_TILES_HOR - TILES_HOR) + 0.5) * TILE_DIM
    y = (tiley - (FULL_TILES_VER - TILES_VER) + 0.5) * TILE_DIM
    VisibleObject.__init__(self, screen, x, y)
    self.animations["default"] = Animation(set, tileclass)
    self.image = self.animations[self.current_animation].update_and_get_image()
    self.rect = self.image.get_rect()
    self.tilex = tilex
    self.tiley = tiley
    self.tileclass = tileclass
    self.aligned = True
    return

  def update(self, level = None):
    VisibleObject.update(self)
    if not self.flipping:
      self.realign()
    return

  def flip(self, flip_direction = CLOCKWISE):
    VisibleObject.flip(self, flip_direction)
    if flip_direction == CLOCKWISE:
      tempx = self.tilex
      self.tilex = FULL_TILES_VER - self.tiley - 1
      self.tiley = tempx
    else:
      tempy = self.tiley
      self.tiley = FULL_TILES_HOR - self.tilex - 1
      self.tilex = tempy


  def realign(self):
    self.rect.centerx = self.x
    self.rect.centery = self.y
    self.x = round((float(self.rect.right)/float(TILE_DIM)), 0)*TILE_DIM - self.rect.width / 2
    self.y = round((float(self.rect.bottom)/float(TILE_DIM)), 0)*TILE_DIM - self.rect.height / 2
    if self.rect.height % 2 == 1:
       self.y -= 1
    if self.rect.width % 2 == 1:
       self.x -= 1
    self.rect.centerx = self.x
    self.rect.centery = self.y
    return

  def is_aligned(self):
    aligned = self.rect.right % TILE_DIM == 0 and self.rect.bottom % TILE_DIM == 0
    if not aligned:
      log_message("tilepos " + str(self.rect.right) + " " + str(self.rect.bottom))
    return aligned