From 714e46bf36aaf843d6e3d2e4fe7b7915ff68ebb2 Mon Sep 17 00:00:00 2001
From: OddlyTimbot <timbot@oddlystudios.com>
Date: Mon, 20 Jan 2025 20:43:55 -0500
Subject: [PATCH] character animations, gamecontroller

---
 .../assets/graphics/destructables/crate.png   | Bin 0 -> 1761 bytes
 .../graphics/destructables/crate.png.import   |  34 ++++
 .../player/idle/Player Idle 48x48.png         | Bin 0 -> 1853 bytes
 .../player/idle/Player Idle 48x48.png.import  |  34 ++++
 .../player/jump/player jump 48x48.png         | Bin 0 -> 1021 bytes
 .../player/jump/player jump 48x48.png.import  |  34 ++++
 .../graphics/player/run/player run 48x48.png  | Bin 0 -> 3199 bytes
 .../player/run/player run 48x48.png.import    |  34 ++++
 .../graphics/projectiles/pixel_bullet.png     | Bin 0 -> 3870 bytes
 .../projectiles/pixel_bullet.png.import       |  34 ++++
 .../graphics/terrains/Terrain (32x32).png     | Bin 0 -> 11796 bytes
 .../terrains/Terrain (32x32).png.import       |  34 ++++
 januaryproject/project.godot                  |   8 +
 januaryproject/scenes/bullet.tscn             |  10 +-
 januaryproject/scenes/crate.tscn              |  10 +-
 januaryproject/scenes/game.tscn               |  32 ++--
 januaryproject/scenes/player.tscn             | 178 +++++++++++++++++-
 januaryproject/scripts/bullet.gd              |   7 +-
 januaryproject/scripts/charactercontroller.gd |  34 +++-
 januaryproject/scripts/gamecontroller.gd      |   9 +-
 januaryproject/scripts/scene_manager.gd       |  41 +++-
 21 files changed, 498 insertions(+), 35 deletions(-)
 create mode 100644 januaryproject/assets/graphics/destructables/crate.png
 create mode 100644 januaryproject/assets/graphics/destructables/crate.png.import
 create mode 100644 januaryproject/assets/graphics/player/idle/Player Idle 48x48.png
 create mode 100644 januaryproject/assets/graphics/player/idle/Player Idle 48x48.png.import
 create mode 100644 januaryproject/assets/graphics/player/jump/player jump 48x48.png
 create mode 100644 januaryproject/assets/graphics/player/jump/player jump 48x48.png.import
 create mode 100644 januaryproject/assets/graphics/player/run/player run 48x48.png
 create mode 100644 januaryproject/assets/graphics/player/run/player run 48x48.png.import
 create mode 100644 januaryproject/assets/graphics/projectiles/pixel_bullet.png
 create mode 100644 januaryproject/assets/graphics/projectiles/pixel_bullet.png.import
 create mode 100644 januaryproject/assets/graphics/terrains/Terrain (32x32).png
 create mode 100644 januaryproject/assets/graphics/terrains/Terrain (32x32).png.import

