Exemple #1
0
def generate_monster(map, x, y, id):
    if id is Monsters.PLAYER:
        return Entity(
            "player", {
                Components.READS_INPUT: ReadsInput(),
                Components.POSITION: Position(x, y, True),
                Components.ICON: Icon('@', render_order=Render_Order.ACTOR),
                Components.MOVABLE: Movable(),
                Components.FOV: FOV(map, 8, True, 1),
                Components.ABILITY_SCORES: Ability_Scores(),
                Components.FIGHTER: Fighter(),
                Components.HITPOINTS: Hitpoints(10)
            })

    if id is Monsters.KOBOLD:
        return Entity(
            "kobold", {
                Components.POSITION: Position(x, y, True),
                Components.ICON: Icon('k', tcod.orange, Render_Order.ACTOR),
                Components.MOVABLE: Movable(),
                Components.FOV: FOV(map, 10, algorithm=1),
                Components.ABILITY_SCORES: Ability_Scores(),
                Components.FIGHTER: Fighter(),
                Components.HITPOINTS: Hitpoints(8),
                Components.AI: AI()
            })
def make_player(x: int, y: int, player: Optional[Player] = None) -> List[Any]:
    if player is None:
        player = Player()

    return [
        Display(0x0040),
        player,
        Position(x, y),
    ]
def make_healing_potion(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0021,
            color=0xFFFF0066,
            draw_order=-1,
        ),
        Item(name="healing potion", ),
        HealingPotion(),
        Position(x, y),
    ]
def make_fire_scroll(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x003F,
            color=0xFFFF6600,
            draw_order=-1,
        ),
        Item(name="fire scroll", ),
        FireScroll(),
        Position(x, y),
    ]
def make_trap(x: int, y: int, factory: Callable[[int, int],
                                                List[Any]]) -> List[Any]:
    return [
        Display(
            code=0x005E,
            color=0xFF999999,
            draw_order=-2,
        ),
        Trap(factory),
        Position(x, y),
    ]
def make_armour(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x005B,
            color=0xFF999999,
            draw_order=-1,
        ),
        Item(name="armour upgrade", ),
        Equipment.ARMOUR,
        Position(x, y),
    ]
def make_weapon(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0029,
            color=0xFF999999,
            draw_order=-1,
        ),
        Item(name="weapon upgrade", ),
        Equipment.WEAPON,
        Position(x, y),
    ]
def make_teleport_scroll(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x003F,
            color=0xFF6600FF,
            draw_order=-1,
        ),
        Item(name="teleport scroll", ),
        TeleportScroll(),
        Position(x, y),
    ]
def make_smoke_bomb(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0021,
            color=0xFF00FF66,
            draw_order=-1,
        ),
        Item(name="smoke bomb", ),
        SmokeBomb(),
        Position(x, y),
    ]
def make_officer(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0034,
            color=0xFFFFFF00,
        ),
        Monster(
            name="junior officer",
            threat=[3],
            defend=4,
            health=2,
        ),
        Position(x, y),
    ]
def make_defender(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x006B,
            color=0xFF00FF00,
        ),
        Monster(
            name="knight",
            threat=[2],
            defend=4,
            health=1,
        ),
        Position(x, y),
    ]
def make_elite_officer(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0033,
            color=0xFFFFFF00,
        ),
        Monster(
            name="senior officer",
            threat=[6],
            defend=5,
            health=3,
        ),
        Position(x, y),
    ]
def make_soldier(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0073,
            color=0xFFFFFFFF,
        ),
        Monster(
            name="soldier",
            threat=[2],
            defend=1,
            health=1,
        ),
        Position(x, y),
    ]
def make_assassin(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0063,
            color=0xFF666666,
        ),
        Monster(
            name="cutthroat",
            threat=[5],
            defend=1,
            health=1,
        ),
        Assassin(),
        Position(x, y),
    ]
def make_elite_soldier(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0053,
            color=0xFFFFFFFF,
        ),
        Monster(
            name="elite soldier",
            threat=[5],
            defend=2,
            health=2,
            article="an",
        ),
        Position(x, y),
    ]
def make_elite_defender(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x004B,
            color=0xFF00FF00,
        ),
        Monster(
            name="elite knight",
            threat=[5],
            defend=5,
            health=2,
            article="an",
        ),
        Position(x, y),
    ]
def make_archer(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0061,
            color=0xFF00FFFF,
        ),
        Monster(
            name="archer",
            threat=[2, 5],
            defend=1,
            health=1,
            article="an",
        ),
        Position(x, y),
    ]
def make_elite_assassin(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0043,
            color=0xFF666666,
        ),
        Monster(
            name="elite cutthroat",
            threat=[8],
            defend=2,
            health=2,
            article="an",
        ),
        Assassin(),
        Position(x, y),
    ]
def make_mid_boss(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0032,
            color=0xFFFFFF00,
        ),
        Monster(
            name="militia commander",
            threat=[9, 5],
            defend=4,
            health=4,
            article="the",
        ),
        Position(x, y),
        Boss(),
        CanTaunt(),
    ]
def make_end_boss(x: int, y: int) -> List[Any]:
    return [
        Display(
            code=0x0031,
            color=0xFFFFFF00,
        ),
        Monster(
            name="militia captain",
            threat=[11, 5],
            defend=5,
            health=5,
            article="the",
        ),
        Position(x, y),
        Boss(),
        CanTaunt(),
    ]
def move(position: Position, target: Tuple[int, int]) -> None:
    x, y = target
    position.x = x
    position.y = y
def make_stairs(x: int, y: int) -> List[Any]:
    return [
        Display(0x003E, draw_order=-2),
        Stairs(),
        Position(x, y),
    ]
Exemple #23
0
from ecs.system import System, ObserverSystem
from ecs.components.position import Position
from ecs.components.icon import Icon
from ecs.components.movable import Movable


class TestObersverSystem(ObserverSystem):
    def __init__(self):
        super().__init__(Components.POSITION, Components.MOVABLE)

    def process(self):
        return


char1 = Entity("test1", {
    Components.POSITION: Position(0, 0),
    Components.MOVABLE: Movable()
})
char2 = Entity(
    "test2",
    {
        Components.POSITION: Position(0, 0),
        # Components.MOVABLE: Movable()
    })
char3 = Entity(
    "test3",
    {
        # Components.POSITION: Position(0, 0),
        # Components.MOVABLE: Movable()
    })
chars = [char1, char2, char3]