From 1894e311bdeb098c3bef9bd342e0eaf78d197a9b Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 20 Jan 2017 10:37:18 -0500 Subject: [PATCH] Walking player --- assets/player/player.png | Bin 840 -> 1558 bytes src/player.cpp | 102 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 100 insertions(+), 2 deletions(-) diff --git a/assets/player/player.png b/assets/player/player.png index 0f7f13a4f68228b925af1eb0350205281bd62f04..42cea0b234c706bc27c94848cab1e0dc08098579 100644 GIT binary patch delta 1528 zcmVv8Y!1Q2{=^;iU$FK*Td-EyA zII8~wrICX!r6=Vah{!Qu+(W1#v|uVq@5w>l(rcjZ#b8Yj+1ZYs=FN{?Z5_FOut=JH z-RCWY=K#cvd=4+MKI;qe_UV5zrT6D2b(;2`~pAyHo;AoM)YwwPmd1(0L@k( zo#n5^fsGxl!INiOnRoaX?jad6zX`%k%S|R8uY_j%^7(B$X=Sx4XWJqHR=R>!!#Z zmx5YSR(HNbQ9|9y&5A5WlIVMni<2(S&M$Fs(iPhq@tnREhK0IOrXp7X}e{uavCX<<^_x})yB3m>8fV=mfV0C8;0I`0IDO zGkin*?$(;|Jy&kh@zJ&E7pbdE`#4)Bn^ozSA&d8Z<@M9f+{`N@KfL`TsGRE5lR^IJ z+862ip>_T8^Pe+yxiB_e+HRZ8s&p3?S?IC%?;pR##mU=B!W!pff37@KM<V{G;Lw4*BBGGr0iao8zYGEFSQ`l=FPr^g4SmP}=15q3B-y&vset8Ssw(AoJV zzW!z)-aOxv98t1-2M%jB^wJdVVFv)v&Ju6jCKLeL!%nV8b277b_GLX82-?~9u!CN! zpU?CU51)azF<%EIf0C+;YYPDMT75KI{T##T>Gj@wwJ(&j=*%{ig*vt>UEgI$oSk1{ zbA3fVj6f_N3+$RBUO{v%HGAOw&+BuCj+IQ+fk1H_38>;9C1#b(^u{4;)or1t=+7y zFR`SQ|1Al#f9QgXlP>#gZ^RhIF&a^nf9j`>Miil*3?QY~5`Le|Kw50+6Opm2y^*NKZxEaC-DI zq_Hc(F&Hb3OS5OToH!b(s~Q)_^@JOz?LXuwj;)Wr43Pwt1R(3l!1$ScpTT77u@h&& zRElFVqFy*d7S+2xGNzUH&u~(8;(}9>Dhko1$0yyaP6~RN3#aO#dR5^#9T(13?s`v8 zZ&misf0k>q;iB7>csZo#(Rh)#=u;mcwS;MzO6fUEf^oi?QCsHN$wj(-;ZYR)6^hy#L4OwWv>WyT^q?3aka1rvdEBo5~W*Y zriWm32NsPg*C?{c@<9n(${NDLe^1llrj);L`aA^7kxbb%rRF(Dno{>% zYTtDwV8Kc*&0m0I()+qVo$-B-&NOqIRVM4nK-QCilv2trj`E|I{+pz+S)BS#Yz1LR zy;dAko;${7+l0}v9(YQayiI}FIh?6q3|XAxLCNAw-Rruvkz9u?9dtTaf25Sb7=rg| zPNQL9t#%monjeh{enJwXsnAll&(D delta 804 zcmV+<1Ka$T49Er{iBL{Q4GJ0x0000DNk~Le0001a0000N2nGNE051gKW04^;e+mu~ z0Y-er8~^|U)k#D_RA}DqSUqbSK@fergfwxL*2)$71?C`?Ag&@}Qidzkr!p=qf^+sS zu${=LN$J!EUmapDMZm4VMS81|>JW(12&_qAjnIA1o=%Amc3@eZcyI1@-p=d?5H&q- zl-4Gpk4flbd&_~f`k0D6697DafA%;PJQz)}z2&IiKgIxno7v1pux27tmbh`D1IJOv zV=HuBOq&R7t)BL%2=M)L7XYx)K82kK^)AHQAeT8-D_c$xn5?GTgD2CD9vtOld0e+c~g{RQ@Z zCeGH@>a_71jHYn4#`V=fs=#~+0zfh5#jB5Y^YzfnwW~D&i%Sjwz}L4I3E&<8%y-nd zzZtU`U8mjkQKPXC*u*%CcUzkTfHHdQwl)C(lhB8&buQl3dV%A+auW`}r!3EeV}h07 z)`f+uH3g0%Zm!ncSZe}6e@(BS+Rq!BUY~7?bn+#5uSbD%w~(Plg~WO{68Pl734WY~>=S1tl*?ra>&re@Ww2FriddhM5Q= zoe(+i$;GZJvQf4SgRW_IiSe=ESCYjQ8X1(_%CC(z0PLK1uyfwQ_0>V)=8JKBzOK@4 zFZbaEcVcWAUQwx!`}NT)6eo>ih@}#1FcFamtE&(uD=16Pg+aW%+{d9h!wJ2M3_MRv zFSs-2NhU{{U;f4zdY%N|LPS*PKMgCH5Lx4jU|p?g68ba=ed6pSBKYVfdd9k16FVUy z^3hB5020qd__St\ + \ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + \ + \ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + assets/player/player.png\ + \ + \ + \ + "; + void PlayerSystem::create(void) { player = game::entities.create(); @@ -32,6 +85,51 @@ void PlayerSystem::create(void) vec2 dim = player.component().get()->getSpriteSize(); float cdat[2] = {dim.x, dim.y}; player.assign(cdat[0], cdat[1]); + + // handle player animation + xmld.Parse(animationXML); + auto entan = player.assign(); + auto animx = xmld.FirstChildElement()->FirstChildElement(); + + uint limbid = 0; + float limbupdate = 0; + uint limbupdatetype = 0; + + while (animx) { + std::string animType = animx->Name(); + std::cout << animx->Name() << std::endl; + if (animType == "movement") { + limbupdatetype = 1; + auto limbx = animx->FirstChildElement(); + while (limbx) { + std::string limbHopefully = limbx->Name(); + if (limbHopefully == "limb") { + auto frames = developFrame(limbx); + + entan->limb.push_back(Limb()); + entan->limb.back().updateType = limbupdatetype; + + if (limbx->QueryUnsignedAttribute("id", &limbid) == XML_NO_ERROR) { + entan->limb.back().limbID = limbid; + } + if (limbx->QueryFloatAttribute("update", &limbupdate) == XML_NO_ERROR) { + entan->limb.back().updateRate = limbupdate; + } + + // place our newly developed frames in the entities animation stack + for (auto &f : frames) { + entan->limb.back().addFrame(f); + for (auto &fr : entan->limb.back().frame) { + for (auto &sd : fr) + sd.first.limb = limbid; + } + } + } + limbx = limbx->NextSiblingElement(); + } + } + animx = animx->NextSiblingElement(); + } } void PlayerSystem::configure(entityx::EventManager &ev) -- 2.39.5