diff --git a/januaryproject/assets/graphics/destructables/crate.png b/januaryproject/assets/graphics/destructables/crate.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b8bdcd0c0b752f7079f09620a2121e2f556f925
GIT binary patch
literal 1761
zcmeAS@N?(olHy`uVBq!ia0y~yV66aQ7G|Kx3)K}YKuS8mC&ZPJk@4EviZj!bwidfg
zOR#ARv&?lj3p3XP%3l(<cm<>wOM?7@862M7NMm4NEAe!345_&F=3paGhM{4>-<9Gk
znLx}@fG-5n-t%Qiw=HDgiN4G+!%1VxA&nj<%_&X>BHo%UP8u@~@xA||ayrX=Yw@c0
zyIl&!e2eOzewl*LKoaCON2))%{^Iur)(-I_+>c!MD8vcqcZh#%s&L!`7OCC(ZT*}5
z6@oy)Bi%qjko+T7n7sAUX?G5p-eFs}u-+`;_)!!EU@agc55!z6;G16XZ)x!P7yfz&
z#SLsLu^Sin_Ocky)sk&TAFjUh_MP-Ji#s_xAvVKYhGg^pX?%B&O0};w*WR}LXz;H5
zjk~e9p7o<roWOg>tM@`~+RfsV?wOo=^<5XlcM5Sp|AOUVUd#V+YLkwB-qK{vgR@Vg
zdKT^%g?o!L7ia&RJ^f|C<*jFLpF~v#4KrXU-YXA!eBn|gXSHY5^;ZcRx!ZBO?oXCg
zN&D$(C1Jn1E2VTlG8u#14099Il}(^vC@*{LxWP<9@Al=SF!t`VaoxB)!v5>o(;rup
z>*WKZ-)zMdfYm#~r}Zv7{AuR<s4iI4f<pvs7ewT}wfnXy>`#AxyOjLF2a+COAqGwX
zVAt99L|H|7etHtIYrUj`Fwo(!#DNIjk4*WAyweN#Ok?IfuzvD?1Ka*Kbx0~g1S~9F
zJ)g8crE>Rg*Oa#xv%B|-Atg3gA^_XK|2W%3>{|4lOE)!juhpEz6|0SlYZ*5ef0NnQ
z@bV<i)G0Yb>+=&x(nlmPi0iTCqz3tK4;;V}C;o303<(_t1VZ3evop9BaQq)Hy@wH7
bkWwJVy}a1dc9wyq7sw1xS3j3^P6<r_SKc3(

literal 0
HcmV?d00001

diff --git a/januaryproject/assets/graphics/destructables/crate.png.import b/januaryproject/assets/graphics/destructables/crate.png.import
new file mode 100644
index 0000000..d88f777
--- /dev/null
+++ b/januaryproject/assets/graphics/destructables/crate.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dh1d2qkxwg3vt"
+path="res://.godot/imported/crate.png-91961d6f3a0764bc8758ad055606c6d0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/graphics/destructables/crate.png"
+dest_files=["res://.godot/imported/crate.png-91961d6f3a0764bc8758ad055606c6d0.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/januaryproject/assets/graphics/player/idle/Player Idle 48x48.png b/januaryproject/assets/graphics/player/idle/Player Idle 48x48.png
new file mode 100644
index 0000000000000000000000000000000000000000..b618511699269f9bd10ff834f6b382e147588ebd
GIT binary patch
literal 1853
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
Rp8P|=%G}=UHTquMe*tJPoMiw2

literal 0
HcmV?d00001

diff --git a/januaryproject/assets/graphics/player/idle/Player Idle 48x48.png.import b/januaryproject/assets/graphics/player/idle/Player Idle 48x48.png.import
new file mode 100644
index 0000000..152f4c6
--- /dev/null
+++ b/januaryproject/assets/graphics/player/idle/Player Idle 48x48.png.import	
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c8esv4rqrll0u"
+path="res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/graphics/player/idle/Player Idle 48x48.png"
+dest_files=["res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.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/januaryproject/assets/graphics/player/jump/player jump 48x48.png b/januaryproject/assets/graphics/player/jump/player jump 48x48.png
new file mode 100644
index 0000000000000000000000000000000000000000..dff105cfac881171ef96781bd9bbd40e413dd6a7
GIT binary patch
literal 1021
zcmV<Z0|NYsP)<h;3K|Lk000e1NJLTq0058x001xu1^@s6{#x@^000BTNkl<Zc%1E<
zKS&%w6vn@eu}LB6Le7xH<^n=cj93Rt!Q+Hf7RK%%RwC(A+6B2Pf=w`iSOp>mEQ7U}
zLs5iSL^<MtRw5*YB9~&Fb9QcKZ)bP*cIJFP*ursK-k)#Ydvk{XK@bE%5ClOG1VIo4
zK@da>ysQndjn_Z_)cK!3y?8`13c+Y_To1lzKf`rD(zM^$i(L=C%6^9Hexzmp9TP7J
z3x2D_5a!4t4@Lw;++IjPL?TE)*M!XouFOAKKtr?u-6Zv(YkUXd<Tc(!-uxJB1p4jw
zf69I9D|47RDc$N=sYo0YmIPG-`pO5^1)diUkINzoI}Gb9a{!Qv{fUNX-stz^_oRD1
zJXo^ob0C#?qF|#h?BUnNT#QXF0PyWM?L%w<MNP!m<bpMUUpg)-?Fg$rHWKEG3??D~
z_?BBUmXBBhigSvy77+{hz_X_SfW^^mk3Bl#$=VN~*%y&8e{x+90r(<fPZC@1>i)sf
zak0Mh>nO11+UfNJza4o$n<0Rk1Z07%>MV|KH|Cnd*}PH={w!JoU_k}q;T@2{2S2OR
zD+a#QyBe@rHR$i1USRL^qA`5(r#B^2wb1c{XQEaxHcV>?NY(}bx#42)8SNHPEAhx+
zwgbTUmm?2ozQJTIB3(a3CTazbJxT1)Zea|u@~8|2{NOX;WZ4432(zCtQ7d>^3MYza
z`pO61;cUJh#UB&2?Ypp<laiNp3y6|{PCzD}N>T6D78R|4^6h|6#?IDsW4&75XzcI(
zI|u+6TJ`se!ZF#4lOpqh+0S5p*beUt&(-{yaUWs}2=GNDGqzgZXbL{yCx91`EdrAH
za5aCX+;6jxRN?`E{`@|6r*cN^Po;%Do_#4@uM~^*CnFzWVt7lNu6Os9ze}qfq(y&z
zAN~3LRNk#6AiixSnJ2yu4LOwnk>Ay7)+Q(!7+wzKMJ61R2SEE47DYJB3DHoS125zG
z=NfjWa)C7$d|>gvJRb?fU-ZQUv9Iw_V7=DGio;H>%!gN%iq-8`MjGM)49-BT&x$2f
zCLY@o5T)$9hFE?0!P#ULO;mw=BX5G;-Lu&+QdM<q6Axoxc-h<8ny$;l<9hXBc}b)F
z8f#&##AAEl#lrvueIn$<Zee1H48sla1d)lyc0YL9C4M6_P?)i{2fdYeT)Y6ZlUM?Z
zT76s>kLz^zY<j#uY2+hu1yYrI+r=ZJRokL!)C~P+>NPI6;W(H&45@yQ*hzGvh%)2y
re59^(3$vL{@`WG>f*=TjXb=AZ>!Ac3Jx|zZ00000NkvXXu0mjfKxWs7

literal 0
HcmV?d00001

diff --git a/januaryproject/assets/graphics/player/jump/player jump 48x48.png.import b/januaryproject/assets/graphics/player/jump/player jump 48x48.png.import
new file mode 100644
index 0000000..c1af1c4
--- /dev/null
+++ b/januaryproject/assets/graphics/player/jump/player jump 48x48.png.import	
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cpksf8fvm4k26"
+path="res://.godot/imported/player jump 48x48.png-1ccba0c36041038682bf917e1f6cf991.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/graphics/player/jump/player jump 48x48.png"
+dest_files=["res://.godot/imported/player jump 48x48.png-1ccba0c36041038682bf917e1f6cf991.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/januaryproject/assets/graphics/player/run/player run 48x48.png b/januaryproject/assets/graphics/player/run/player run 48x48.png
new file mode 100644
index 0000000000000000000000000000000000000000..aca5b5560dba7381b8b06e68e76b1cadf80992cb
GIT binary patch
literal 3199
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
I)3Fc#A5dKsJ^%m!

literal 0
HcmV?d00001

diff --git a/januaryproject/assets/graphics/player/run/player run 48x48.png.import b/januaryproject/assets/graphics/player/run/player run 48x48.png.import
new file mode 100644
index 0000000..8bedd36
--- /dev/null
+++ b/januaryproject/assets/graphics/player/run/player run 48x48.png.import	
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://lum1fe47ggoy"
+path="res://.godot/imported/player run 48x48.png-6d66612d48bfa4c8721495ba557ab7c6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/graphics/player/run/player run 48x48.png"
+dest_files=["res://.godot/imported/player run 48x48.png-6d66612d48bfa4c8721495ba557ab7c6.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/januaryproject/assets/graphics/projectiles/pixel_bullet.png b/januaryproject/assets/graphics/projectiles/pixel_bullet.png
new file mode 100644
index 0000000000000000000000000000000000000000..900d030a8645ee217d7bdefb51fb303033b44488
GIT binary patch
literal 3870
zcmeAS@N?(olHy`uVBq!ia0y~yU|a{p4jgPikte%nWH2!BJ@s^P45^5Fd*|R<HFw6=
zi|Hq$UHDWOEhlJjRycA@X5rkRz_`Tmo<d~u$-C?1R_`z8kN)@T`L&&`>z>(~*w_5v
zXJlgG5a8haBXCMf3(Wpu5F^J3Vl83e316j`$SI)UaG;=)8K_KQf{;PX%3Uq04h;;9
zhoABSWf~m34iqeXB{YozsD)>`IY@>{lkxD>Ro)RGlMQ0-fn-Jv8x6D3q%mZ((;cB7
z*X`^7RJ}fsU;E?y|G#VfYgYaLr(gej$Cv#(_3dk8ivGR6zrObVa;K7+m5tv2m1l)B
zeW+(VT>4Fd=laa~ms#q>fCa%pU7$$!>)HI$>x}J}b4uvtKiJmraF_45ZsxYvXU=Cb
zwVjsUp_{NHZ?fb%W25DqHOdd%Tjh>|b)D|#I=^F%+K1IZMTd8&0u>bk73o1ti8)X(
zSMrxE*rq>yFhhRIUYDGCnFS<ZA#4znUia@<>9gl1jP;MDDwzHG&+h;K+2GdvZU3J3
zw12hxb6V2B``5mvhX2KG3zs(cw7q7~FSt^`>Lv8Ckn!+Wi<i6iT`1VQx_|j)iFM0e
zYvUac6o^Jyoyge1_kqcsH++GLpuD(2O#kG4ueo`z@BUR`)%&n2>dJRfU>Qme<K#cL
z#{c{H_`3Zw|6k|oyXq|;bKEG9{b(s8Y7ler5l{G*9qq}|>)IV_W1S8ZsAl~#Tk^0=
z?0Z4Z;jacO)_ZeEtaI^g(~i1a-k-Z;pY=xj2dzwPuUnVKbUw+C37=y3Kb`0L^Y=G+
z_k&CePu#KSsIAQH0$ZL}uZ5V}v;!y0i@Ih1dbg4Hdb#>H_B{ay3ifW8qCN3X@9VBh
z&;R#4{Pjn6_d<Emx>@E4JM4U?x{DjexYzKxv;OJTj+%qvj{WveUbCOuKj-7`(|>;e
zD<iN{kPlV^EeKut>^V>PX7iQjS%3-a{%e2fb=Sj7L@prwy6%`+O!(4S^NnN9-dkb^
zj`#KUxjW+GF9tdsE<N(RAml)SYxi!c+Xb;xv+B+jm{w2z<pWGVKllFI^02Db)t!;|
zy5Ri7fsBVmb>C&>94-xA_0#h3)i=JcjDe~5+4o<U+g^Vam1Q-->##d7kGB`Ri9ff)
z$|Sz-*N>{Fg|UD4Y2SZp%%a8Aw))Z)?;@#no0Zn_^**#JF8fu?EwS$W-S>~T8^@$C
zfn)`HZVA2j52gXL$I-86+j+rB8(6&-L?0-)tM>aS$SJ_246K9i0CU#%lRV(0zEAMO
zVyFH`U|mn$Thn9wgnxtr6(!yQ*4x{602NKY4639H^b&TQ<N4bM&UAIhVTSzad);#;
zlL;gMuGymxyx(!_ucv<lL!%|*Vbk!P+`<YD3xFAPRB$vvMiawmMi?y_MoUH7*9eXO
a85tTR1D33RtP1S+GI+ZBxvX<aXaWGpp47eo

literal 0
HcmV?d00001

diff --git a/januaryproject/assets/graphics/projectiles/pixel_bullet.png.import b/januaryproject/assets/graphics/projectiles/pixel_bullet.png.import
new file mode 100644
index 0000000..02bf04c
--- /dev/null
+++ b/januaryproject/assets/graphics/projectiles/pixel_bullet.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4rwvfk7efpru"
+path="res://.godot/imported/pixel_bullet.png-30d6d1e8b5e1332f8b2e2cee72a9e790.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/graphics/projectiles/pixel_bullet.png"
+dest_files=["res://.godot/imported/pixel_bullet.png-30d6d1e8b5e1332f8b2e2cee72a9e790.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/januaryproject/assets/graphics/terrains/Terrain (32x32).png b/januaryproject/assets/graphics/terrains/Terrain (32x32).png
new file mode 100644
index 0000000000000000000000000000000000000000..ddf1eaf58e63d04bfa806cd75eab977633dd771b
GIT binary patch
literal 11796
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
b1DNH#Dz|$Kzczt3Z-}m@(cMb*ColgW2-TUV

literal 0
HcmV?d00001

diff --git a/januaryproject/assets/graphics/terrains/Terrain (32x32).png.import b/januaryproject/assets/graphics/terrains/Terrain (32x32).png.import
new file mode 100644
index 0000000..8e1673a
--- /dev/null
+++ b/januaryproject/assets/graphics/terrains/Terrain (32x32).png.import	
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dcx8qbotrbgpp"
+path="res://.godot/imported/Terrain (32x32).png-7361ca574569f6e5ff16ef11d25a8904.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/graphics/terrains/Terrain (32x32).png"
+dest_files=["res://.godot/imported/Terrain (32x32).png-7361ca574569f6e5ff16ef11d25a8904.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/januaryproject/project.godot b/januaryproject/project.godot
index 3e030a8..e12a171 100644
--- a/januaryproject/project.godot
+++ b/januaryproject/project.godot
@@ -15,6 +15,14 @@ run/main_scene="res://scenes/game.tscn"
 config/features=PackedStringArray("4.3", "Forward Plus")
 config/icon="res://icon.svg"
 
+[display]
+
+window/size/viewport_width=320
+window/size/viewport_height=180
+window/size/window_width_override=960
+window/size/window_height_override=540
+window/stretch/mode="viewport"
+
 [file_customization]
 
 folder_colors={
diff --git a/januaryproject/scenes/bullet.tscn b/januaryproject/scenes/bullet.tscn
index b9fad73..820761c 100644
--- a/januaryproject/scenes/bullet.tscn
+++ b/januaryproject/scenes/bullet.tscn
@@ -1,6 +1,7 @@
-[gd_scene load_steps=3 format=3 uid="uid://ckc5gbyie17tm"]
+[gd_scene load_steps=4 format=3 uid="uid://ckc5gbyie17tm"]
 
 [ext_resource type="Script" path="res://scripts/bullet.gd" id="1_fxxmp"]
+[ext_resource type="Texture2D" uid="uid://c4rwvfk7efpru" path="res://assets/graphics/projectiles/pixel_bullet.png" id="2_0y61d"]
 
 [sub_resource type="RectangleShape2D" id="RectangleShape2D_rws30"]
 size = Vector2(10, 4)
@@ -12,4 +13,11 @@ script = ExtResource("1_fxxmp")
 shape = SubResource("RectangleShape2D_rws30")
 debug_color = Color(0.892283, 0.284139, 0.402358, 0.42)
 
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture_filter = 1
+position = Vector2(-3, -2)
+rotation = 3.14089
+scale = Vector2(0.0794906, 0.0794906)
+texture = ExtResource("2_0y61d")
+
 [connection signal="body_entered" from="." to="." method="_on_body_entered"]
diff --git a/januaryproject/scenes/crate.tscn b/januaryproject/scenes/crate.tscn
index 4622fa3..7124af5 100644
--- a/januaryproject/scenes/crate.tscn
+++ b/januaryproject/scenes/crate.tscn
@@ -1,10 +1,18 @@
-[gd_scene load_steps=2 format=3 uid="uid://di3tq4f0xmdqc"]
+[gd_scene load_steps=3 format=3 uid="uid://di3tq4f0xmdqc"]
+
+[ext_resource type="Texture2D" uid="uid://dh1d2qkxwg3vt" path="res://assets/graphics/destructables/crate.png" id="1_vh3j5"]
 
 [sub_resource type="RectangleShape2D" id="RectangleShape2D_jqoba"]
 
 [node name="RigidBody2D" type="RigidBody2D" groups=["destructable"]]
 metadata/_edit_group_ = true
 
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture_filter = 1
+position = Vector2(0, 2)
+scale = Vector2(0.0719266, 0.0719266)
+texture = ExtResource("1_vh3j5")
+
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 shape = SubResource("RectangleShape2D_jqoba")
 debug_color = Color(0.801265, 0.412511, 0.212642, 0.42)
diff --git a/januaryproject/scenes/game.tscn b/januaryproject/scenes/game.tscn
index f149201..5b4959b 100644
--- a/januaryproject/scenes/game.tscn
+++ b/januaryproject/scenes/game.tscn
@@ -26,21 +26,6 @@ metadata/_edit_group_ = true
 [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
 shape = SubResource("RectangleShape2D_jk5qv")
 
-[node name="RigidBody2D" parent="." instance=ExtResource("1_tfj4n")]
-position = Vector2(291, 405)
-rotation = 2.0228
-
-[node name="RigidBody2D2" parent="." instance=ExtResource("1_tfj4n")]
-position = Vector2(509, 216)
-
-[node name="RigidBody2D3" parent="." instance=ExtResource("1_tfj4n")]
-position = Vector2(576, 241)
-rotation = -1.0315
-
-[node name="RigidBody2D4" parent="." instance=ExtResource("1_tfj4n")]
-position = Vector2(540, 178)
-rotation = 0.0531393
-
 [node name="floor" type="StaticBody2D" parent="."]
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="floor"]
@@ -65,5 +50,22 @@ position = Vector2(178, 316)
 unique_name_in_owner = true
 script = ExtResource("6_1kka5")
 
+[node name="crates" type="Node2D" parent="."]
+
+[node name="RigidBody2D" parent="crates" instance=ExtResource("1_tfj4n")]
+position = Vector2(291, 405)
+rotation = 2.0228
+
+[node name="RigidBody2D2" parent="crates" instance=ExtResource("1_tfj4n")]
+position = Vector2(509, 216)
+
+[node name="RigidBody2D3" parent="crates" instance=ExtResource("1_tfj4n")]
+position = Vector2(576, 241)
+rotation = -1.0315
+
+[node name="RigidBody2D4" parent="crates" instance=ExtResource("1_tfj4n")]
+position = Vector2(540, 178)
+rotation = 0.0531393
+
 [connection signal="areaTrigger" from="Area2D" to="." method="_on_trigger"]
 [connection signal="body_entered" from="Area2D" to="Area2D" method="_on_body_entered"]
diff --git a/januaryproject/scenes/player.tscn b/januaryproject/scenes/player.tscn
index a84c7a9..bea574d 100644
--- a/januaryproject/scenes/player.tscn
+++ b/januaryproject/scenes/player.tscn
@@ -1,9 +1,177 @@
-[gd_scene load_steps=3 format=3 uid="uid://dcbk086hhrn7y"]
+[gd_scene load_steps=28 format=3 uid="uid://dcbk086hhrn7y"]
 
 [ext_resource type="Script" path="res://scripts/charactercontroller.gd" id="1_6alft"]
+[ext_resource type="Texture2D" uid="uid://c8esv4rqrll0u" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_itql4"]
+[ext_resource type="Texture2D" uid="uid://cpksf8fvm4k26" path="res://assets/graphics/player/jump/player jump 48x48.png" id="3_fjlo4"]
+[ext_resource type="Texture2D" uid="uid://lum1fe47ggoy" path="res://assets/graphics/player/run/player run 48x48.png" id="3_fp3hq"]
 
 [sub_resource type="CircleShape2D" id="CircleShape2D_qrixx"]
 
+[sub_resource type="AtlasTexture" id="AtlasTexture_xei83"]
+atlas = ExtResource("2_itql4")
+region = Rect2(0, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0rt17"]
+atlas = ExtResource("2_itql4")
+region = Rect2(48, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_sud8s"]
+atlas = ExtResource("2_itql4")
+region = Rect2(96, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_l40ca"]
+atlas = ExtResource("2_itql4")
+region = Rect2(144, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_fccip"]
+atlas = ExtResource("2_itql4")
+region = Rect2(192, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_fsk16"]
+atlas = ExtResource("2_itql4")
+region = Rect2(240, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ub2tx"]
+atlas = ExtResource("2_itql4")
+region = Rect2(288, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7c3ch"]
+atlas = ExtResource("2_itql4")
+region = Rect2(336, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yr10o"]
+atlas = ExtResource("2_itql4")
+region = Rect2(384, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_xw5gp"]
+atlas = ExtResource("2_itql4")
+region = Rect2(432, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_4x1vb"]
+atlas = ExtResource("3_fjlo4")
+region = Rect2(0, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_secem"]
+atlas = ExtResource("3_fjlo4")
+region = Rect2(48, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gwif0"]
+atlas = ExtResource("3_fjlo4")
+region = Rect2(96, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5c5x4"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(0, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_12spb"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(48, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_atg7s"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(96, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_xrqff"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(144, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_exuqk"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(192, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1g4qy"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(240, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_6po63"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(288, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_epwr5"]
+atlas = ExtResource("3_fp3hq")
+region = Rect2(336, 0, 48, 48)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_yi1g3"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xei83")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0rt17")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_sud8s")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_l40ca")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_fccip")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_fsk16")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ub2tx")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7c3ch")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yr10o")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xw5gp")
+}],
+"loop": true,
+"name": &"idle",
+"speed": 12.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_4x1vb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_secem")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gwif0")
+}],
+"loop": false,
+"name": &"jump",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5c5x4")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_12spb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_atg7s")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xrqff")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_exuqk")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1g4qy")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_6po63")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_epwr5")
+}],
+"loop": true,
+"name": &"run",
+"speed": 12.0
+}]
+
 [node name="CharacterBody2D" type="CharacterBody2D" groups=["player"]]
 script = ExtResource("1_6alft")
 metadata/_edit_group_ = true
@@ -23,3 +191,11 @@ position = Vector2(10, -5)
 
 [node name="LeftTarget" type="Node2D" parent="."]
 position = Vector2(-10, -5)
+
+[node name="Camera2D" type="Camera2D" parent="."]
+
+[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
+texture_filter = 1
+sprite_frames = SubResource("SpriteFrames_yi1g3")
+animation = &"jump"
+autoplay = "jump"
diff --git a/januaryproject/scripts/bullet.gd b/januaryproject/scripts/bullet.gd
index d64553c..1da33b1 100644
--- a/januaryproject/scripts/bullet.gd
+++ b/januaryproject/scripts/bullet.gd
@@ -1,4 +1,5 @@
 class_name Bullet extends Area2D
+@onready var bulletGraphic: Sprite2D = $Sprite2D
 
 var speed = 700
 signal hit
@@ -17,9 +18,13 @@ func _physics_process(delta: float) -> void:
 
 func setSpeed(value):
 	speed = value
+	if speed <0:
+		bulletGraphic.flip_h = true
+	else:
+		bulletGraphic.flip_h = false
 
 
 func _on_body_entered(body: Node2D) -> void:
 	print("Bullet hit sumtin")
 	if not body.is_in_group("player"):
-		hit.emit(body)
+		hit.emit(self, body)
diff --git a/januaryproject/scripts/charactercontroller.gd b/januaryproject/scripts/charactercontroller.gd
index d27ddf2..5b59901 100644
--- a/januaryproject/scripts/charactercontroller.gd
+++ b/januaryproject/scripts/charactercontroller.gd
@@ -4,6 +4,7 @@ extends CharacterBody2D
 const SPEED = 500.0
 const JUMP_VELOCITY = -600.0
 @export var BUMP_FORCE = 90
+@onready var animation: AnimatedSprite2D = $AnimatedSprite2D
 
 # Shove Attack Variables
 @onready var right_ray: RayCast2D = $RightRay
@@ -18,15 +19,21 @@ var pushLeftEnabled = false
 @onready var right_target: Node2D = $RightTarget
 @onready var left_target: Node2D = $LeftTarget
 
+var isJumping = false
 
 func _physics_process(delta: float) -> void:
 	# Add the gravity.
 	if not is_on_floor():
+		
 		velocity += get_gravity() * delta
-
+	else:
+		isJumping = false
+		
 	# Handle jump.
 	if Input.is_action_just_pressed("jump") and is_on_floor():
 		velocity.y = JUMP_VELOCITY
+		animation.play("jump")
+		isJumping = true
 	
 	# Shove Attack
 	if Input.is_action_just_pressed("shove"):
@@ -36,26 +43,33 @@ func _physics_process(delta: float) -> void:
 			pushTarget.apply_central_impulse(Vector2(-1,0) * PUSH_FORCE * 2 )
 	# Handle Shooting
 	if Input.is_action_just_pressed("shoot"):
-		# make a new bullet
-		var myBullet = %SceneManager.bulletFactory()
-		
-		#var myBullet = bullet.instantiate()
-		owner.add_child(myBullet)
-		myBullet.transform = right_target.global_transform
+	
 		if faceLeft == true:
-			myBullet.transform = left_target.global_transform
-			myBullet.setSpeed(-700)
-		
+			var myBullet = %SceneManager.makeBullet(left_target.global_transform, -700)
+			#myBullet.transform = left_target.global_transform
+			#myBullet.setSpeed(-700)
+		if faceLeft == false:
+			var myBullet = %SceneManager.makeBullet(right_target.global_transform, 700)
+			
 	# Get the input direction and handle the movement/deceleration.
 	# As good practice, you should replace UI actions with custom gameplay actions.
 	var direction := Input.get_axis("left", "right")
 	if direction:
 		velocity.x = direction * SPEED
 		if direction <0:
+			if not isJumping:
+				animation.play("run")
 			faceLeft = true
+			animation.flip_h = true
 		if direction >0:
+			if not isJumping:
+				animation.play("run")
 			faceLeft = false
+			animation.flip_h = false
+		
 	else:
+		if not isJumping:
+			animation.play("idle")
 		velocity.x = move_toward(velocity.x, 0, SPEED)
 
 	move_and_slide()
diff --git a/januaryproject/scripts/gamecontroller.gd b/januaryproject/scripts/gamecontroller.gd
index 5b61119..1c2c8e8 100644
--- a/januaryproject/scripts/gamecontroller.gd
+++ b/januaryproject/scripts/gamecontroller.gd
@@ -3,6 +3,9 @@ extends Node2D
 var boxTotal = 4
 var timer:= Timer.new()
 var countdown = 10
+var totalCrates = 0
+
+signal destroyBox(body)
 
 # Called when the node enters the scene tree for the first time.
 func _ready() -> void:
@@ -36,5 +39,7 @@ func _on_trigger(effect: Variant, body) -> void:
 func bulletHit(body):
 	print("Game controller knows bullet hit something")
 	if body.is_in_group("destructable"):
-		body.queue_free()
-		
+		destroyBox.emit(body)
+
+func countCrates(value):
+	totalCrates = value
diff --git a/januaryproject/scripts/scene_manager.gd b/januaryproject/scripts/scene_manager.gd
index 7b4895a..94a4e68 100644
--- a/januaryproject/scripts/scene_manager.gd
+++ b/januaryproject/scripts/scene_manager.gd
@@ -1,11 +1,23 @@
 extends Node
 @onready var game: Node2D = $".."
+@onready var crates: Node2D = $"../crates"
 
 var bullet = preload("res://scenes/bullet.tscn")
+var bulletArray:Array = []
+var bulletsMadeTotal :=0
 
+var totalCrates := 0
 # Called when the node enters the scene tree for the first time.
 func _ready() -> void:
-	pass # Replace with function body.
+	game.destroyBox.connect(boxDestroy)
+	for obj in crates.get_children():
+		if obj.is_in_group("destructable"):
+			#increase the box counter
+			totalCrates +=1
+			
+	
+		
+	
 
 
 # Called every frame. 'delta' is the elapsed time since the previous frame.
@@ -14,10 +26,31 @@ func _process(delta: float) -> void:
 
 func bulletFactory():
 	print("Factory will make a bullet")
-	var myBullet = bullet.instantiate()
-	myBullet.connect("hit", onBulletHit)
+	var myBullet
+	if bulletArray.size() < 4:
+		myBullet = bullet.instantiate()
+		myBullet.connect("hit", onBulletHit)
+		owner.add_child(myBullet)
+	else:
+		myBullet = bulletArray.pop_back()
+	
+	bulletArray.push_front(myBullet)
 	
 	return myBullet
-func onBulletHit(body):
+	
+func makeBullet(position, speed):
+	var myBullet = bulletFactory()
+	myBullet.transform = position
+	myBullet.setSpeed(speed)
+	return myBullet
+	
+func onBulletHit(bullet, body):
+	bullet.position = Vector2(-100,-100)
+	bullet.setSpeed(0)
+	
 	print("Scene manager knows bullet hit")
 	game.bulletHit(body)
+	
+func boxDestroy(body):
+	body.queue_free()
+