From f679dde81f1ef061ed761ad4103dc80b389bd0b1 Mon Sep 17 00:00:00 2001 From: shiva404 Date: Sun, 15 Feb 2026 21:23:02 +0300 Subject: [PATCH] P.S. to previous commit: instead of Sprite flow load_sprites function was changed: gathering the number of sprites with the same names before second _ and hold it at sprites dict. also now sprites must be named as objectname_action_number. Main commit - full sprites support, with caching, transparency and smooth scaling. drawing function moved to Object methods --- __pycache__/common.cpython-314.pyc | Bin 312 -> 757 bytes __pycache__/eb_engine.cpython-314.pyc | Bin 11326 -> 10565 bytes __pycache__/eb_objects.cpython-314.pyc | Bin 1575 -> 3267 bytes common.py | 8 +- def_map.json | 1364 ++++++++++-------------- eb_engine.py | 65 +- eb_objects.py | 26 +- main.py | 10 +- res/items/sword.jfif | Bin 0 -> 10583 bytes res/maps/map_editor.py | 2 +- res/sprites/grass_small_2.png | Bin 66208 -> 0 bytes res/sprites/sword_default_1.png | Bin 0 -> 8006 bytes 12 files changed, 637 insertions(+), 838 deletions(-) create mode 100644 res/items/sword.jfif delete mode 100644 res/sprites/grass_small_2.png create mode 100644 res/sprites/sword_default_1.png diff --git a/__pycache__/common.cpython-314.pyc b/__pycache__/common.cpython-314.pyc index 7087e3fea39b7f01dccf7275c796d6cd6bd208e1..e34ff9d937c37181f023124aabf1d62bc32aaf5a 100644 GIT binary patch literal 757 zcmah{PjAyO6u0xIOBStU{1F;Mq6k=tIw4K#VS~bnLn9C>l_-~JQ%JlLNaDzLLFLqs z07wXq95{>v5=TA&A7E284Y@-cIB`QN9{@W`nBc;b{oe1z&p-d1=SFpI76{wWUPh}B zfbTLXO)0>%Ex-tDfG%_aJB*OQJXe?^qT;G;jcIM2>F4CS>Q>q_Y$nIhHJH)WP6K9k z;RWF6KP2rPN8x7ZGe3xZO1Zujp*VCPH$sH60B6IXJY81nVya?JKMOYkJ4gI|6jkVWU8l?ES*Y;j$+3=!X>(|Hj6unzW|BE zj?RrfVw*I2hPWD~j90Q@-%k)X8SzuPg-OCKnqbTx(!h_Aqj5b-{669^$e2Z$2cIwCK@ zHTevPY!{Jga#`;IIWDm+3yfBR!$FL0kOh&-UedF|{Zt`@6JSn&CB`>!`72nMfVp24 J6|U#Ie*>2Ip)mje delta 97 zcmey$x`T;Nn~#@^0SH)D^k-HuOyrYbbegE{#LB45pvf|^M2$(4b8-oj5&tc=g39#7 u+|-o}pFyf8-(u7g;jqcgPbtkwwJYKW3NZq4vH0YROyV4O8F-6$fm{G?0v6K% diff --git a/__pycache__/eb_engine.cpython-314.pyc b/__pycache__/eb_engine.cpython-314.pyc index a6b97553b2436d83aa9368d5cf26eb3358c1fcc5..b9e7e457e522965894c5b0b5ce5a0ea30c17bb63 100644 GIT binary patch delta 3110 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 delta 3764 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 T73Lv~UAGXR!o0%)sTlfimn)7N diff --git a/__pycache__/eb_objects.cpython-314.pyc b/__pycache__/eb_objects.cpython-314.pyc index f9e2b7970f13d3640152f0db4ac9f23c0c0052bb..2bbb82dae261ff418bed7489f6cdbe79d09ff05f 100644 GIT binary patch literal 3267 zcmd58&2Q6I{5{)Aow#kf|DS>*atWE30iCar1vEzQvaZLQhxq@f4$%P z*xlIRMezH*{#*4s7eY@dQTe%Tr1T>oGbn)~co3b%1fOLHvmIT*t*8@4m^Kt)dzi9r zk8MI&Tgrjdb%pI=H^@0#?gn{X4Y|vf^C0)skh^WU7vw?>d0nJ_Ckiz@qhUjg=}AgN zl2ekdn}RM&DMeJ%(xf8W=~^GV1XMZ>qyzECsFM)c; z5K3M~r~}2&NQLeA#_c{LYKxt=pwBrJZPcmJgUieW4qIzprmTn_8ZiMeGgTKu?J;x| z*UACx8>(t3$E?{v4wac%Q$Q03ta@HM-`X8;Rs{L3^#hIYj-WOQU1FUUz0=U&AMAYA zNx)aNe{rGW>Giw(3R!Q+sj_!AR8ymqBaXg1GUS{ULdGs9onXS%Y7h!n%-{=}Zl@;D zbx!)&MHTIj+WSH?RsKNWu>;msRx_fYr6F*P0UT1 zb?{Y*q7R!c>vS>kO%qR>_?C&UhOp_Dl?+idP?t4D$%J^bzHA`sL?VjGrj!hvOO_8Y zBc+w9T$bdkYn0_%qho6FlL`?vIABa}Jf)HlYjV1hnt+2&lcq&_+L;^`>vV&3bp_0Q za$o!dUD5RTf%t%;e@wDdaV2#_$&5=GB`#-^N?aKiv(}-d@1443a@3P4l#j8!l&A++ z`h8gU8MGv{JQy>CZL^(=!p`RIqmXtEGZ8et_rIhDVD)0n*VByiiZSn{_O{lS7iSoH5H`1d^WEbRQL@#pq@ zH1^B3{KZSg;3cE?Qa-NaCsZSTEuX%TpT2FRKgoZ3$4K8X;&<{#KFj;}ln`n;$=n}U z{tvy~8(8L>AM7&tEk!<1-~+QQ#m??RXZQTTul&0Z5FwfFM0+ z1k?K^oO;0RK%@97-iM<2GCImca2M#OvT=x{=U$cW||i;yikzwZOHkdMM#V z{!In0eN~`Dy-hR#vC@eAZ3S-Ya~}}eHt-o@t-P%gtYSif$&1#;gmk>3n9e41@PrU) zqStd$ik1$PPZTFqO(!Weqhzw8xYmfWzYbbkv!jfOTt)`FRwy58Rb^2kL{rCeaFPHU zG^-7gl~hU;Ls+AY*Xd%Puv(?L0kweDksUxmM`qB97qxGmIk)s?JAn4BGv}Uj&91%| zekkz^WEE){$)I2TRYs_^30RKTPk^xS;^C|#k2UKqD4HgznTKfjp-T&as`d^AyD6a8 zi?)}7ZVG5K%W1+B0BIBi;9r7=Ci)6J<@mA&<-bxU!F8GNr!++(IZd&G4QmI%&BnNg zDUX66Md<6a9FnqLDP(wENN$iQ>6e7-r2#0g8nG6RvR*0N{&nH__i}0~sb(f$60(nm zq+mZq)zP~)@$F+Viqtl^(17L;4 z82^Dn%h>yZX~%sl2tbKNjId&ny@372VC=a!QG#*v*doAI+*Q$yjiSb?=!1M0s z*Jz9NvcFyDLnKl*+xH*Ex>{!_r=Y_zY>fUJeUzGeiha(Bg>`I2&6sx@Z4vw3O&KY%W{Tjl=&FVi zy6H{o6K7iQdli?Qx^?~CtL6Uqz*rw^IDmx-Pgm13EYO|w%V&3~iQax8?;)jo1*5)? z)#)BCmSmt<+MXYf&ko2TJxD(hzOqB6cxd5}cAQ!iQZ}NFe1M{b14rh`sz4Yf6bT~) zYLG(&^JJMaf{)R65WDb;dlwyLeU`4WoIcDHYQ|VTr1o1D6}ltjD0xIM{uNTc%HNoi zzgD7sG2}nJ#z;*t^Iv<7nMq2z=l^e#aZ(dXlw7OF^^sp*F{_$k%`2w)<|?r_+umq? vYKiBviVpNM-7kp5W{e%fXySt94=m0~2_X75mWe3?y%^N-S3d`JPRsuV-Gzm* diff --git a/common.py b/common.py index 8b15edc..7848acd 100644 --- a/common.py +++ b/common.py @@ -3,4 +3,10 @@ import json import uuid from dataclasses import dataclass, field from copy import deepcopy -import pygame \ No newline at end of file +import pygame + + +def scale_image(image, n): + orig_size = image.get_size() + new_size = (int(orig_size[0] * n), int(orig_size[1] * n)) + return pygame.transform.smoothscale(image, new_size) \ No newline at end of file diff --git a/def_map.json b/def_map.json index 48cfd80..b03e2d7 100644 --- a/def_map.json +++ b/def_map.json @@ -1,978 +1,742 @@ { "0": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": { + "id": "1", + "name": "2", + "sprite_name": "sword_default" + }, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "1": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "2": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "3": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "4": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "5": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "6": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ], "7": [ { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} }, { - "type": "Ground", - "cell": { - "terrain_obj": { - "id": "1", - "name": "2", - "sprite_name": "grass_small" - }, - "creature_obj": {}, - "item_obj": {} - } + "terrain_obj": { + "id": "1", + "name": "2", + "sprite_name": "grass_small" + }, + "item_obj": {}, + "creature_obj": {} } ] } \ No newline at end of file diff --git a/eb_engine.py b/eb_engine.py index 83443d3..aec361f 100644 --- a/eb_engine.py +++ b/eb_engine.py @@ -3,20 +3,17 @@ import eb_objects import eb_terrain_objects import eb_creature_objects -cell_classes = {"Ground": eb_terrain_objects.Ground} +cell_classes = {"grass_small": eb_terrain_objects.Ground, + "sword_default": eb_objects.Item} + main_dir = os.path.dirname(os.path.abspath(__file__)) sprites_dir = os.path.join(main_dir, "res", "sprites") -def scale_image(image, n): - orig_size = image.get_size() - new_size = (int(orig_size[0] * n), int(orig_size[1] * n)) - return pygame.transform.scale(image, new_size) - @dataclass class Cell: terrain_obj: any - #item_obj: any - #creature_obj: any + item_obj: None = None + creature_obj: None = None is_target: bool = False @dataclass @@ -41,32 +38,34 @@ class Map: for line in range(len(buff)): self.cells[line] = [] for cell in buff[str(line)]: - final_cell = Cell(cell_classes[cell["type"]](**cell["cell"]["terrain_obj"])) + final_cell = deepcopy(Cell(cell_classes[cell["terrain_obj"]["sprite_name"]](**cell["terrain_obj"]))) + + if cell["item_obj"]: + final_cell.item_obj = deepcopy(cell_classes[cell["item_obj"]["sprite_name"]](**cell["item_obj"])) + self.cells[line].append(deepcopy(final_cell)) - def draw(self, screen, current_frame, grid = True): - for l in range(len(self.cells)): - for i, cell in enumerate(self.cells[l]): - x = int((i * self.size + self.cam_x) * self.scale) - y = int((l * self.size + self.cam_y) * self.scale) - w = int(self.size * self.scale - self.cell_dist) - h = int(self.size * self.scale - self.cell_dist) - - # add if scale != prev_scale: no scale - # current frame to decide, upgrade sprite or not sprite_state - scaled = scale_image(self.sprites[cell.terrain_obj.sprite_name][cell.terrain_obj.sprite_state], self.scale) - scaled_rect = scaled.get_rect(center = (x + w/2, y + h/2)) - screen.blit(scaled, scaled_rect) - - if cell.terrain_obj.sprite_state == len(self.sprites[cell.terrain_obj.sprite_name]) - 1: - if current_frame % self.sprites_refresh == 0: - cell.terrain_obj.sprite_state = 0 - elif current_frame % self.sprites_refresh == 0: - cell.terrain_obj.sprite_state += 1 - - if grid: - pygame.draw.rect(screen, self.color, pygame.Rect(x, y, w, h), self.bord) + + def draw_map(self, screen, current_frame, grid = True): + for j in range(len(self.cells)): + for i, cell in enumerate(self.cells[j]): + dd = {"x": int((i * self.size + self.cam_x) * self.scale), + "y": int((j * self.size + self.cam_y) * self.scale), + "w": int(self.size * self.scale - self.cell_dist), + "h": int(self.size * self.scale - self.cell_dist), + "spr_up": current_frame % self.sprites_refresh, + "sprites": self.sprites, "scale": self.scale, + "screen": screen} + + cell.terrain_obj.draw(dd) + if cell.item_obj: + cell.item_obj.draw(dd) + if cell.creature_obj: + cell.creature_obj.draw(dd) + + #if grid: + # pygame.draw.rect(screen, self.color, pygame.Rect(dd["x"], dd["y"], dd["w"], dd["h"]), self.bord) @dataclass class Engine: @@ -88,7 +87,7 @@ class Engine: def load_sprites(self, folder_path = sprites_dir): self.sprites = {} files = [f for f in os.listdir(folder_path) if f.lower().endswith('.png')] - + #TOTAL SLOR - REWRITE THIS FUNC PLS groups = {} for f in files: name = os.path.splitext(f)[0] @@ -125,7 +124,7 @@ class Engine: # fill the screen with a color to wipe away anything from last frame self.screen.fill("chartreuse4") - easy_map.draw(self.screen, current_frame + 1) + easy_map.draw_map(self.screen, current_frame + 1) if unlock: keys = pygame.key.get_pressed() diff --git a/eb_objects.py b/eb_objects.py index 31f774c..c1b5de9 100644 --- a/eb_objects.py +++ b/eb_objects.py @@ -1,5 +1,4 @@ -from common import dataclass, field - +from common import dataclass, scale_image @dataclass class Object: @@ -7,7 +6,29 @@ class Object: name: str sprite_name: str sprite_state: int = 0 + sprite_scale: int = 1 + sprite_cache: None = None + def draw(self, draw_data): + if draw_data["spr_up"] == 0: + if self.sprite_state == len(draw_data["sprites"][self.sprite_name]) - 1: + self.sprite_state = 0 + else: + self.sprite_state += 1 + + if self.sprite_cache is None: + self.sprite_cache = draw_data["sprites"][self.sprite_name][self.sprite_state] + + if self.sprite_scale != draw_data["scale"]: + self.sprite_scale = draw_data["scale"] + self.sprite_cache = scale_image(draw_data["sprites"][self.sprite_name][self.sprite_state], draw_data["scale"]) + rect = self.sprite_cache.get_rect(center = (draw_data["x"] + draw_data["w"] /2, draw_data["y"] + draw_data["h"]/ 2)) + else: + rect = self.sprite_cache.get_rect(center = (draw_data["x"] + draw_data["w"] /2, draw_data["y"] + draw_data["h"]/ 2)) + + draw_data["screen"].blit(self.sprite_cache, rect) + + @dataclass class Terrain(Object): pass @@ -15,6 +36,7 @@ class Terrain(Object): @dataclass class Creature(Object): pass + #status #actions #tasks #items diff --git a/main.py b/main.py index 98022d1..0d434a2 100644 --- a/main.py +++ b/main.py @@ -20,11 +20,19 @@ if __name__ == "__main__": # деревня на соседской локации и торговля с ней # перемещение по воде, течение + #техдолг: + #проверить дефолтдикт field и None = None + # проверить у ллм на ошибки - РЕГУЛЯРНАЯ АКТИВНОСТЬ: # - deepcopy + # - общие + main() + + # P.S. to previous commit: #instead of Sprite flow load_sprites function was changed: #gathering the number of sprites with the same names before second _ and hold it at - #sprites dict. also now sprites must be named as objectname_action_number \ No newline at end of file + #sprites dict. also now sprites must be named as objectname_action_number + # + # Main commit - full sprites support, with caching, transparency and smooth scaling + # drawing function moved to Object methods \ No newline at end of file diff --git a/res/items/sword.jfif b/res/items/sword.jfif new file mode 100644 index 0000000000000000000000000000000000000000..6274ba3d294e4511ab3d3356e0a2aeb4b010d834 GIT binary patch literal 10583 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 OPf$8e{aMO~WB&&csM9(C literal 0 HcmV?d00001 diff --git a/res/maps/map_editor.py b/res/maps/map_editor.py index 4aacca0..0bbf69c 100644 --- a/res/maps/map_editor.py +++ b/res/maps/map_editor.py @@ -5,7 +5,7 @@ width = 10 height = 8 grass_def = {"id": "1", "name": "2", "sprite_name": "grass_small"} -cell_def = {"type": "Ground", "cell": {"terrain_obj": grass_def, "creature_obj": {}, "item_obj": {}}} +cell_def = {"terrain_obj": grass_def, "item_obj": {}, "creature_obj": {}} out = {} diff --git a/res/sprites/grass_small_2.png b/res/sprites/grass_small_2.png deleted file mode 100644 index a29f3f70d876409eff028bbc33e8cfaa53466793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66208 zcmV)sK$yRYP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200006 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 BoE#XfloW1dx^<+w$BHflpWcytCFhe4iW-$}- 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 diff --git a/res/sprites/sword_default_1.png b/res/sprites/sword_default_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2129d684f2d8a3c57011549682b520e01f8cd32 GIT binary patch literal 8006 zcmV-MAGzR(P)?zG|J-)>$02wRJNcIB+7$mc0ZKL_xrU2q+?oTB){GTWg(l zb-3$jMG-_m_7eENcZXP1KoO7!xaUKjyUSg2$uD1$|0TIRQV>6)0yUt32v!Yk53ijj(7H53MFD4(G&^Qf$-MX<_JMf7_s1&)V& zMJlq-%Dh$tt4vuMuBVUvT$=w?Ptu#HPUee7lvx|`>g@I$Kv({}1a_#&R8YMI3{z(Pu)_$4e68 zWkiVyu~6@*hSbD=pjw!PHjP!$rhO+oOew&l^bG#8GM!YJzM^M?QQ)UN0p#!Njnzx1 zz{`0)4jud%HVd`rP`D+fJWWPsb_O!CQ_;J3H{88?6GI0N!uUyFAUrAtruOT~)ky@a zTxlA{iI6})7#iro&hG&0*XzwDqDkY&VbVf77UO40K>>ldbn!0QGzCI;9*2yq z0`dz9cm8<{pP*xqZlr>oTq(3{*B#q-A1D_pUQQ7#UWEqcjzk91@~=N3jn*GPt#vba zt@@fmwuj*HlO%NS)&*)E+8{qKpR1Xo(X@pI#%O(oH7j(mH8cue>l)y|FBd9=ikDN0 z{}NrpQDCdPHSOIIik7Of7}ie{Nly~+gmYcGc0sRR|AR8uo1T@KkBls!Pv3rM+rBf# zYE6Wka!cqLE`;{tHE)Cp+(!h96XE$^z29tfwW0H;Pe8LvTi9$r#s=!HW!J9#g(4y( zC8gkgY%FfyzK6f>CS%&n8QA~h3FhRsiRsK*z?@vYnd|1Q>}^F7!FpSz>iBgb-sTj0 z>oi6V?*n6>Jpv$sR{_=f$B7`l!Uz0At&6K{2jzsL8zwtOO0SEn8lHp`cy8P!g zJWk3$LUKB?^Q3V3??in5r#pg)`i&x=2xWxDbEHqpq6x`R-wORCzZ)y}S zFLQmmaPla6X>@@`r%sq*;?I8n{RT2J^U%D78VZ>-+NyWvIzN*!Zqz93{q~TMw(62X z1gpA~d_z1cO3D~EY#>b-H;iUY8B71%z50d_?|$0Td=5Rj^A~z`Rl^6$a?mjkU{?Ag zDgJQ^ilpQamzatIYJ}70u4BTKX*hEHc(p>sr(B}J;uBb3oQa7k>)*F87R;H09vYo- z@!aVe$(oVQ=kzo&7VX+J$43MDLdPnYZL>F^e`4bh8=r^=kCKqcJpo?476;AVn%I9} zZ?!|kXH1I!65abzVCdk%_*!Qnd+^WS_+;a8OvTc*fh;t@v0C7|boys>RcnHNJvv~9MX&&j=aSJB^ZgNAyLAWm?#ClJEen6& zNkF&mJ#ggbQ^GYhm30xUno_omc(vy)Wa~DEG4E~PvB&Wb5bS0^28(T3beP*a!*w8H zD@`BQkDffdi=_KEfs8~1tr^++$DiK$UX_ta1gkP?Rr9s$Lr$~vXMaVASJ`h9S9H6>+g!L9RKS9+IQ`VKW^QAFHrI6 z7Qy0Gs71Fa^ddWd?gFB>*}P~D_eH$9kL%X8KhU;SQ=}#*BEnghmVe!wqV^s@YI;8M zxvm5$DFtNY6e5+gtJGUH!{w{j-WycBoRtHM46r4Hp8*bhD7qZeypl5|B$S=S%DuS%6G@7BN$s8*ojZY?eq$%`OKZuFQjIDhfNizLmOYsR*D+tI@Z|DvZxCoHlKV*CA!>CoZB zIDg?Ho<7Y$%F|5b33GGjTd~+jDeV5EOicb_;tROO>)5g{zWf^L8F@l&^)xFFcjMx5 z=JGWZHj+jzP+d@=svi-osw!AR;lp-DldZiQF8+Q6pK2Aq_I@hTlT^4Nnh*Q*#oxEN zrZBe8b;6WrM zK7pmB2@*Mq_Q(7P1+GIhHZB%@`+W$|03$|@#-qpSIDYah)Y`Yjvm(yEN_m9Evx{voKD?wjvBr{=lHk%2 zv1dauXXH8`R0RiaPu_Fc#9)yb*FG61N1LPH`V(9SCaOZwJem!>vDoqqQe};fv zMa*&Zx zK@pP%lU76*et2hz9-N#v!^1{Lu(Nh=aS*n(p9_dJmLwEHNgAe2*CsW!wusujlll7k zqDPM&C@Ly~lClc2v$D~&SrZHxFaSzQDmZ=iAJ(_;AS_s*hvnJRT#dLv$Uy_lXFAH36QtNPuVDTkX%Wllr38bm1iI8o9 zZ19i~)U#(#$jQlpF~&82GHBVd6*_lnkB9f~V57H-09ENEf2nK1rcIxL3zsh-+-DKB z@6Zx4QJZTOE)lHKB~%Oh{Ra%8Hf`D_-H6io;(?fii+GIbS4T43(&c9XLz_f zvx^sggU33@*Ptp%@;u{>Oiy1M2fy2oxVYQ+_uuO!r)p&@f>ndEM@H_du+|tgYBcre z-VHm#x3Qr^Kcztf2O&E%3kq`bXvCzTq@aY=Cd-+%wLPt0?^Z5UC0Uq0-;)g-`4tWy z{Rti0HifIjj0*2x60Rn;B3SRL>RW`HHEVXcFlcJ_rVi~pAtEA-Y4+?(W5>f9A;*BHKcxJ0l@N~0RL^XHfUmQ9~N|06j$Mb4%QVHz4eY2rjJ zG->hy2UQVLQ=ekUkbzjeW(9L`cBi#A=9Px3Bpb6Ad9kp4m)WIDS0Tlu;qBo>5nB_&Y}+ugf&S6Fc4KGULMLx*!?fT65&r|zVqt%LmhXUNOTLsnK6_&zFaoteyQ z!zQv``|ePc&PrhTcdTvO_E=?R!?gA1v5gzuD@2nh6L?b>!CLqkKZ`77W$Kb5$CsvP+GZDa;>beNN)E19fbQEoi1-13cwzMf8W z;^b-gZ}y;dE;e-L%xQcR+IOLuGiN|vo_q3Z zB#n&BbPOE)k#Ljs>o<^%tyQ%_#Yd{3sEovQ5M(FlPrma1{+V8{PtF)^}V3p36WbA8cO`vgOwXns1GiOt2(3B}t zxX#OXZmds<>ryDddQTUjfH!a6OjcIaTT_*#fSjCcS>83`CxTTYvH~4DcBal;ulYtF zPo~zU11(vy6zb|7psK1W3@qC_SPD>ic&w-8%a;rLHI$SW(JonH`d;qC-%tdLSD~8S zgb5RA=#Y=$@9)RDche+YT|KVp%jS&qJi%ahbg~u-c%9ou9-lSC000i}Nkl!)hM*;P_p*Frwl+N=?va&h(` z3rk~Rzw&pH{175o)mTO&KOIN?`u9g@cra_%u9IL>DRNI?{KUQFw0A|oTq?Nl5!avY5qF&utdyjiDC-DuLJiIA3-f{Ka~l9Hal&c67G z&%@n|>!-4)_fYYY)+AVb{Po7onl-CTAjXavPhGoefPeba=-QjstTsj4w(SHXy`Z27 z?jFTm3g%|kWM*zsW*qfKq*56X!73$2Wp}^${43&TcYYJJg>_W#Mp{~0$j!;;o&d9u zo0knst71cat+g$c09M(1)Ya=nu->ucw8l*$X&D(r>IaEuRE+c0b#|BeVmB=ZARiZ>Cwz@iVsaf;p*tb85Gt@sMJzagIr>7(JX&M?a z1{<4VJIchwg#7$`8yr-;lp=FOXfcI`T#sE~vv(9WTF zy349ntH{gCt3g7=%PE4ztMHa?`ZR5Bn5GN%?2X`_{<_n&Y11IZWRRDe$HgE8*L5}m zNM@$i~kj?p$VG#~|yN9)Cp+@uP&4Zen8j9!{5+29F-m!RS zX05d|d8{vf5`4?3>;7eBGkA~6Mv17rQ6jw{- zA~iJyj!w2LWLr3;r9Xw0RsA0Ot3akQPl;faDGM-Qz#w{-Uw}P(cCo>OJ{I0k?$V_b zGBVPjsHg-xZkUFL>fYUZShmbaXbQ`TszG{-V3kqq`ucOIjanNVJ{-e_4jE1Z2M$8x z#*LAalPx$i^Wy0)*RS7zlZ%}QRT&zJV7(&Buwft5qqqco7xOLSr@?&o*?90P>t%2~ z>S<|d+}NKp+Z%O&)~pOL9%cCApUWM6jM0z=#neiHLDefBTsBYy;xQ{WLVX z2|#6KWeZU4j@(P}@sD6^yiBaAp6gcLMg)sfX4$e8Brh+IBS*exV@7L{qM|&yb<;p{ za*D7{m7To>i`spF9zBZ38q;F?iVG(GRiHqF2W!@B9lCz)296&6fqnVKRGKhh5@%C& z5$2~iZ{7k+md+Pyr@MFWVwK7Jd7Gw!@~ShZ8Z=mDW>)mz{zLqH{3x3}OOLvD@4(x;9cJE2{> zcF4`m<-n50O5-I$kGi#$Jy}?aP*s+#1__qw8Y|-GqM!ZkSGK@#DM?GqqHEW#f}yUY zq{P`#D~0Co-o1a|;#xdmud>26^y?cOSaS>v>G<(qaOUg@X0&(($;ruJ^yraz`ZR@O zfnc=6P=LzX%8u;pErosVL{mS`=S?8KT1 zRsYm`ux8JmO+Wl_1b_YYJDWRa0r9I5^HAk*1Iig0=`c4hp84tS?oO*#6&vkUmsO0R zUW4W8>PoS(_i^IHakg;5Vv>=OLHF+6@#M)9WM^l?%DNb;wQJXsxq0zR5F!%Qqd>g{ zOJ84~Vq#)&`t%vLbm=l`+@uKx4<5`lf0=01s1Zt5B(}A+Cue78Ry}fxv6LuKFTry6 z@SqzvZsP3Ov&_!UUNF?v)jNWp_L7;IDZHT!?&H4Bi%MQBJ3=dYi()o-e_Tx z-V!5YYTC3pG&D3IBh!c*|I2}svn`9*86_C=OP3e-S-qoXVz9SRpk9FG<>gH$xM7-; zCx2mUR$Gvwq5@jBY{@|-gOrpc!B7v~9zhQtJb2L*zJ)g8B~?&BstRExBB+Cd6CFPM zBTk+Em6@4Zk-WSDx^(FRX=y2Ls3xB4QZQrNg2O28QQV7;P>D!*Jx@fP1}i8in11;F zM;tr$16#J#m>c_JXy3j)GBPrRnF_XcmMnDpPP%jFF07s#?e)AoB_?~416Cy^v9PeB zu&{8PJ$H)ntL1g>+!Y-2(lD}TY&O&n0Jq`XzWyiS7U=jTtS zPoKuGzy8APY+X2;N(oJyHU+vhc87l%1U`tWTAhnZ=F$Nx^V|E(`Dvp(jZR@K`U7{na83o^y86Z z_~XwDZ0C+W6d#|6)~(wJvp&<)GdQRWSa47%#l^*nbJT@mt^F^F2aAU)IyxH1e?B5K zZBL#g2~U4~>zA0A2$R*zSfGC}-H*M`^{$JP^lBfe;uKT>R`CV3{T&`2jw45kq4L@2 zPrMzKpP$Pa>(8)!#bUNSWCz#$C5kpxZ5Pxl_m^0(wr}4~lP7;cr%s&`YAO$p4YbnO zhy@0OkiNkzHfOFj^Yaa)t5>gbLpI{uG_RCvtshD(STQk&5EFBdMMdqU9Xle(%xpFL zX6trRRaFs0+ZGf?2?+^YKh-(`Ji$}^k{AUf60EPLOsDARJ)EH)Md@jo(ACxEo&+OE zSy=_MwWo3ZyXnf+E22#$F&Mp`5Qzh8<_sO$e_)SbJ4s0~?ul=XP$TK-YqQzfQ@N%v zm>zKh%HA7`f2QsAEQvmnpnybyWjKE^?T*^X!a^fRK|z75ou&&=?TOmY_ke<*PnDYb z6sBh4%uh*xr=m1S3|JQCHWU;bz!~IQi68HqIcur_6`%O&GrnSxyQ1mVty|nUVDT?% z@&2N#9tCP57Ks4M(ZQA0xjV5GK!WNzy=kh8d!LWvx8Vq4>2MedFk?4$D3(AAyBHf{Qb zl$4cWWHj$Z^T%JmGa`yi%`D0C`77|epXlm_0yPfSteLOZK&7Q|clY7C5tN{(S8S-4 zK6n271+4dQdkMDE=f!==RiMVfDlhB1cI_uuS1&R*U&-dp(|!q_U6Fgq!g4M7h+PWh z$tUstwFcJh+qa>vu3n}B>{gbY5>J?Hydm zbA1DE{^|%k6(#e%g0LHW3#+dsAW6rSmlkR#^B>GF)Ip{32%^I&^@A`O9N`<`%ZpwQCp7zj&#} zx+I*K)`}IVF|b0mhYRa|wrtq~>K)a=PkAYwlr^T-!m^DE7tDRB1}lAyxLjUk9k^8dDlH@PAlkyhMbm?y^&1%B3ni`wk~}?%YL3 zj~*44W#nIXH@C20y1M^80U8-CruCld*^C+gf%Xo!dCx(_+f`P9Y6UAeID~wBe1z3r z`1w?PUsdS@En2jQ{QU#OTB@`t^>n}5zzPiwr!8ByV9c1YoIRz4R;^lrU!)(;KX!I@ z6c`vNLiJpa`o5_)u$-KnFlEXVC@9FIBWJAhKg(udV8FNA{m)nR64W@0VX5C|$KkM9iDu3fvy*Vh;0$B##g7A?5uuOkc$^n{ve z$&#hqK(mLiU(S6+?|QDlJAt)*dl!nMLxPB^aW@%|nix)3sbLSd}P}O}ds+@yLgVn$P02()L zEId5cF+;<7jIW_QJl1nHm+{b)r}5*p(7SgpK>%-WZ{pWcH!~~# z846*0xb{}gy5Sp1Jfju|rshK7dB#l?k^lasM#jrf}T ze-es&Whqc0SQ|EM5avuND=UK=k|AqrYi4Y0TxLyGR^*~z!&RVMuz15