Usage

Installation

To use Deluxe engine, first install it using pip:

(.venv) $ pip3 install git+https://onedev.gts.org.ua/vezono/vegans-deluxe#egg=VegansDeluxe

Currently, we do not distribute our library on pypi.org. Yet.

If for some reason you need to install a version from different branch (ex. dev):

(.venv) $ pip3 install git+https://onedev.gts.org.ua/vezono/vegans-deluxe@dev#egg=VegansDeluxe

Basic usage

Below is an example of basic Session process. More examples can be found in examples folder.

import random

from VegansDeluxe import rebuild
from VegansDeluxe.core import Session, Entity
from VegansDeluxe.rebuild import Pistol, Shotgun
from VegansDeluxe.core import Engine

# Create the engine instance
engine = Engine()

# Create the game session and attach it to the engine
session = Session(engine.event_manager)
engine.attach_session(session)

# Create two players
player_a = Entity(session.id, "Player A", 4, 4, 5, 5)
player_b = Entity(session.id, "Player B", 4, 4, 5, 5)

# Attach players to the session
session.attach_entity(player_a)
session.attach_entity(player_b)

for entity in session.entities:
    for state in rebuild.all_states:
        # Attach all default states to all players
        entity.attach_state(state(), engine.event_manager)

    # Attach one random skill to all players
    entity.attach_state(random.choice(rebuild.all_skills), engine.event_manager)

# Set a weapon for each player
player_a.weapon = Shotgun(session.id, player_a.id)
player_b.weapon = Pistol(session.id, player_b.id)

# Update the list of actions, available for each player
engine.action_manager.update_actions(session)

# Get "Attack" Action instance
attack_a = engine.action_manager.get_action(session, player_a, 'attack')
attack_b = engine.action_manager.get_action(session, player_b, 'attack')

# Set player's attack target to each other
attack_a.target = player_b
attack_b.target = player_a

# Add attack actions to the action queue
engine.action_manager.queue_action_instance(attack_a)
engine.action_manager.queue_action_instance(attack_b)

# Execute the move
session.move()

# Display game logs
for text in session.texts:
    print(text, end='')