reee DEMO 1%!
@ -75,10 +75,12 @@ class window(pyglet.window.Window):
|
||||
self.view = 'space'
|
||||
self.net_mode = net_mode
|
||||
# FPS
|
||||
self.max_fps = self.FPS
|
||||
self.min_fps = self.FPS
|
||||
self.max_fps = [self.FPS, time.time()]
|
||||
self.min_fps = [self.FPS, time.time()]
|
||||
self.fps_wait = 5
|
||||
# lang
|
||||
self.lang = tools.config('sys_value/lang/%s.json5' % language, 'client')
|
||||
# configs
|
||||
self.lang = tools.config('sys_value/lang/%s.json5' % language)
|
||||
self.view = tools.config('configs/view.json5')
|
||||
self.map_view = [configs.basic_poi(poi_type='chunk')]
|
||||
self.part_list = tools.config('sys_value/parts.json5')
|
||||
@ -91,7 +93,7 @@ class window(pyglet.window.Window):
|
||||
self.label_batch = pyglet.graphics.Batch()
|
||||
self.runtime_batch = pyglet.graphics.Batch()
|
||||
# window
|
||||
self.logger.info('client setup done!')
|
||||
self.logger.info('%s' % self.lang['setup.done'])
|
||||
self.textures = {}
|
||||
# setup
|
||||
self.setup()
|
||||
@ -108,6 +110,9 @@ class window(pyglet.window.Window):
|
||||
path = parts[part][2][0]
|
||||
part_image = image.load('textures/' + path)
|
||||
self.textures['part'][part] = part_image
|
||||
pyglet.resource.path = ['textures']
|
||||
pyglet.resource.reindex()
|
||||
self.trash_can = pyglet.resource.image('Editor/TrashCan.png')
|
||||
|
||||
# tests
|
||||
self.info_label = pyglet.text.Label(text='test %s' % pyglet.clock.get_fps(),
|
||||
@ -118,26 +123,34 @@ class window(pyglet.window.Window):
|
||||
# draws
|
||||
|
||||
def update(self, ree):
|
||||
self.FPS_update()
|
||||
|
||||
def FPS_update(self):
|
||||
now_FPS = pyglet.clock.get_fps()
|
||||
if now_FPS > self.max_fps:
|
||||
self.max_fps = now_FPS
|
||||
elif now_FPS < self.min_fps:
|
||||
self.min_fps = now_FPS
|
||||
self.info_label.text = 'now FPS: %03d \n max FPS: %02d \n min FPS: %02d' % (now_FPS, self.max_fps, self.min_fps)
|
||||
self.info_label.anchor_x = 'left'
|
||||
self.info_label.anchor_y = 'top'
|
||||
if now_FPS > self.max_fps[0]:
|
||||
self.max_fps = [now_FPS, time.time()]
|
||||
elif now_FPS < self.min_fps[0]:
|
||||
self.min_fps = [now_FPS, time.time()]
|
||||
else:
|
||||
if (time.time() - self.max_fps[1]) > self.fps_wait:
|
||||
self.max_fps = [self.FPS, time.time()]
|
||||
elif (time.time() - self.min_fps[1]) > self.fps_wait:
|
||||
self.min_fps = [self.FPS, time.time()]
|
||||
self.info_label.text = 'now FPS: %03d max FPS: %02d min FPS: %02d' % (
|
||||
now_FPS, self.max_fps[0], self.min_fps[0])
|
||||
|
||||
def on_draw(self):
|
||||
self.clear()
|
||||
self.build_draw()
|
||||
self.draw_batch()
|
||||
|
||||
def draw_batch(self):
|
||||
self.clear()
|
||||
self.part_batch.draw()
|
||||
self.runtime_batch.draw()
|
||||
self.label_batch.draw()
|
||||
|
||||
def build_draw(self):
|
||||
pass
|
||||
self.trash_can.blit(x=self.width - 90, y=self.height - 90)
|
||||
|
||||
def space_draw(self):
|
||||
# render parts
|
||||
|
@ -39,8 +39,7 @@ class Game:
|
||||
# lang_config
|
||||
self.language = tools.config('sys_value/basic_config.json5')
|
||||
self.language = self.language['language']
|
||||
self.lang = tools.config('sys_value/lang/%s.json5' % self.language)
|
||||
self.lang = self.lang['main']
|
||||
self.lang = tools.config('sys_value/lang/%s.json5' % self.language, 'main')
|
||||
# logger
|
||||
self.log_config = tools.config('configs/logging.json5', 'file')
|
||||
self.log_filename = configs.name_handler(self.log_config['filename']['main'],
|
||||
|
@ -1,10 +1,16 @@
|
||||
'''
|
||||
"""
|
||||
writen by shenjackyuanjie
|
||||
mail: 3695888@qq.com
|
||||
'''
|
||||
"""
|
||||
|
||||
import os
|
||||
import multiprocessing as mp
|
||||
|
||||
try:
|
||||
from bin import tools
|
||||
except (ModuleNotFoundError, ImportError, ImportWarning):
|
||||
import tools
|
||||
|
||||
|
||||
class server(mp.Process):
|
||||
def __init__(self, dev_list, dev_dic, logger, language='zh-cn', net_mode='local'):
|
||||
@ -15,10 +21,13 @@ class server(mp.Process):
|
||||
# value
|
||||
self.process_id = 'Server'
|
||||
self.process_name = 'server process'
|
||||
self.process_pid = os.getpid()
|
||||
# lang
|
||||
self.lang = tools.config('sys_value/lang/%s.json5' % language, 'server')
|
||||
# share memory
|
||||
self.dev_list = dev_list
|
||||
self.dev_dic = dev_dic
|
||||
self.logger.info('server setup done!')
|
||||
self.logger.info('%s' % self.lang['setup.done'])
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
|
@ -212,7 +212,7 @@ def config(file_name, stack=None):
|
||||
try:
|
||||
xml_load = parse(file_name)
|
||||
except FileNotFoundError as exp:
|
||||
log = 'no config json(5) file \n file name : %s \n stack : %s' % (
|
||||
log = 'no config xml file \n file name : %s \n stack : %s' % (
|
||||
file_name, stack)
|
||||
tools_logger.exception(log)
|
||||
raise FileNotFoundError(log)
|
||||
|
@ -39,7 +39,7 @@ def cut_and_save(config, save_path):
|
||||
print(exp)
|
||||
for config_ in configs['images']:
|
||||
config__ = configs['images'][config_]
|
||||
save_name = 'textures/' + save_path + config_
|
||||
save_name = 'textures/%s/%s' % (save_path, config_)
|
||||
x, y, w, h, t = config__[0], config__[1], config__[2], config__[3], config__[4]
|
||||
crop_box = [x, y, x + w, y + h]
|
||||
pic_ = pic.crop(crop_box)
|
||||
@ -53,3 +53,4 @@ def All_in_one_cut(xml, path):
|
||||
json_name = xml[:-4] + '.json5'
|
||||
rewrite_config(xml, json_name)
|
||||
cut_and_save(json_name, path)
|
||||
|
||||
|
@ -9,5 +9,11 @@
|
||||
'logger.logfile_fmt': '日志文件记录格式:',
|
||||
'logger.logfile_datefmt': '日志文件日期格式:',
|
||||
'game_start.at': '游戏主线程开始于:'
|
||||
},
|
||||
'client': {
|
||||
'setup.done': '客户端载入完成'
|
||||
},
|
||||
'server': {
|
||||
'setup.done': '服务端载入完成'
|
||||
}
|
||||
}
|
18
tests/test_image.py
Normal file
@ -0,0 +1,18 @@
|
||||
import pyglet
|
||||
|
||||
window = pyglet.window.Window(width=1000, height=1000)
|
||||
# a_image = pyglet.image.load('textures/Runtime.png')
|
||||
pyglet.resource.path = ['../textures']
|
||||
pyglet.resource.reindex()
|
||||
b_image = pyglet.resource.image('Runtime.png')
|
||||
c_image = pyglet.resource.image('Editor/TrashCan.png')
|
||||
|
||||
|
||||
@window.event
|
||||
def on_draw():
|
||||
window.clear()
|
||||
b_image.blit(x=500, y=10)
|
||||
c_image.blit(x=500, y=600)
|
||||
|
||||
|
||||
pyglet.app.run()
|
131
textures/Editor.json5
Normal file
@ -0,0 +1,131 @@
|
||||
{
|
||||
image_name: "Editor.png",
|
||||
images: {
|
||||
"ButtonDarkSide.png": [
|
||||
508,
|
||||
2,
|
||||
2,
|
||||
100,
|
||||
null
|
||||
],
|
||||
"ButtonLightSide.png": [
|
||||
2,
|
||||
508,
|
||||
100,
|
||||
2,
|
||||
"y"
|
||||
],
|
||||
"DeleteButton.png": [
|
||||
364,
|
||||
148,
|
||||
32,
|
||||
32,
|
||||
null
|
||||
],
|
||||
"DuplicateButton.png": [
|
||||
406,
|
||||
84,
|
||||
80,
|
||||
80,
|
||||
null
|
||||
],
|
||||
"MirrorButton.png": [
|
||||
324,
|
||||
14,
|
||||
80,
|
||||
80,
|
||||
null
|
||||
],
|
||||
"PartButton.png": [
|
||||
2,
|
||||
2,
|
||||
320,
|
||||
100,
|
||||
null
|
||||
],
|
||||
"PartGroupHeader.png": [
|
||||
2,
|
||||
104,
|
||||
45,
|
||||
320,
|
||||
"y"
|
||||
],
|
||||
"RotateButton.png": [
|
||||
426,
|
||||
2,
|
||||
80,
|
||||
80,
|
||||
null
|
||||
],
|
||||
"ToolbarDark.png": [
|
||||
324,
|
||||
8,
|
||||
100,
|
||||
4,
|
||||
"y"
|
||||
],
|
||||
"ToolbarIconAddPart.png": [
|
||||
312,
|
||||
148,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarIconMenu.png": [
|
||||
260,
|
||||
104,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarIconPlay.png": [
|
||||
208,
|
||||
104,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarIconStaging.png": [
|
||||
156,
|
||||
104,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarIconZoom.png": [
|
||||
49,
|
||||
104,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarIconZoomIn.png": [
|
||||
104,
|
||||
104,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarIconZoomOut.png": [
|
||||
324,
|
||||
96,
|
||||
50,
|
||||
50,
|
||||
null
|
||||
],
|
||||
"ToolbarLight.png": [
|
||||
324,
|
||||
2,
|
||||
100,
|
||||
4,
|
||||
"y"
|
||||
],
|
||||
"TrashCan.png": [
|
||||
2,
|
||||
426,
|
||||
80,
|
||||
80,
|
||||
null
|
||||
]
|
||||
}
|
||||
}
|
BIN
textures/Editor/ButtonDarkSide.png
Normal file
After Width: | Height: | Size: 121 B |
BIN
textures/Editor/ButtonLightSide.png
Normal file
After Width: | Height: | Size: 133 B |
BIN
textures/Editor/DeleteButton.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
textures/Editor/DuplicateButton.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
textures/Editor/MirrorButton.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
textures/Editor/PartButton.png
Normal file
After Width: | Height: | Size: 450 B |
BIN
textures/Editor/PartGroupHeader.png
Normal file
After Width: | Height: | Size: 517 B |
BIN
textures/Editor/RotateButton.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
textures/Editor/ToolbarDark.png
Normal file
After Width: | Height: | Size: 140 B |
BIN
textures/Editor/ToolbarIconAddPart.png
Normal file
After Width: | Height: | Size: 932 B |
BIN
textures/Editor/ToolbarIconMenu.png
Normal file
After Width: | Height: | Size: 282 B |
BIN
textures/Editor/ToolbarIconPlay.png
Normal file
After Width: | Height: | Size: 775 B |
BIN
textures/Editor/ToolbarIconStaging.png
Normal file
After Width: | Height: | Size: 540 B |
BIN
textures/Editor/ToolbarIconZoom.png
Normal file
After Width: | Height: | Size: 1004 B |
BIN
textures/Editor/ToolbarIconZoomIn.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
textures/Editor/ToolbarIconZoomOut.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
textures/Editor/ToolbarLight.png
Normal file
After Width: | Height: | Size: 145 B |
BIN
textures/Editor/TrashCan.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
textures/runtime/background.png
Normal file
After Width: | Height: | Size: 293 B |
BIN
textures/runtime/background_ka1.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
textures/runtime/background_ka2.jpg
Normal file
After Width: | Height: | Size: 7.3 KiB |