コード例 #1
0
from aot.model.unit import Unit
from aot.model.enums.player import PlayerEnum
from aot.model.enums.sizes import Size
from aot.model.enums.tile import EnumTile
from aot.model.enums.unit import UnitConstant, UnitType
from aot.model.scenario import Scenario
from aot.model.trigger import Trigger
from aot.utilities.configuration import Configuration
import logging
import numpy as np
import random

logging.basicConfig(level=logging.INFO)
C = Configuration("examples/configuration_de.json")

scn = Scenario(size=Size.TINY)
scn.load_template(Size.TINY)

test = Trigger("Build Wonder Time (need change)", enable=1, loop=False)
test.then_(ModifyAttribute(source_player=1))
test.then_(ModifyAttribute(source_player=2))
test.then_(ModifyAttribute(source_player=3))
test.then_(ModifyAttribute(source_player=4))
test.then_(ModifyAttribute(source_player=5))
test.then_(ModifyAttribute(source_player=6))
test.then_(ModifyAttribute(source_player=7))
test.then_(ModifyAttribute(source_player=8))
test.then_(ModifyAttributeCastle(source_player=1))
test.then_(ModifyAttributeCastle(source_player=2))
test.then_(ModifyAttributeCastle(source_player=3))
test.then_(ModifyAttributeCastle(source_player=4))
コード例 #2
0
from aot.model.effect import *
from aot.model.trigger import Trigger
from aot.model.enums.sizes import Size
from aot.model.scenario import Scenario
from aot.utilities.configuration import Configuration
import logging
from test.test_api.compare import compare_scenario_files

logging.basicConfig(level=logging.DEBUG)
C = Configuration("test/dirty_tests/config.json")

scn = Scenario(size=Size.GIANT)
scn.load_template(Size.GIANT)

scn.add(
    Trigger("Trigger 0", enable=1).then_(
        SendInstruction(message="Hello instruction !!!! (from true file)")))
scn.add(
    Trigger("Trigger 1", enable=1).then_(
        SendInstruction(message="Hello instruction 2 !!!! (from true file)")))

scn.save(C.game_path_scenario, "test_instruction_from_scratch")

copy = Scenario(size=Size.GIANT)
copy.load(C.game_path_scenario, "test_instruction_from_scratch")
true = Scenario(size=Size.GIANT)
true.load(C.game_path_scenario, "hello_instruction")

compare_scenario_files(copy, true, header=True)

compare_scenario_files(copy, true, header=False)
コード例 #3
0
from aot.model.enums.sizes import Size
from aot.model.scenario import Scenario
from aot.utilities.configuration import Configuration
import logging
from test.test_api.compare import compare_scenario_files

logger = logging.getLogger(__name__)
C = Configuration("config.json")

logging.basicConfig(level=logging.DEBUG)

copy = Scenario(size=Size.GIANT)
copy.load(C.game_path_scenario, "test_display_instruction")
copy.save(C.game_path_scenario, "test_display_instruction_copy")
true = Scenario(size=Size.GIANT)
true.load(C.game_path_scenario, "test_display_instruction")

copy = Scenario(size=Size.GIANT)
copy.load(C.game_path_scenario, "test_display_instruction_copy")

print(compare_scenario_files(copy, true, header=True))
print(compare_scenario_files(copy, true, header=False))
コード例 #4
0
ファイル: load.py プロジェクト: ncarrara/age-of-triggers
from aot.model.enums.sizes import Size
from aot.model.scenario import Scenario
from aot.utilities.configuration import Configuration

from aot.model.enums import constants
import logging


basename = "fresh_scenario"
#basename = "fresh_scenario2"
basename = "fresh_scenario3"
basename = "large"

basename = "debug_de"
basename = "large2"
basename = "template_small"
C = Configuration("test/dirty_tests/config.json")

logging.basicConfig(level=logging.DEBUG)

scn = Scenario()
scn.load(C.game_path_scenario, basename)
コード例 #5
0
from aot.model.condition import *
from aot.model.effect import *
from aot.model.enums.player import PlayerEnum
from aot.model.enums.sizes import Size
from aot.model.enums.tile import EnumTile
from aot.model.enums.unit import UnitConstant, UnitType
from aot.model.scenario import Scenario
from aot.model.trigger import Trigger
from aot.utilities.configuration import Configuration
import logging
import numpy as np

