Source code for screpl.plugins.display

from eudplib import *

from screpl.apps.repl import REPL
from screpl.core.appcommand import AppCommand
from screpl.main import get_app_manager
from screpl.main import is_bridge_mode

# initialize variables
app_manager = get_app_manager()

[docs]def plugin_get_dependency(): """Returns list of required plugins""" return []
[docs]@EUDFunc def eval_screen_size(): """evaluate screen size Make centerview to center of the map, and evaluate 0x62848C, 0x6284A8 """ center_x = 32 // 2 * app_manager.get_map_width() center_y = 32 // 2 * app_manager.get_map_height() loc1_le = EPD(0x58DC60) loc1_te = EPD(0x58DC60 + 4) loc1_re = EPD(0x58DC60 + 8) loc1_be = EPD(0x58DC60 + 12) # screen position and location loc1_lv = f_dwread_epd(loc1_le) loc1_tv = f_dwread_epd(loc1_te) loc1_rv = f_dwread_epd(loc1_re) loc1_bv = f_dwread_epd(loc1_be) prev_sx = f_dwread_epd(EPD(0x0062848C)) prev_sy = f_dwread_epd(EPD(0x006284A8)) # centerview and update x, y SeqCompute([ (loc1_le, SetTo, center_x), (loc1_te, SetTo, center_y), (loc1_re, SetTo, center_x), (loc1_be, SetTo, center_y)]) f_dwwrite_epd(loc1_le, center_x) f_dwwrite_epd(loc1_te, center_y) f_dwwrite_epd(loc1_re, center_x) f_dwwrite_epd(loc1_be, center_y) DoActions(CenterView(1)) cur_sx = f_dwread_epd(EPD(0x0062848C)) cur_sy = f_dwread_epd(EPD(0x006284A8)) # get size dx = center_x - cur_sx dy = center_y - cur_sy # restore screen screen_x = prev_sx + dx screen_y = prev_sy + dy SeqCompute([ (loc1_le, SetTo, screen_x), (loc1_te, SetTo, screen_y), (loc1_re, SetTo, screen_x), (loc1_be, SetTo, screen_y)]) DoActions(CenterView(1)) # restore location SeqCompute([ (loc1_le, SetTo, loc1_lv), (loc1_te, SetTo, loc1_tv), (loc1_re, SetTo, loc1_rv), (loc1_be, SetTo, loc1_bv)]) EUDReturn([dx*2, dy*2])
[docs]def plugin_setup(): # make commands from .incremental import IncrementalDisplayApp from .charreport import CharReportApp @AppCommand([]) def start_command1(self): """Start IncrementalDisplayApp""" app_manager.start_application(IncrementalDisplayApp) REPL.add_command('display', start_command1) if is_bridge_mode(): @AppCommand([]) def start_command2(self): """Export character report to bridge. # of characters per line""" app_manager.start_application(CharReportApp) REPL.add_command('charreport', start_command2)