def setup_android_version(): vernum = osutil.get_android_version() if vernum >= 14: # icecream sandwich causes bug features.add_feature("app.disable_android_pause", type=bool, default=True) name, version = osutil.get_android_version_info() if osutil.is_desktop: info_string = 'Desktop' else: info_string = 'Android %s %s' % (name.capitalize(), version) print 'running', info_string, '(code=%s)' % vernum
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import thread import save import os import osutil import sys import time import features import gc import random features.add_feature('debug.garbage', False, type=bool) features.add_feature('debug.gc_count', False, type=bool) features.add_feature('debug.monitor.stop_on_pause', True, type=bool) def get_save_dir(): if osutil.is_android: return osutil.get_external_storage() + '/saves' else: return os.path.expanduser('~/.freeciv/android-saves') def get_mem_usage(process='self'): try: return int(open('/proc/%s/stat' % process).read().split()[22]) except IOError:
import os import gzip import features import subprocess import atexit import sys import stat import platform import dropbox from freeciv.client import _freeciv as freeciv from monitor import get_save_dir features.add_feature('app.ruleset', default='classic') features.add_feature('app.difficulty', default='easy') # Using fork causes the "Failed to connect to game server" error that happens randomly # https://stackoverflow.com/questions/6078712/is-it-safe-to-fork-from-within-a-thread#6079669 # https://docs.oracle.com/cd/E19455-01/806-5257/gen-2/index.html # http://bugs.python.org/issue1336 # https://bugs.python.org/issue6721 features.add_feature('app.fork', type=bool, default=False) localhost = '127.0.0.1' def new_game(): port = random.randint(2000, 15000) args = ('-r', './data/%s.serv' % features.get('app.ruleset')) gui = ServerGUI()
import client import sync import monitor import functools import time import thread import random import os import gzip import features import subprocess from monitor import get_save_dir features.add_feature('app.ruleset', default='default') localhost = '127.0.0.1' def new_game(): port = random.randint(2000, 15000) args = ('-r', './data/%s.serv' % features.get('app.ruleset')) start_server(port, args=args) ui.set(ServerGUI(port)) def connect_dialog(): host = uidialog.inputbox('Server host') port = int(uidialog.inputbox('Server port')) username = uidialog.inputbox('User name') connect(host, port, username)
import graphics import sync import gold try: import json except ImportError: import microjson as json try: from ui import ctrl except ImportError: ctrl = None features.add_feature('app.debug', default=True, type=bool) features.add_feature('app.autoupdate', default=True, type=bool) features.add_feature('app.desktop_size', default='1280,800') features.add_feature('app.resume', default=False, type=bool) features.add_feature('app.profile', default=False, type=bool) features.add_feature('app.shutdown', default=10, type=int) features.add_feature('app.multiplayer', default=False, type=bool) features.add_feature('app.marketnotice', default=True, type=bool) features.add_feature('app.version') features.add_feature('app.launch_param', default=None) features.add_feature('app.launch_token', default=None, safe=True) features.add_feature('app.action', default=None, safe=True) features.add_feature('app.action_arg', default=None, safe=True) features.add_feature('debug.remote', default=False, type=bool) features.add_feature('debug.remote.passphase', default='freeciv1234', type=str)
global PROTO PROTO = proto features.set_applier('civsync.host', apply_host_change, default=HOST) features.set_applier('civsync.proto', apply_proto_change, default=PROTO) def apply_user_agent_change(ua): global USER_AGENT USER_AGENT = ua # hack, hack, hack print 'changing user agent to', ua urllib.URLopener.version = ua features.set_applier('civsync.ua', apply_user_agent_change) features.set('civsync.ua', 'CivSyncAndroid/1108') features.add_feature('civsync.enable', False, type=bool) features.add_feature('civsync.sid', None) def get_sid(): sid = features.get('civsync.sid') if not sid: sid = ''.join( hex(ord(ch))[2:] for ch in os.urandom(8) ) features.set_perm('civsync.sid', sid) return sid def updates(install_time): request('/sync/updates', install_time=install_time) def get_install_time(): path = os.path.join(save.get_save_dir(), 'install_time') try:
import osutil import uidialog import gamescreen import ui import client import sync import features import monitor import options from sync import lzma def new_game(): save.new_game() features.add_feature('app.debug', default=True, type=bool) features.add_feature('app.autoupdate', default=True, type=bool) features.add_feature('app.forcesize') features.add_feature('app.resume', default=True, type=bool) features.add_feature('app.profile', default=False, type=bool) features.add_feature('app.shutdown', default=10, type=int) features.add_feature('app.multiplayer', default=False, type=bool) def apply_hardexit(t): client.freeciv.hard_exit = t features.set_applier('app.hardexit', apply_hardexit, type=bool, default=True) main_menu = None main_menu_update_shown = False
import progress import save import osutil import uidialog import gamescreen import ui import client import sync import features import monitor import options import menus from sync import lzma features.add_feature('app.debug', default=True, type=bool) features.add_feature('app.autoupdate', default=True, type=bool) features.add_feature('app.forcesize') features.add_feature('app.resume', default=False, type=bool) features.add_feature('app.profile', default=False, type=bool) features.add_feature('app.shutdown', default=10, type=int) features.add_feature('app.multiplayer', default=False, type=bool) features.add_feature('app.version') features.add_feature('debug.remote', default=False, type=bool) features.add_feature('debug.remote.passphase', default='freeciv1234', type=str) features.add_feature('debug.remote.port', default=15589, type=int) def apply_hardexit(t): client.freeciv.hard_exit = t
# it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import os import sys import pygame import time import features features.add_feature("app.disable_android_pause", type=bool, default=False) try: import android import pyjni except ImportError: android = None is_android = bool(android) is_desktop = not is_android def init(): if android: android.init() android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)
def get_internal_storage(): return os.path.expanduser('~/.freeciv/android-internal') else: from android import get_internal_storage import os import sys import graphics import time import features from graphics import sdl_open as open_res features.add_feature('app.emulatedpi', 60, type=int) if android: import jnius import reflect as jnius_reflect is_android = bool(android) is_desktop = not is_android def init(): if android: android.map_key(android.KEYCODE_BACK, graphics.const.K_ESCAPE) android.map_key(android.KEYCODE_MENU, graphics.const.K_F1) _jni_initted = False
import functools import time import thread import random import os import gzip import features import subprocess import atexit import sys from freeciv.client import _freeciv as freeciv from monitor import get_save_dir features.add_feature('app.ruleset', default='default') localhost = '127.0.0.1' def new_game(): port = random.randint(2000, 15000) args = ('-r', './data/%s.serv' % features.get('app.ruleset')) gui = ServerGUI() start_server(port, args=args, line_callback=gui.server_line_callback) gui.connect(port) ui.set(gui.ui) class ServerGUI(ui.LinearLayoutWidget): def __init__(self, no_quit=False):
import thread import random import os import gzip import features import subprocess import atexit import sys import dropbox from freeciv.client import _freeciv as freeciv from monitor import get_save_dir features.add_feature('app.ruleset', default='default') features.add_feature('app.fork', type=bool, default=hasattr(os, 'fork')) localhost = '127.0.0.1' def new_game(): port = random.randint(2000, 15000) args = ('-r', './data/%s.serv' % features.get('app.ruleset')) gui = ServerGUI() start_server(port, args=args, line_callback=gui.server_line_callback) gui.connect(port) ui.set(gui.ui) class ServerGUI(ui.LinearLayoutWidget): def __init__(self, no_quit=False): super(ServerGUI, self).__init__()
import ui import features import osutil from freeciv import sync import save as _save import functools from freeciv.dropbox import get_download_path if osutil.is_android: import reflect as jnius_reflect DropboxHelper = None features.add_feature('civsync.key', None) features.add_feature('civsync.secret', None) # Important: all calls to Java need to be done in UI thread # (execute_later_decorator is for that) def init(): print 'DropboxHelper init' global DropboxHelper if not DropboxHelper: DropboxHelper = jnius_reflect.autoclass( 'com.zielm.freeciv.DropboxHelper') print 'initializing DropboxHelper tokens' tokenKey = features.get('civsync.key') tokenSecret = features.get('civsync.secret')
# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import ui import pygame import client import math import time import features from client import freeciv features.add_feature('app.new_joystick', default=True, type=bool) order_sprites_names = ('auto attack,auto connect,auto explore,' 'auto settlers,build city,cutdown forest,plant forest,' 'mine,irrigate,no orders,disband,fortify,goto,goto city,home city,nuke,' 'paradrop,partol,pillage,railroad,road,sentry,unload,wait,' 'forterss,fallout,pollutions,airbases,add to city,help build wonder,' 'none,spy,none,return to,airlift,load'.split(',')) def get_order_sprite(name): if name not in order_sprites_names: name = 'none' i = order_sprites_names.index(name) return order_sprites[i][0] class Menu(ui.LinearLayoutWidget):
import save import osutil import uidialog import gamescreen import ui import client import features import monitor import options import menus import graphics import sync import gold features.add_feature("app.debug", default=True, type=bool) features.add_feature("app.autoupdate", default=True, type=bool) features.add_feature("app.forcesize") features.add_feature("app.resume", default=False, type=bool) features.add_feature("app.profile", default=False, type=bool) features.add_feature("app.shutdown", default=10, type=int) features.add_feature("app.multiplayer", default=False, type=bool) features.add_feature("app.marketnotice", default=True, type=bool) features.add_feature("app.version") features.add_feature("debug.remote", default=False, type=bool) features.add_feature("debug.remote.passphase", default="freeciv1234", type=str) features.add_feature("debug.remote.port", default=15589, type=int) def apply_hardexit(t):
overlays = [] screen_height = 0 screen_width = 0 screen_size = 0, 0 show_fps = False def set_show_fps(val): global show_fps show_fps = val features.set_applier('ui.showfps', set_show_fps, type=bool, default=False) features.add_feature('ui.enable_anim', type=bool, default=True) def replace(new_screen): global screen screen = new_screen def replace_anim(new_screen, direction=1): if features.get('ui.enable_anim'): replace(Animation(screen, new_screen, direction)) else: replace(new_screen) def set(new_screen, anim=True):
def set_show_fps(val): global show_fps show_fps = val def create_window(size): graphics.init() fullscreen = features.get('ui.fullscreen') if fullscreen: size = graphics.get_screen_size() graphics.create_window(size, fullscreen=fullscreen) if features.get('ui.offscreen'): graphics.set_offscreen_window(size) features.set_applier('ui.showfps', set_show_fps, type=bool, default=False) features.add_feature('ui.enable_anim', type=bool, default=True) features.add_feature('ui.fps_limit', type=int, default=30) features.add_feature('ui.redraw_fps_limit', type=int, default=60) features.add_feature('ui.offscreen', type=bool, default=False) features.add_feature('ui.fullscreen', type=bool, default=True) features.add_feature('stream.enable', type=bool, default=False) features.add_feature('stream.fd', type=int, default=2) def replace(new_screen): assert isinstance(new_screen, ui.Widget) global _screen _screen = new_screen _set_allow_animation(0) def replace_anim(new_screen, direction=1):
from client import freeciv import graphics import citydlg import gamemenu import icons import features import diplodialog import empiredlg import help import dropbox import mapdrawer SELECT_POPUP = 0 features.add_feature('app.full_label_toggle_button', type=bool) features.add_feature('app.map_tiles', type=bool, default=False) class ScreenClient(client.Client): def __init__(self, **kwargs): client.Client.__init__(self, **kwargs) self.turn_loading_dialog = None self.init_ui() def init_ui(self): self.ui = ScreenWidget(self) #def console_line(self, line): # self.ui.console.line(line) def end_turn(self):
def set_debug(flag): global debug debug = flag debug = False def make_init_profiling_tuple(): return [0, 0.0] _profiling_callback = collections.defaultdict(make_init_profiling_tuple) _profiling_calls = collections.defaultdict(make_init_profiling_tuple) features.add_feature('debug.freeciv.print_callbacks', type=bool, default=False) features.set_applier('debug.freeciv', set_debug, type=bool, default=False) class _obj: pass func = _obj() callback = _obj() const = _obj() hard_exit = True callback_num = 0
def apply_host_change(host): print 'using civsync host', host civsync.HOST = host features.set_applier('civsync.host', apply_host_change, default=civsync.HOST) def apply_user_agent_change(ua): civsync.USER_AGENT = ua features.set_applier('civsync.ua', apply_user_agent_change) features.set('civsync.ua', 'CivSyncAndroid/1104') features.add_feature('civsync.enable', False, type=bool) session = None def show_load(): request(show_list, 'list') def show_list(entries): panel = ui.LinearLayoutWidget() panel.add(ui.Label('Saves from %s' % civsync.HOST)) for entry in entries: panel.add( ui.Button('%s - %dkB' % (entry.name, entry.size / 1024), functools.partial(download_sync, entry.sha1)))
import ui from freeciv import sync from freeciv import help import osutil import features from freeciv import sync import functools import microjson as json features.add_feature('gold.enable', type=bool, default=False) features.add_feature('gold.initiated', type=bool, default=False) def set_gold_status(status): pass features.set_applier('gold.status', default='none', func=set_gold_status) features.add_feature('gold.session_warning', type=bool, default=False) def menu(): layout = ui.LinearLayoutWidget(marginleft=10) buttons = ui.HorizontalLayoutWidget(spacing=10) text_label = help.LongTextWidget('Loading...', ui.screen_width, ui.smallfont) layout.add(buttons) layout.add(text_label) layout.add(buttons) ui.async(check_products) def text_fetched(text):
history = [] screen = None overlays = [] screen_height = 0 screen_width = 0 screen_size = 0, 0 show_fps = False def set_show_fps(val): global show_fps show_fps = val features.set_applier('ui.showfps', set_show_fps, type=bool, default=False) features.add_feature('ui.enable_anim', type=bool, default=True) def replace(new_screen): global screen screen = new_screen def replace_anim(new_screen, direction=1): if features.get('ui.enable_anim'): replace(Animation(screen, new_screen, direction)) else: replace(new_screen) def set(new_screen, anim=True): if screen: history.append(screen) if anim:
android = None def get_internal_storage(): return os.path.expanduser('~/.freeciv/android-internal') else: from android import get_internal_storage import os import sys import graphics import time import features from graphics import sdl_open as open_res features.add_feature('app.emulatedpi', 60, type=int) if android: import jnius import reflect as jnius_reflect is_android = bool(android) is_desktop = not is_android def init(): if android: android.map_key(android.KEYCODE_BACK, graphics.const.K_ESCAPE) android.map_key(android.KEYCODE_MENU, graphics.const.K_F1)
# process test set if utils.ON_KAGGLE: test = DSB2019Dataset(mode='test') test = preprocess.preprocess_dataset(test) X_test, all_test_history = features.generate_features_by_acc( test.main_df, win_code, event_code_list, event_id_list, mode='test') # for feat_name in feature_mapper.keys(): # X_test[feat_name] = X_test['session_title'].map( # feature_mapper[feat_name]) del test gc.collect() else: X_test = utils.load_pickle(test_feat_path) all_test_history = utils.load_pickle(all_test_feat_path) X_test = features.add_feature(X_test, activities_map) X_test = features.add_agg_feature_test(X_test, all_test_history) # adjust data if os.path.exists(input_dir / 'adjust.json'): print('adjust !!!') adjust_dict = utils.load_json(input_dir / 'adjust.json') for key, factor in adjust_dict.items(): # print(f'{key}: {factor}') X_test[key] *= factor X_test = X_test[all_features] if config['model_class'] == 'ModelNNRegressor': print('preprocessing for nn ...') encoder_dict = utils.load_pickle(input_dir / 'encoder_dict.pkl') X_test = preprocess.preprocess_for_nn_from_encoder_dict(
import ui from freeciv import sync from freeciv import help import osutil import features from freeciv import sync import functools import microjson as json features.add_feature('gold.enable', type=bool, default=False) features.add_feature('gold.initiated', type=bool, default=False) def set_gold_status(status): pass features.set_applier('gold.status', default='none', func=set_gold_status) features.add_feature('gold.session_warning', type=bool, default=False) def menu(): layout = ui.LinearLayoutWidget(marginleft=10) buttons = ui.HorizontalLayoutWidget(spacing=10) text_label = help.LongTextWidget('Loading...', ui.screen_width, ui.smallfont) layout.add(buttons) layout.add(text_label) layout.add(buttons)
import ui import features import osutil from freeciv import sync import save as _save import functools from freeciv.dropbox import get_download_path if osutil.is_android: import reflect as jnius_reflect DropboxHelper = None features.add_feature('civsync.key', None) features.add_feature('civsync.secret', None) # Important: all calls to Java need to be done in UI thread # (execute_later_decorator is for that) def init(): print 'DropboxHelper init' global DropboxHelper if not DropboxHelper: DropboxHelper = jnius_reflect.autoclass('com.zielm.freeciv.DropboxHelper') print 'initializing DropboxHelper tokens' tokenKey = features.get('civsync.key') tokenSecret = features.get('civsync.secret') DropboxHelper.setTokens(tokenKey, tokenSecret) DropboxHelper.init()
def apply_user_agent_change(ua): global USER_AGENT USER_AGENT = ua # hack, hack, hack print 'changing user agent to', ua urllib.URLopener.version = ua features.set_applier('civsync.ua', apply_user_agent_change) version = 1109 if osutil.is_desktop: features.set('civsync.ua', 'CivSyncDesktop/%d' % version) else: features.set('civsync.ua', 'CivSyncAndroid/%d' % version) features.add_feature('civsync.enable', False, type=bool) features.add_feature('civsync.sid', None, safe=True) def get_sid(): sid = features.get('civsync.sid') if not sid: sid = ''.join( hex(ord(ch))[2:] for ch in os.urandom(8) ) features.set_perm('civsync.sid', sid) return sid def updates(install_time): request('/sync/updates', install_time=install_time) def get_install_time(): path = os.path.join(save.get_save_dir(), 'install_time') try:
# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import ui import graphics import client import math import time import features import functools import graphics from freeciv.client import _freeciv as freeciv features.add_feature('app.new_joystick', default=None, type=bool) features.add_feature('app.joystick', default=None) def get_joystick_type(): sel = features.get('app.joystick') if sel: return sel else: new = features.get('app.new_joystick') if new == None: return 'tile' elif new: return 'new' else: return 'old'
# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import pygame import freeciv import features features.add_feature('ui.fake_max_size') import osutil import common import client @freeciv.register def get_overview_window(): return overview_surface @freeciv.register def dirty_all(): pass
import osutil import uidialog import gamescreen import ui import client import features import monitor import options import menus import graphics import ctrl import sync import gold features.add_feature('app.debug', default=True, type=bool) features.add_feature('app.autoupdate', default=True, type=bool) features.add_feature('app.forcesize') features.add_feature('app.resume', default=False, type=bool) features.add_feature('app.profile', default=False, type=bool) features.add_feature('app.shutdown', default=10, type=int) features.add_feature('app.multiplayer', default=False, type=bool) features.add_feature('app.marketnotice', default=True, type=bool) features.add_feature('app.version') features.add_feature('debug.remote', default=False, type=bool) features.add_feature('debug.remote.passphase', default='freeciv1234', type=str) features.add_feature('debug.remote.port', default=15589, type=int) def apply_hardexit(t): client.freeciv.hard_exit = t
import graphics import sync import gold try: import json except ImportError: import microjson as json try: from ui import ctrl except ImportError: ctrl = None features.add_feature('app.debug', default=True, type=bool) features.add_feature('app.autoupdate', default=True, type=bool) features.add_feature('app.desktop_size', default='1280,800') features.add_feature('app.resume', default=False, type=bool) features.add_feature('app.profile', default=False, type=bool) features.add_feature('app.shutdown', default=10, type=int) features.add_feature('app.multiplayer', default=False, type=bool) features.add_feature('app.marketnotice', default=True, type=bool) features.add_feature('app.version') features.add_feature('app.launch_param', default=None) features.add_feature('app.launch_token', default=None, safe=True) features.add_feature('debug.remote', default=False, type=bool) features.add_feature('debug.remote.passphase', default='freeciv1234', type=str) features.add_feature('debug.remote.port', default=15589, type=int)
# it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import os import sys import pygame import time import features features.add_feature("app.disable_android_pause", type=bool, default=False) try: import android import pyjni except ImportError: android = None is_android = bool(android) is_desktop = not is_android def init(): if android: android.init() android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE) android.map_key(android.KEYCODE_MENU, pygame.K_F1)
import collections import time def set_debug(flag): global debug debug = flag debug = False def make_init_profiling_tuple(): return [0, 0.0] _profiling_callback = collections.defaultdict(make_init_profiling_tuple) _profiling_calls = collections.defaultdict(make_init_profiling_tuple) features.add_feature('debug.freeciv.print_callbacks', type=bool, default=False) features.set_applier('debug.freeciv', set_debug, type=bool, default=False) class _obj: pass func = _obj() callback = _obj() const = _obj() hard_exit = True callback_num = 0 def _callback(funname, *args): if debug: start_time = time.time()
from freeciv.client import _freeciv as freeciv import dialogs import common import window import actions import diplomacy import city import key import misc net_socket = -1 client = None main = None features.add_feature('debug.outwindow', default=False, type=bool) class ConnectionError(Exception): pass @freeciv.register def ui_main(): freeciv.func.init_things() freeciv.func.init_mapcanvas_and_overview() main() def tick(): pass @freeciv.register def ui_init():
def get_internal_storage(): return os.path.expanduser("~/.freeciv/android-internal") else: from android import get_internal_storage import os import sys import graphics import time import features from graphics import sdl_open as open_res features.add_feature("app.emulatedpi", 60, type=int) if android: import jnius import reflect as jnius_reflect is_android = bool(android) is_desktop = not is_android def init(): if android: android.map_key(android.KEYCODE_BACK, graphics.const.K_ESCAPE) android.map_key(android.KEYCODE_MENU, graphics.const.K_F1)
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import ui import graphics import client import math import time import features import functools import graphics import client.actions from freeciv.client import _freeciv as freeciv features.add_feature('app.new_joystick', default=None, type=bool) features.add_feature('app.joystick', default=None) def get_joystick_type(): sel = features.get('app.joystick') if sel: return sel else: new = features.get('app.new_joystick') if new == None: return 'tile' elif new: return 'new' else: return 'old'
import features import ui import threading import os import json import functools import graphics import threading features.add_feature('ctrl.enable', type=bool, default=False) features.add_feature('ctrl.fd', type=int, default=0) _bound_events = {} _message_available = threading.Condition() _messages = [] def maybe_init(): if features.get('ctrl.enable'): print 'ctrl enabled (FD=%d)' % features.get('ctrl.fd') t = threading.Thread(target=loop) t.daemon = True t.start() ui.idle_hooks.add(idle_sleep) def idle_sleep(dt): with _message_available: if dt > 0: _message_available.wait(dt) for message in _messages: process_message(message) _messages[:] = []
import features import ui import threading import os import json import functools import graphics features.add_feature('ctrl.enable', type=bool, default=False) features.add_feature('ctrl.fd', type=int, default=0) def maybe_init(): if features.get('ctrl.enable'): print 'ctrl enabled (FD=%d)' % features.get('ctrl.fd') t = threading.Thread(target=loop) t.daemon = True t.start() def loop(): input = os.fdopen(features.get('ctrl.fd'), 'r', 1) for line in iter(input.readline, ''): message = json.loads(line) ui.execute_later(functools.partial(process_message, message)) EVENT_NAMES = [ 'MOUSEBUTTONUP', 'MOUSEBUTTONDOWN', 'MOUSEMOTION', 'TEXTEDITING', 'TEXTINPUT', 'QUIT', 'KEYDOWN', 'KEYUP', ] def process_message(message):
import thread import random import os import gzip import features import subprocess import atexit import sys import dropbox from freeciv.client import _freeciv as freeciv from monitor import get_save_dir features.add_feature('app.ruleset', default='default') features.add_feature('app.fork', type=bool, default=hasattr(os, 'fork')) localhost = '127.0.0.1' def new_game(): port = random.randint(2000, 15000) args = ('-r', './data/%s.serv' % features.get('app.ruleset')) gui = ServerGUI() start_server(port, args=args, line_callback=gui.server_line_callback) gui.connect(port) ui.set(gui.ui) class ServerGUI(ui.LinearLayoutWidget):
import functools from client import freeciv import citydlg import gamemenu import icons import sync import features import diplodialog import empiredlg import help SELECT_POPUP = 0 features.add_feature('app.full_label_toggle_button', type=bool) class ScreenClient(client.Client): def __init__(self, **kwargs): client.Client.__init__(self, **kwargs) self.turn_loading_dialog = None self.init_ui() def init_ui(self): self.ui = ScreenWidget(self) #def console_line(self, line): # self.ui.console.line(line) def end_turn(self):
from freeciv import sync import osutil from freeciv import help import save as _save import time import functools if osutil.is_android: import jnius import reflect as jnius_reflect DropboxHelper = None features.add_feature("civsync.key", None) features.add_feature("civsync.secret", None) features.add_feature("civsync.allow_sharing", "none") # Important: all calls to Java need to be done in UI thread # (execute_later_decorator is for that) def init(): print "DropboxHelper init" global DropboxHelper if not DropboxHelper: DropboxHelper = jnius_reflect.autoclass("com.zielm.freeciv.DropboxHelper") print "initializing DropboxHelper tokens" tokenKey = features.get("civsync.key") tokenSecret = features.get("civsync.secret")
# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import pygame import freeciv import features features.add_feature('ui.fake_max_size') import osutil import common import client @freeciv.register def get_overview_window(): return overview_surface @freeciv.register def dirty_all(): pass @freeciv.register def dirty_rect(x, y, w, h):
import osutil import time import ui import features from freeciv import help import save as _save features.add_feature('civsync.allow_sharing', 'none') @ui.execute_later_decorator def save(path): if features.get('civsync.allow_sharing') == 'none': return ask_if_sharing_allowed(lambda: save(path)) name = make_name(path) _impl_save(name, path) class DBButton(ui.Button): fg = (0, 0x7E, 0xE5) bg = (255, 255, 255, 180) color = fg active_bg = bg def __init__(self, *args, **kwargs): ui.Button.__init__(self, *args, **kwargs) self._image = ui.load_image('data/dropbox_logo.png') def set_text(self, label): ui.Button.set_text(self, ' ' + label) def draw(self, surf, pos):
from client import freeciv import graphics import citydlg import gamemenu import icons import features import diplodialog import empiredlg import help import dropbox import mapdrawer SELECT_POPUP = 0 features.add_feature('app.full_label_toggle_button', type=bool) features.add_feature('app.map_tiles', type=bool, default=False) class ScreenClient(client.Client): def __init__(self, **kwargs): client.Client.__init__(self, **kwargs) self.turn_loading_dialog = None self.init_ui() def init_ui(self): self.ui = ScreenWidget(self) #def console_line(self, line): # self.ui.console.line(line)
import osutil import time import ui import features from freeciv import help import save as _save features.add_feature('civsync.allow_sharing', 'none') @ui.execute_later_decorator def save(path): if features.get('civsync.allow_sharing') == 'none': return ask_if_sharing_allowed(lambda: save(path)) name = make_name(path) _impl_save(name, path) class DBButton(ui.Button): fg = (0, 0x7E, 0xE5) bg = (255, 255, 255, 180) color = fg active_bg = bg def __init__(self, *args, **kwargs): ui.Button.__init__(self, *args, **kwargs) self._image = ui.load_image('data/dropbox_logo.png') def set_text(self, label): ui.Button.set_text(self, ' ' + label)
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. import thread import save import os import osutil import sys import time import features import gc import random features.add_feature('debug.garbage', False, type=bool) features.add_feature('debug.gc_count', False, type=bool) features.add_feature('debug.monitor.stop_on_pause', True, type=bool) def get_save_dir(): if osutil.is_android: return osutil.get_external_storage() + '/saves' else: return os.path.expanduser('~/.freeciv/android-saves') def get_mem_usage(process='self'): try: return int(open('/proc/%s/stat' % process).read().split()[22]) except IOError: return -1
import functools from client import freeciv import citydlg import gamemenu import icons import sync import features import diplodialog import empiredlg import help SELECT_POPUP = 0 features.add_feature('app.full_label_toggle_button', type=bool) class ScreenClient(client.Client): def __init__(self, **kwargs): client.Client.__init__(self, **kwargs) self.turn_loading_dialog = None self.init_ui() def init_ui(self): self.ui = ScreenWidget(self) #def console_line(self, line): # self.ui.console.line(line) def update_meswin(self, lines): self.ui.console.clear()
import ui import features import graphics import time import zlib import os import json import time import StringIO features.add_feature('stream.fd', type=int, default=2) def init(): print 'stream enabled (FD=%d)' % features.get('stream.fd') ui.draw_hooks.add(run) ui.layer_hooks.add(layer_hook) def write_image(data, size): try: import Image except ImportError: from Pillow import Image mode = 'RGBA' image = Image.frombuffer(mode, size, data, 'raw', mode, 0, 1) image.load() for format in ['png', 'jpeg']: output = StringIO.StringIO() image.save(output, format=format) content = output.getvalue() if len(output.getvalue()) < 500000:
def apply_host_change(host): print "using civsync host", host civsync.HOST = host features.set_applier("civsync.host", apply_host_change, default=civsync.HOST) def apply_user_agent_change(ua): civsync.USER_AGENT = ua features.set_applier("civsync.ua", apply_user_agent_change) features.set("civsync.ua", "CivSyncAndroid/1003") features.add_feature("civsync.enable", False, type=bool) session = None def show_load(): request(show_list, "list") def show_list(entries): panel = ui.LinearLayoutWidget() panel.add(ui.Label("Saves from %s" % civsync.HOST)) for entry in entries: panel.add( ui.Button("%s - %dkB" % (entry.name, entry.size / 1024), functools.partial(download_sync, entry.sha1)) )