From 463a5502091f5654797b3463d39f945b8df1763a Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 18 Nov 2024 16:31:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0,=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD.gd | 146 +++++++++++++++---------------------- PRD_MP550.tscn | 56 ++++++++------ constants.gd | 26 ++++++- состояния-эмс.tscn | 51 +++++++++++++ эмс-бланк-перем.png | Bin 0 -> 704 bytes эмс-бланк-перем.png.import | 34 +++++++++ эмс-бланк-пост.png | Bin 0 -> 483 bytes эмс-бланк-пост.png.import | 34 +++++++++ эмс-бланк.png | Bin 0 -> 787 bytes эмс-бланк.png.import | 34 +++++++++ 10 files changed, 270 insertions(+), 111 deletions(-) create mode 100644 состояния-эмс.tscn create mode 100644 эмс-бланк-перем.png create mode 100644 эмс-бланк-перем.png.import create mode 100644 эмс-бланк-пост.png create mode 100644 эмс-бланк-пост.png.import create mode 100644 эмс-бланк.png create mode 100644 эмс-бланк.png.import diff --git a/PRD.gd b/PRD.gd index e6fead4..f31b6f5 100644 --- a/PRD.gd +++ b/PRD.gd @@ -27,10 +27,9 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник var addr_receive = sock.get_packet_ip() var port_receive = sock.get_packet_port() - if (broadcast_packet) and (address == addr_receive) and (port == port_receive): + if (address == addr_receive) and (port == port_receive): $control_dev/control_dev.get_node2(0, 0).text = 'ЯУ-07Б НА СВЯЗИ' $control_dev/control_dev.get_node2(0, 0).modulate = Constants.GREEN - flag_yau_control = true last_update_time = 0.0 unit.parse(broadcast_packet) else: @@ -39,12 +38,10 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник else: $control_dev/control_dev.get_node2(0, 0).text = 'НЕТ СВЯЗИ С ЯУ-07Б' $control_dev/control_dev.get_node2(0, 0).modulate = Constants.RED - flag_yau_control = false return false func _ready() -> void: - # Таблица 1 (temp) node_select1 = $scroll1/table1 draw_tabl(node_select1, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size()) @@ -85,6 +82,7 @@ func _ready() -> void: unit.connect('command_done', Callable(self, 'on_command_done')) unit.connect('data_received', Callable(self, 'data_received')) + ## Рисует таблицу func draw_tabl(tbl, row: Array, count_row: int): for i_row in count_row: @@ -94,114 +92,88 @@ func draw_tabl(tbl, row: Array, count_row: int): func _process(delta: float) -> void: last_update_time += delta poll_receive(soc_brodcast) - if broadcast_packet: - parse_broadcast(broadcast_packet) - + match unit.process(delta): Error.OK: soc_unicast.send_to(address, port, unit.tx_data.slice(0, unit.tx_len)) Error.FAILED: print('Ошибка отправки данных') -func parse_broadcast(packet): - var power: int # Мощность с широковещания - var temperature: int # Температура с широковещания - var DKM: int - var EMS_G: int - var status_board = packet.decode_u8(8) - var node_control_device = $control_dev/control_dev - $Packet.text = 'broadcast: ' + str(packet) - for i in 4: - if i == 0: - node_control_device.get_node2(0, i+2).text = 'ЯЧЕЙКА ЭМС-Г НА СВЯЗИ' if status_board & (1 << i) and flag_yau_control else 'ЯЧЕЙКИ ЭМС-Г НЕТ НА СВЯЗИ' - node_control_device.get_node2(0, i+2).modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED - elif i == 1: - node_control_device.get_node2(0, i+2).text = 'ЯЧЕЙКА УГ НА СВЯЗИ' if status_board & (1 << i) and flag_yau_control else 'ЯЧЕЙКИ УГ НЕТ НА СВЯЗИ' - node_control_device.get_node2(0, i+2).modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED - elif i == 2: - node_control_device.get_node2(0, i+2).text = 'ЯЧЕЙКА УКП №1 НА СВЯЗИ' if status_board & (1 << i) and flag_yau_control else 'ЯЧЕЙКИ УКП №1 НЕТ НА СВЯЗИ' - node_control_device.get_node2(0, i+2).modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED - elif i == 3: - node_control_device.get_node2(0, i+2).text = 'ЯЧЕЙКА УКП №2 НА СВЯЗИ' if status_board & (1 << i) and flag_yau_control else 'ЯЧЕЙКИ УКП №2 НЕТ НА СВЯЗИ' - node_control_device.get_node2(0, i+2).modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED - - var dry_contact: int = packet.decode_u16(35) # Контроль сухих контактов (ИП УГ) +func data_received(_unit): + var data_from_yau_07 = unit.status + var status_board = data_from_yau_07.decode_u8(0) + var EMS_G: int = data_from_yau_07.decode_u16(1) # Данные СИ от ЭМС-Г на выходе + var dry_contact: int = data_from_yau_07.decode_u16(27) # Контроль сухих контактов (УГ) + var DKM: int = data_from_yau_07.decode_u16(29) # ДКМ от УГ + var power_ukp_1: int = data_from_yau_07.decode_u16(31) # Мощность с широковещания от УКП №1 + var temperature_ukp_1: int = data_from_yau_07.decode_u16(47) # Температура с широковещания от УКП №1 + var power_ukp_2: int = data_from_yau_07.decode_u16(63) + var temperature_ukp_2: int = data_from_yau_07.decode_u16(79) + node_select1.set_node_text(2, 0, '%d' % dry_contact) - for i in 9: - if i == 0: - node_control_device.get_node2(0, i+6).text = 'ИП МАА №1' if dry_contact & (1 << i) == 0 and flag_yau_control else 'ОШИБКА. КОНТРОЛЬ ИП МАА №1' - node_control_device.get_node2(0, i+6).modulate = Constants.GREEN if dry_contact & (1 << i) == 0 and flag_yau_control else Constants.RED - elif i == 1: - node_control_device.get_node2(0, i+6).text = 'ИП МАА №2' if dry_contact & (1 << i) == 0 and flag_yau_control else 'ОШИБКА. КОНТРОЛЬ ИП МАА №2' - node_control_device.get_node2(0, i+6).modulate = Constants.GREEN if dry_contact & (1 << i) == 0 and flag_yau_control else Constants.RED - elif i == 2: - node_control_device.get_node2(0, i+6).text = 'ИП9-50 №1' if dry_contact & (1 << i) == 0 and flag_yau_control else 'ОШИБКА. КОНТРОЛЬ ИП9-50 №1' - node_control_device.get_node2(0, i+6).modulate = Constants.GREEN if dry_contact & (1 << i) == 0 and flag_yau_control else Constants.RED - elif i == 3: - node_control_device.get_node2(0, i+6).text = 'ИП9-50 №2' if dry_contact & (1 << i) == 0 and flag_yau_control else 'ОШИБКА. КОНТРОЛЬ ИП9-50 №2' - node_control_device.get_node2(0, i+6).modulate = Constants.GREEN if dry_contact & (1 << i) == 0 and flag_yau_control else Constants.RED - #elif i == 4: - #node_control_device.get_node2(0, i+6).text = 'ОШИБКА. КОНТРОЛЬ ИП9-50 №3' if dry_contact & (1 << i) and flag_yau_control else 'ИП9-50 №3' - #node_control_device.get_node2(0, i+6).modulate = Constants.RED if dry_contact & (1 << i) and flag_yau_control else Constants.GREEN - elif i == 4: - node_control_device.get_node2(0, i+6).text = 'ИП12-50 №1' if dry_contact & (1 << i) == 0 and flag_yau_control else 'ОШИБКА. КОНТРОЛЬ ИП12-50 №1' - node_control_device.get_node2(0, i+6).modulate = Constants.GREEN if dry_contact & (1 << i) == 0 and flag_yau_control else Constants.RED - #elif i == 6: - #node_control_device.get_node2(0, i+6).text = 'ОШИБКА. КОНТРОЛЬ ИП12-50 №2' if dry_contact & (1 << i) and flag_yau_control else 'ИП12-50 №2' - #node_control_device.get_node2(0, i+6).modulate = Constants.RED if dry_contact & (1 << i) and flag_yau_control else Constants.GREEN - elif i == 7: - node_control_device.get_node2(0, i+6).text = 'ИП5-25' if dry_contact & (1 << i) == 0 and flag_yau_control else 'ОШИБКА. КОНТРОЛЬ ИП5-25' - node_control_device.get_node2(0, i+6).modulate = Constants.GREEN if dry_contact & (1 << i) == 0 and flag_yau_control else Constants.RED + + var node_control_device = $control_dev/control_dev + for i in 4: + var node_board = node_control_device.get_node2(0, i+2) + var j = int(status_board & (1 << i) == 0 and flag_yau_control) + node_board.text = Constants.CONTROL_BOARD[i][j] + node_board.modulate = [Constants.GREEN, Constants.RED][j] + + for i in 8: + var node_power_supply = node_control_device.get_node2(0, i+6) + var j = int(not(dry_contact & (1 << i) == 0 and flag_yau_control)) + node_power_supply.text = Constants.CONTROL_POWER_SUPPLY[i][j] + node_power_supply.modulate = [Constants.GREEN, Constants.RED][j] + + # EMS G + var in_blank: int = data_from_yau_07.decode_u32(1) + var in_imp: int = data_from_yau_07.decode_u32(5) - DKM = packet.decode_u16(37) + var EMSG = [['Вход Х3:23', 'Вход Х3:23'],['Вход Х3:24', 'Вход Х3:24']] + for i in 2: + var node_ems_g = node_control_device.get_node2(0, i+ 14) + #var ems = data_from_yau_07.decode_u64() + var j = int(EMS_G & (1 << i) == 0 and flag_yau_control) + node_ems_g.text = EMSG[i][j] + node_ems_g.modulate = [Constants.GREEN, Constants.RED][j] + set_frame(Constants.Frame.VARIABLE) + node_select1.set_node_text(3, 0, '%d' % DKM) - + for i in range(8): - power = packet.decode_u16(39 + 2 * i) - node_select1.set_node_text(0, i, '%d' % power) + power_ukp_1 += 2 * i + node_select1.set_node_text(0, i, '%d' % power_ukp_1) for i in range(8): - var TMP = packet.decode_u16(55 + 2 * i) - temperature = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - TMP) * Constants.TEMP - node_select1.set_node_text(1, i, '%d' % temperature) + temperature_ukp_1 += 2 * i + var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * Constants.TEMP + node_select1.set_node_text(1, i, '%d' % TMP) for i in range(8): - power = packet.decode_u16(71 + 2 * i) - node_select1.set_node_text(0, i+8, '%d' % power) + power_ukp_2 += 2 * i + node_select1.set_node_text(0, i+8, '%d' % power_ukp_2) for i in range(8): - if len(packet) > 87 + 2 * i: - var TMP = packet.decode_u16(87 + 2 * i) - temperature = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - TMP) * Constants.TEMP - node_select1.set_node_text(1, i+8, '%d' % temperature) + if len(data_from_yau_07) > 79 + 2 * i: + temperature_ukp_2 += 2 * i + var TMP = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * Constants.TEMP + node_select1.set_node_text(1, i+8, '%d' % TMP) for i in range(15): - EMS_G = packet.decode_u16(9 + 2 * i) + EMS_G += 2 * i node_select1.set_node_text(3, i+1, '%d' % EMS_G) -func data_received(unit): - var status = unit.status - #var bit_online = 0 + id_board - #var bit_load = 3 + id_board - #online = (status[0] >> bit_online) & 1 - #ems_load = (status[0] >> bit_load) & 1 - var in_blank = int(status[1] | (status[2] << 8) | (status[3] << 16) | \ - (status[4] << 24) | (status[5] << 32)) - var in_imp = int(status[7] | (status[8] << 8) | (status[9] << 16) | \ - (status[10] << 24) | (status[11] << 32)) - var out_blank = int(status[13] | (status[14] << 8) | (status[15] << 16) | \ - (status[16] << 24) | (status[17] << 32)) - var out_imp = int(status[19] | (status[20] << 8) | (status[21] << 16)| \ - (status[22] << 24) | (status[23] << 32)) - var out_kz = int(status[25] | (status[26] << 8)) +### +func set_frame(val: int): $control_dev/sprite.set_frame(val) +### func on_line_changed(_unit) -> void: if unit.online: - print('Off line') + flag_yau_control = true else: - print('On line') - + flag_yau_control = false + ## Ессли отсутствует подключение к ячейке ЯУ-07 func on_command_fail(_unit) -> void: diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 37c84c3..202ebf1 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -1,21 +1,38 @@ -[gd_scene load_steps=16 format=3 uid="uid://cvor2jm4xk3ha"] +[gd_scene load_steps=17 format=3 uid="uid://cvor2jm4xk3ha"] [ext_resource type="Script" path="res://PRD.gd" id="1_v273n"] [ext_resource type="Script" path="res://table/table.gd" id="2_vmbyo"] [ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://Shaders/shader_edu.tres" id="3_3syd3"] [ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"] [ext_resource type="Texture2D" uid="uid://62v0xejejuwj" path="res://Web.png" id="5_i3nvb"] +[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="7_hdx0f"] +[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="8_eaogg"] +[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://эмс-бланк-перем.png" id="9_nctgk"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ovl8a"] bg_color = Color(0.388235, 0.227451, 0.290196, 1) corner_detail = 1 anti_aliasing = false -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5yjx2"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kofy6"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hdj8q"] +[sub_resource type="SpriteFrames" id="SpriteFrames_vex4t"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("7_hdx0f") +}, { +"duration": 1.0, +"texture": ExtResource("8_eaogg") +}, { +"duration": 1.0, +"texture": ExtResource("9_nctgk") +}, { +"duration": 1.0, +"texture": null +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_723du"] size = Vector2(1600, 1200) @@ -74,7 +91,7 @@ text = "КОНТРОЛЬ" offset_left = 118.0 offset_top = 53.0 offset_right = 465.0 -offset_bottom = 487.0 +offset_bottom = 527.0 color = Color(0.390334, 0.227948, 0.288326, 1) metadata/_edit_lock_ = true @@ -82,7 +99,7 @@ metadata/_edit_lock_ = true offset_left = 142.0 offset_top = 63.0 offset_right = 477.0 -offset_bottom = 487.0 +offset_bottom = 527.0 metadata/_edit_lock_ = true [node name="control_dev" type="GridContainer" parent="control_dev"] @@ -90,6 +107,16 @@ layout_mode = 2 script = ExtResource("2_vmbyo") metadata/_edit_lock_ = true +[node name="sprite" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(215, 404) +sprite_frames = SubResource("SpriteFrames_vex4t") +metadata/_edit_lock_ = true + +[node name="sprite2" type="AnimatedSprite2D" parent="control_dev"] +position = Vector2(214, 432) +sprite_frames = SubResource("SpriteFrames_vex4t") +metadata/_edit_lock_ = true + [node name="scroll1" type="ScrollContainer" parent="."] offset_left = 478.0 offset_top = 65.0 @@ -101,19 +128,6 @@ layout_mode = 2 script = ExtResource("2_vmbyo") metadata/_edit_lock_ = true -[node name="Packet" type="TextEdit" parent="."] -offset_left = 23.0 -offset_top = 606.0 -offset_right = 1121.0 -offset_bottom = 786.0 -theme_override_colors/font_readonly_color = Color(1, 1, 1, 1) -theme_override_styles/normal = SubResource("StyleBoxTexture_5yjx2") -theme_override_styles/focus = SubResource("StyleBoxTexture_kofy6") -theme_override_styles/read_only = SubResource("StyleBoxTexture_hdj8q") -text = "broadcast" -editable = false -wrap_mode = 1 - [node name="PSK" type="Sprite2D" parent="."] material = ExtResource("3_3syd3") position = Vector2(1243, 81) diff --git a/constants.gd b/constants.gd index ac67eaa..10154aa 100644 --- a/constants.gd +++ b/constants.gd @@ -29,8 +29,9 @@ const CONTROL_TABLE: Array = [ [TableNode], [TableNode], [TableNode], - [TableNode],] -const CONTROL_DEVICE: Array = ['ЯЧЕЙКА ЯУ-07Б', 'ФС', 'ЯЧЕЙКА ЭМС-Г', 'ЯЧЕЙКА УГ', 'ЯЧЕЙКА УКП №1', 'ЯЧЕЙКА УКП №2', 'ИП МАА №1', 'ИП МАА №2', 'ИП9-50 №1', 'ИП9-50 №2', 'ИП12-50 №1', '-', '-','ИП5-25'] + [TableNode], + [TableNode]] +const CONTROL_DEVICE: Array = ['ЯЧЕЙКА ЯУ-07Б', 'ФС', 'ЯЧЕЙКА ЭМС-Г', 'ЯЧЕЙКА УГ', 'ЯЧЕЙКА УКП №1', 'ЯЧЕЙКА УКП №2', 'ИП МАА №1', 'ИП МАА №2', 'ИП9-50 №1', 'ИП9-50 №2', 'ИП12-50 №1', '-', '-','ИП5-25', 'Вход Х3:23', 'Вход Х3:24'] const ROWS_REGS_DATA: Array = [ [TableNode, TableNode, TableNode, TableNode], [TableNode, TableNode, TableNode, TableNode], @@ -47,7 +48,7 @@ const ROWS_REGS_DATA: Array = [ [TableNode, TableNode, TableNode, TableNode], [TableNode, TableNode, TableNode, TableNode], [TableNode, TableNode, TableNode, TableNode], - [TableNode, TableNode, TableNode, TableNode],] + [TableNode, TableNode, TableNode, TableNode]] const ADDRESSES: Array = [ ['ПРД-Н1', '10.1.1.11', 50011], ['ПРД-Н2', '10.1.1.21', 50021], @@ -61,3 +62,22 @@ const ADDRESSES: Array = [ ['ПРД-К2', '10.1.1.23', 50023], ['ПРД-К3', '10.1.1.33', 50033], ['ПРД-К4', '10.1.1.43', 50043]] +var CONTROL_BOARD: Array = [ + ['ЯЧЕЙКА ЭМС-Г НА СВЯЗИ', 'ЯЧЕЙКИ ЭМС-Г НЕТ НА СВЯЗИ'], + ['ЯЧЕЙКА УГ НА СВЯЗИ','ЯЧЕЙКИ УГ НЕТ НА СВЯЗИ'], + ['ЯЧЕЙКА УКП №1 НА СВЯЗИ', 'ЯЧЕЙКИ УКП №1 НЕТ НА СВЯЗИ'], + ['ЯЧЕЙКА УКП №2 НА СВЯЗИ', 'ЯЧЕЙКИ УКП №2 НЕТ НА СВЯЗИ']] +var CONTROL_POWER_SUPPLY: Array = [ + ['ИП МАА №1', 'ОШИБКА. КОНТРОЛЬ ИП МАА №1'], + ['ИП МАА №2', 'ОШИБКА. КОНТРОЛЬ ИП МАА №2'], + ['ИП9-50 №1', 'ОШИБКА. КОНТРОЛЬ ИП9-50 №1'], + ['ИП9-50 №2', 'ОШИБКА. КОНТРОЛЬ ИП9-50 №2'], + ['ИП12-50 №1', 'ОШИБКА. КОНТРОЛЬ ИП12-50 №1'], + ['ИП9-50 №3', 'ОШИБКА. КОНТРОЛЬ ИП9-50 №3'], + ['ИП12-50 №2', 'ОШИБКА. КОНТРОЛЬ ИП12-50 №2'], + ['ИП5-25', 'ОШИБКА. КОНТРОЛЬ ИП5-25']] +enum Frame { + WORK, ## В работе + CONSTANT, ## Постоянный сигнал + VARIABLE ## Переменный сигнал + } diff --git a/состояния-эмс.tscn b/состояния-эмс.tscn new file mode 100644 index 0000000..369b601 --- /dev/null +++ b/состояния-эмс.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=6 format=3 uid="uid://cf500m6u46dqe"] + +[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="2_don4l"] +[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="3_lu634"] +[ext_resource type="Texture2D" uid="uid://ijdfo2mml54" path="res://эмс-бланк-перем.png" id="4_b33qw"] + +[sub_resource type="GDScript" id="GDScript_q347l"] +script/source = "extends Control +var align : get = get_align, set = set_align +var _align: int = 0 +func set_align(val: int): _align = val +func get_align(): return _align +func set_frame(val: int): $sprite.set_frame(val) +func get_frame(): return $sprite.get_frame() +" + +[sub_resource type="SpriteFrames" id="SpriteFrames_ow7xh"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_don4l") +}, { +"duration": 1.0, +"texture": ExtResource("3_lu634") +}, { +"duration": 1.0, +"texture": ExtResource("4_b33qw") +}, { +"duration": 1.0, +"texture": null +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -1540.0 +offset_bottom = -1182.0 +grow_horizontal = 2 +grow_vertical = 2 +script = SubResource("GDScript_q347l") + +[node name="sprite" type="AnimatedSprite2D" parent="."] +position = Vector2(32, 226) +sprite_frames = SubResource("SpriteFrames_ow7xh") +frame = 2 diff --git a/эмс-бланк-перем.png b/эмс-бланк-перем.png new file mode 100644 index 0000000000000000000000000000000000000000..832a346c43b74227b515c53c9cf68391fef00acd GIT binary patch literal 704 zcmV;x0zdtUP);Yay;z%HDV_MxwdqyYuaC97&gb>E50I7xfjTnu@p+IN> zQ$Vu@1Ylj#8-TGma$r(trm&-hdl;F-MG7Bz|866E`P5emr+w(?n8r`M<@Ne^wY~z_ z-Ud$9fC!8h!LwYL$GVF^24keGj5<2*XZ+>{ja&U-$2qxdxPG4bYY%AL%gductT8Zz zQoav{mp~w$qd_}}N!!OHQ8{cV*{=;k*}3}1E1|L6zkk`6ZUDDSPO}&>7c#IP28v1= zS7s7O61J;CDnBk^21v=mrJ33S?p}-wb#OgtW*c^ZI!a3Z6ReGgLKQjN2rXM&Nq)^G z*tWe_Wcp=b-MkH3f|hZ!0&G*#Cgztw1%I~z+%yV;t!`a~GBfwkdSv@4($5O8JBEkF zJx;2t*M+u_n*AL}(Q!#=L(+>yFN_;ULBtXwfWgA)HW!7)qFTD{UJA`~6M(Q18sBW6 zH9lO+ky~?ddLFnh6Oke~AF>ARTIi=NO2MeWPJsa_%z64M@EK5H5bsi`1N(B0WRb#? zsp+5z?=y9}e5VVg&*`qARus3&^VM0M zyGZi2DN(S;On>QCon|CG(fTvsAfQ_Q=gb%nWo>(Dl$_T9sH)oyaK!So&<{n&30X7A mML9*;&yxR`m#-_I{@NeyKQyNAyD-840000yF`#vO$+8m?wl8J-D{utd5V7x+ zUISh>5eY~czas&1*6k}|kCa}3Q{bt}=Uhv=E0+gpG&(JYnjJ+Tftby11P=hVUxAY< z<8v^-J)M35ery*Bjec&as zRM%I)6>lJk|0wUB%zj&zf}i-8V%n8!{u^y18Nk!&pwZ=DukLrxEp1T><<3&Q6&;dN zT|Y=NHdT4|9OLmh@XHXggF=M8Aney%Au^ys=tWABAbC9g2K)h3&FeFzL*RqjRyN+X z&N?0y1GET7#~9lbT=#Qkm#$#D<4He6>W8clsL?fs<<)L=5DCofZLQJhv%xC-T9fQ8 z=8z21Y<2;B%wf#Qn_%yi*e>_$2!b=~0e2wlq<8)@{&@!*L6v0Oi>E Z@-MY$$Qk0s4~+l-002ovPDHLkV1gnn*~tI^ literal 0 HcmV?d00001 diff --git a/эмс-бланк-пост.png.import b/эмс-бланк-пост.png.import new file mode 100644 index 0000000..0ed9c66 --- /dev/null +++ b/эмс-бланк-пост.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b15flrfytxkop" +path="res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://эмс-бланк-пост.png" +dest_files=["res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/эмс-бланк.png b/эмс-бланк.png new file mode 100644 index 0000000000000000000000000000000000000000..7762ebc2db5f43fd8a6d0942e97aac69bf29d02c GIT binary patch literal 787 zcmV+u1MK{XP)sV5G*eQ-dJRzof-TK{sy77enS6ZwD8LF0S1GS!6HE+ z1Z)UOnBZ9QjBqmD?`EMMsU;jow%?}cs_J*{tNW_7y}kWnFc>V_RydFaV8lfjP-Cp; zjFHsXW_0nRj7drYJRA=H(%#jvJRgbb6Ogm&pbabm|MYsj?`&7OBqU9N2{4lM2QdALswzntP}I=Aq*9Xe z#-_3!+d$WLQ7g?q160K6SS6x*Ljwl+Heagg{;!-J1Qr>mtPznCg3z8vRP%aoq(G_CnDN_t|S)H zxqMw(xLjTRt+3m`0+7xtv#p3IB;5i!KR$judGqYq$PsPMMCgBxun99#D5VeMqoc8; z9zaC2fRx+Ls;asn>GtCN`~9e@ZdI0Zbtmc?eqHv>wj)w+c{$5gR@$TI&)=41*{!Oo z$Zh8*Cnue69zE)>KX|ZU5D{47+_So4)ttNPS!2F_)ou#-qH2P%S>svU2?N>4~5 RU+(|_002ovPDHLkV1o2ifWH6$ literal 0 HcmV?d00001 diff --git a/эмс-бланк.png.import b/эмс-бланк.png.import new file mode 100644 index 0000000..7b5478d --- /dev/null +++ b/эмс-бланк.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkef6xwxwdxi8" +path="res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://эмс-бланк.png" +dest_files=["res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1