SC2: make apworld compatible (#1024)

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
This commit is contained in:
Fabian Dill 2022-10-01 15:24:05 +02:00 committed by GitHub
parent 4943d26160
commit e9e15e854d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 27 deletions

View File

@ -12,21 +12,9 @@ import typing
import queue import queue
from pathlib import Path from pathlib import Path
import nest_asyncio # CommonClient import first to trigger ModuleUpdater
import sc2 from CommonClient import CommonContext, server_loop, ClientCommandProcessor, gui_enabled, get_base_parser
from sc2.bot_ai import BotAI
from sc2.data import Race
from sc2.main import run_game
from sc2.player import Bot
import NetUtils
from MultiServer import mark_raw
from Utils import init_logging, is_windows from Utils import init_logging, is_windows
from worlds.sc2wol import SC2WoLWorld
from worlds.sc2wol.Items import lookup_id_to_name, item_table, ItemData, type_flaggroups
from worlds.sc2wol.Locations import SC2WOL_LOC_ID_OFFSET
from worlds.sc2wol.MissionTables import lookup_id_to_mission
from worlds.sc2wol.Regions import MissionInfo
if __name__ == "__main__": if __name__ == "__main__":
init_logging("SC2Client", exception_logger="Client") init_logging("SC2Client", exception_logger="Client")
@ -34,10 +22,21 @@ if __name__ == "__main__":
logger = logging.getLogger("Client") logger = logging.getLogger("Client")
sc2_logger = logging.getLogger("Starcraft2") sc2_logger = logging.getLogger("Starcraft2")
import colorama import nest_asyncio
import sc2
from sc2.bot_ai import BotAI
from sc2.data import Race
from sc2.main import run_game
from sc2.player import Bot
from worlds.sc2wol import SC2WoLWorld
from worlds.sc2wol.Items import lookup_id_to_name, item_table, ItemData, type_flaggroups
from worlds.sc2wol.Locations import SC2WOL_LOC_ID_OFFSET
from worlds.sc2wol.MissionTables import lookup_id_to_mission
from worlds.sc2wol.Regions import MissionInfo
from NetUtils import ClientStatus, RawJSONtoTextParser import colorama
from CommonClient import CommonContext, server_loop, ClientCommandProcessor, gui_enabled, get_base_parser from NetUtils import ClientStatus, NetworkItem, RawJSONtoTextParser
from MultiServer import mark_raw
nest_asyncio.apply() nest_asyncio.apply()
max_bonus: int = 8 max_bonus: int = 8
@ -357,8 +356,9 @@ class SC2Context(CommonContext):
self.ui = SC2Manager(self) self.ui = SC2Manager(self)
self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI") self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI")
import pkgutil
Builder.load_file(Utils.local_path(os.path.dirname(SC2WoLWorld.__file__), "Starcraft2.kv")) data = pkgutil.get_data(SC2WoLWorld.__module__, "Starcraft2.kv").decode()
Builder.load_string(data)
async def shutdown(self): async def shutdown(self):
await super(SC2Context, self).shutdown() await super(SC2Context, self).shutdown()
@ -440,8 +440,8 @@ wol_default_categories = [
] ]
def calculate_items(items: typing.List[NetUtils.NetworkItem]) -> typing.List[int]: def calculate_items(items: typing.List[NetworkItem]) -> typing.List[int]:
network_item: NetUtils.NetworkItem network_item: NetworkItem
accumulators: typing.List[int] = [0 for _ in type_flaggroups] accumulators: typing.List[int] = [0 for _ in type_flaggroups]
for network_item in items: for network_item in items:

View File

@ -1,5 +1,5 @@
from BaseClasses import MultiWorld from BaseClasses import MultiWorld
from ..AutoWorld import LogicMixin from worlds.AutoWorld import LogicMixin
class SC2WoLLogic(LogicMixin): class SC2WoLLogic(LogicMixin):

View File

@ -1,8 +1,8 @@
from typing import List, Set, Dict, Tuple, Optional, Callable, NamedTuple from typing import List, Set, Dict, Tuple, Optional, Callable
from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
from .Locations import LocationData from .Locations import LocationData
from .Options import get_option_value from .Options import get_option_value
from worlds.sc2wol.MissionTables import MissionInfo, vanilla_shuffle_order, vanilla_mission_req_table, \ from .MissionTables import MissionInfo, vanilla_shuffle_order, vanilla_mission_req_table, \
no_build_regions_list, easy_regions_list, medium_regions_list, hard_regions_list no_build_regions_list, easy_regions_list, medium_regions_list, hard_regions_list
import random import random

View File

@ -1,15 +1,14 @@
import typing import typing
from typing import List, Set, Tuple, NamedTuple from typing import List, Set, Tuple
from BaseClasses import Item, MultiWorld, Location, Tutorial, ItemClassification from BaseClasses import Item, MultiWorld, Location, Tutorial, ItemClassification
from ..AutoWorld import WebWorld from worlds.AutoWorld import WebWorld, World
from .Items import StarcraftWoLItem, item_table, filler_items, item_name_groups, get_full_item_list, \ from .Items import StarcraftWoLItem, item_table, filler_items, item_name_groups, get_full_item_list, \
basic_unit basic_unit
from .Locations import get_locations from .Locations import get_locations
from .Regions import create_regions from .Regions import create_regions
from .Options import sc2wol_options, get_option_value from .Options import sc2wol_options, get_option_value
from .LogicMixin import SC2WoLLogic from .LogicMixin import SC2WoLLogic
from ..AutoWorld import World
class Starcraft2WoLWebWorld(WebWorld): class Starcraft2WoLWebWorld(WebWorld):