logging.basicConfig(level=logging.DEBUG)
C = Configuration("examples/configuration_de.json")

scn = Scenario(size=Size.NORMAL)
# scn.load(C.game_path_scenario, "template-aotw")
scn.load_template(Size.NORMAL)
#
TIME_TO_TRAIN_UNITS = 150
NUMBER_OF_MESSAGES_OPEN_AREA_COUNTDOWN = int(
    TIME_TO_TRAIN_UNITS / 5)  # int(TIME_TO_TRAIN_UNITS / 20)
MAX_TIME_OF_A_ROUND = 600
EXTRA_POPULATION = 60
WIN_AREA_POSITION_RELATIVE_TO_SPAWN = 15
SPAWN_LENGTH = 50
GOLD = 10000
FOOD = 10000
STONE = 0
WOOD = 10000
NUMBER_OF_WARNING = 10
コード例 #6
0
import numpy as np

import logging
from aot.model.scenario import Scenario
from aot.model.unit import Unit
from aot.meta_triggers.metatrigger_treasure import TreasureLoot, TreasureQuarry, TreasureLumber
from aot.utilities.configuration import Configuration

logging.basicConfig(level=logging.DEBUG)
C = Configuration("examples\configuration_de.json")
scn = Scenario()

for _ in range(100):
    n = np.random.random()
    x = int(np.random.random() * scn.get_width())
    y = int(np.random.random() * scn.get_height())
    if n < 0.33:
        treasure = TreasureLoot(x, y, 500)
    elif n < 0.66:
        treasure = TreasureLumber(x, y, 500)
    else:
        treasure = TreasureQuarry(x, y, 500)
    scn.add(treasure)

scn.save(C.game_path_scenario, "random_tresures")
コード例 #7
0
from aot.model.enums import constants
import logging

from test.test_api.compare import compare_scenario_files
import logging
import os

logger = logging.getLogger(__name__)
C = Configuration("config.json")

# basename = "fresh"
basename = "debug_de"

logging.basicConfig(level=logging.DEBUG)

true = Scenario( size=Size.GIANT)
true.load("../scenarios", basename, "../tmp/true.header", "../tmp/true.decompressed")

true.save("../tmp", basename, change_timestamp=False)
true.save(C.game_path_scenario, basename + "_tmp", change_timestamp=True)
copy = Scenario(size=Size.GIANT)
copy.load("../tmp", basename, "../tmp/copy.header", "../tmp/copy.decompressed")

differences = compare_scenario_files(copy, true, header=True)
assert len(differences) == 0, "Variables from HEADER are different for those keys " + str(differences)
print("[OK] Variables header")

differences = compare_scenario_files(copy, true)

assert len(differences) == 0, "Variables are different for those keys " + str(differences)
コード例 #8
0
ファイル: test_aotw.py プロジェクト: ncarrara/age-of-triggers
from aot.model.enums.sizes import Size
from aot.model.scenario import Scenario
from aot.utilities.configuration import Configuration

from aot.model.enums import constants
import logging

from test.test_api.compare import compare_scenario_files
import logging
import os

logger = logging.getLogger(__name__)
C = Configuration("config.json")

# basename = "fresh"

logging.basicConfig(level=logging.DEBUG)

# true = Scenario( size=Size.GIANT)
# true.load(C.game_path_scenario, "age-of-total-war 0.02")
copy = Scenario(size=Size.GIANT)
copy.load(C.game_path_scenario, "age-of-total-war xaxa")

# differences = compare_scenario_files(copy, true, header=True)
# print(differences)
# differences = compare_scenario_files(copy, true)
# print(differences)
コード例 #9
0
from aot.meta_triggers.DisplayInstructions import DisplayInstructions, InstructionParameters
from aot.meta_triggers.invicible_unit import InvicibleUnit
from aot.meta_triggers.no_house_needed import NoHouseNeeded
from aot.model.condition import *
from aot.model.effect import *
from aot.model.unit import Unit
from aot.model.enums.player import PlayerEnum
from aot.model.enums.sizes import Size
from aot.model.enums.tile import EnumTile
from aot.model.enums.unit import UnitConstant, UnitType
from aot.model.scenario import Scenario
from aot.model.trigger import Trigger
from aot.utilities.configuration import Configuration
import logging
import numpy as np
import random

logging.basicConfig(level=logging.INFO)
C = Configuration("examples/configuration_de.json")

scn = Scenario(size=Size.TINY)
scn.load(
    path="templates",
    basename="template_tiny",
    path_header=
    "C:/Users/cheung/Documents/age-of-triggers/templates/header/text.txt",
    path_decompressed_data=
    "C:/Users/cheung/Documents/age-of-triggers/templates/decompressed_data/text.txt"
)
コード例 #10
0
def generate_black_and_white_from_png(use_beaches,
                                      use_gradients,
                                      png_img,
                                      path,
                                      basename,
                                      size=Size.GIANT,
                                      rotation=0):
    print(PIL.PILLOW_VERSION)
    scn = Scenario(size=size)
    img = Image.open(png_img)
    img = img.convert('L')
    img = img.point(lambda x: 0 if x < 128 else 255, '1')
    img = img.resize((scn.map.width, scn.map.height), Image.ANTIALIAS)
    img = img.transpose(Image.FLIP_TOP_BOTTOM)
    img = ImageOps.invert(img.convert("RGB")).convert('1')
    img = img.rotate(rotation)

    for x in range(img.size[0]):
        for y in range(img.size[1]):
            is_black = img.getpixel((x, y)) == 0
            if is_black:
                scn.map.tiles[x][y].type = 22

    if use_beaches is True:
        erosion_img = img.filter(ImageFilter.MinFilter(3))
        for _ in range(1):
            erosion_img = erosion_img.filter(ImageFilter.MinFilter(3))

        beaches = ImageChops.subtract(img, erosion_img)
        # beaches.show()
        for x in range(img.size[0]):
            for y in range(img.size[1]):
                is_white = beaches.getpixel((x, y)) == 255
                if is_white:
                    scn.map.tiles[x][y].type = 2

    if use_gradients is True:  # to avoid any other type of stuff

        # inverted.show()
        dilation_img_for_azure = img.filter(ImageFilter.MaxFilter(3))
        for _ in range(7):
            dilation_img_for_azure = dilation_img_for_azure.filter(
                ImageFilter.MaxFilter(3))
        azure_water = ImageChops.subtract(dilation_img_for_azure, img)
        # azure_water.show()
        for x in range(img.size[0]):
            for y in range(img.size[1]):
                is_white = azure_water.getpixel((x, y)) == 255
                if is_white:
                    scn.map.tiles[x][y].type = 1

        dilation_img_for_medium = dilation_img_for_azure.filter(
            ImageFilter.MaxFilter(3))
        for _ in range(7):
            dilation_img_for_medium = dilation_img_for_medium.filter(
                ImageFilter.MaxFilter(3))
        medium_water = ImageChops.subtract(dilation_img_for_medium,
                                           dilation_img_for_azure)
        for x in range(img.size[0]):
            for y in range(img.size[1]):
                is_white = medium_water.getpixel((x, y)) == 255
                if is_white:
                    scn.map.tiles[x][y].type = 23

    scn.save(path, basename)
コード例 #11
0
import logging

from test.test_api.compare import compare_scenario_files
import logging
import os

logger = logging.getLogger(__name__)
C = Configuration("config.json")

#basename = "debug_de"
#basename = "fresh_scenario"
basename = "fresh"

logging.basicConfig(level=logging.DEBUG)

scn = Scenario(header_type=constants.HT_AOE2_DE, size=Size.GIANT)
scn.load(C.game_path_scenario, basename)
scn.save("../tmp", basename)

scn_to_check = Scenario(header_type=constants.HT_AOE2_DE, size=Size.GIANT)
scn_to_check.load("../tmp", basename, path_decompressed_data="../tmp/copy.decompressed")

true_scn = Scenario(header_type=constants.HT_AOE2_DE, size=Size.GIANT)
true_scn.load(C.game_path_scenario, basename, path_decompressed_data="../tmp/true.decompressed")

logger.debug("---------------------------------------")
logger.debug("---------------------------------------")
logger.debug("---------------------------------------")
logger.debug("---------------------------------------")

copy_size = os.path.getsize("../tmp/copy.decompressed")