From 3dbef88e224337816c80ac77224e5dd39f332bbc Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Tue, 6 Dec 2011 20:16:00 +0000 Subject: [PATCH] Milestone: "Almost Playable" A workable "Demo" is now ready. --- Data/Media/Images/Characters/template.png | Bin 0 -> 2145 bytes Data/Media/Maps/MainMenu | 13 + Data/Media/Maps/TestLevel | 17 + README | 45 +++ Save/1 | 1 + Save/2 | 0 Unuk-QT/Makefile | 65 +++- Unuk-QT/Unuk-QT.pro | 8 +- Unuk-QT/Unuk-QT.pro.user | 395 ++++++++++++---------- src/Unuk/Constants.h | 4 +- src/Unuk/Game.cpp | 192 +++++++++++ src/Unuk/Game.h | 61 ++++ src/Unuk/Globals.cpp | 2 +- src/Unuk/Globals.h | 2 +- src/Unuk/Player.cpp | 84 +++++ src/Unuk/Player.h | 26 ++ src/Unuk/main.cpp | 281 +++++---------- src/libUnuk/Button.cpp | 12 +- src/libUnuk/Button.h | 2 +- src/libUnuk/MainMenu.cpp | 2 +- src/libUnuk/MainMenu.h | 2 +- src/libUnuk/NPC.cpp | 4 + src/libUnuk/NPC.h | 2 +- src/libUnuk/Text.cpp | 2 +- 24 files changed, 815 insertions(+), 407 deletions(-) create mode 100644 Data/Media/Images/Characters/template.png create mode 100644 Data/Media/Maps/MainMenu create mode 100644 Data/Media/Maps/TestLevel create mode 100644 Save/1 create mode 100644 Save/2 create mode 100644 src/Unuk/Game.cpp create mode 100644 src/Unuk/Game.h create mode 100644 src/Unuk/Player.cpp create mode 100644 src/Unuk/Player.h diff --git a/Data/Media/Images/Characters/template.png b/Data/Media/Images/Characters/template.png new file mode 100644 index 0000000000000000000000000000000000000000..6628413648b0dbb210adf58d3a452a8ee2cb3d87 GIT binary patch literal 2145 zcmXw(4NwzF7RNh4NaSN3b(IlB2X&RW>`D}opkhWt1xDp?6vZ595)>uNY0iiuBN7=! zc7v#p6~vLvLR6H9pjrGV1Mwp#f)RF?AQFw>M-=W1>On-&aAR#Rp5>Ru0QZE4RAb$Dk=n=;V9{@4L z&Vr zF*YHEDH1X1aJyOIa+>Hue+`$(gmGYk2kS%}3yC_l3YVDz95%pVKyV>7&e1DGX2t)* zfs0h(FswphO2jb`s7)<(=n0G?74ZlXqbQl)Kw9iNyHuezTO9P0OQb+~ToI0vgiNnf z*)4jP!vwQAD8!X%XhgwCJU?_xJYOkKtj(8qUMU@d5gsC?<-zz=loSEA0$51k(gBwV zxNIOeDQW(}@d*%S|FGQabz&6 z=HV13Ge}kTk&zLX%l`T0J(tUc!iW^6g>ke9$Hw70Me6{9!x+U?SVUTf%-|#}E~nG! zauNM)J6uje#6i?3S0}}7q{5+AyL5WGG_96ykY++-q{*AV49u=aEIQtiU~w&9-jf@gfW& zWspwAHE2|`MQln0)7VLZpeVILueX>@PKP}xF$&FGzvk!;dF_!SZ5rbn zqeLQ6$lzQQ$WZpUuf}mW9DzU}7K@ciWnJ9`m;>W7oKO*zo-$YrHm8lp;(AAk;uTQS5uS9(ElF?tT0l%JjKi7xv%~1>tTVAy!Eq2#2J$!~+i{i^0 ztjnJ$m8Fu8mZ&LVqBHvxZ{&aaS9NVs^8)sZ!%ugY+uYq} z2LU1w>Y; z0>tBy)QGQ(*7mpwYm<^+(rp|oR&cINBeuoZzy&uCpH=sIp5DNOJC#(r{}?EAd9SiH z@j>g(i(N;jXMXxAK&+riZAnh9TA3|rYTWuR#jPTb3_LeEL~|+PVd}*045d<1F6W1l zyqoVeMQC3@tub^IP%5d$(4_BL1Rb880GfXr4VZup{gOj8 zZn#hqZvF6v8)+?m*6i8od1U4z>+#1v%g%&7+OJ^x`?h_Uwcx2>L)g$of!`JneoY^q zfq#r`6HYz*^RpXOvfA}d#G*g!N@tLgpNIX+du%YJs$G= zrfK}u21d(p-_Xpnz13Eh_wiyOt+X`Eb+v5byuRpM$zoS5njIAF%y>-FcgbL42cKp1M_EeDVn!5jP!u`)L zhE+oFyvA?$&aDY0m)p!wbFQ@=)pp$aGdyd-uZ;Dqn7qNYIe%+-GqpXW$p6vaw3y73 zw;F<0G;81c#Jv4`=If)v((doA>alIH=Qc$8Z&Lb#ear}*z3T0z&M?Z?>vOMLWV+`1 zuIn3&X;@iLJLR3_mp?`#kD9iyMxs2=sO%D<_!@8KNy&$ta53-H+`6U49Om&TZkFoT RPWrC{vC(mYnkC}g{{c*a(ux28 literal 0 HcmV?d00001 diff --git a/Data/Media/Maps/MainMenu b/Data/Media/Maps/MainMenu new file mode 100644 index 0000000..d05f5bc --- /dev/null +++ b/Data/Media/Maps/MainMenu @@ -0,0 +1,13 @@ +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 tree 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 water 0 n 0 000 n 0 0 water 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +water 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 water 0 n 0 000 n 0 0 water 0 n 0 000 n 0 0 water 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 1 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 +grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 grass 0 n 0 000 n 0 0 diff --git a/Data/Media/Maps/TestLevel b/Data/Media/Maps/TestLevel new file mode 100644 index 0000000..9cf587a --- /dev/null +++ b/Data/Media/Maps/TestLevel @@ -0,0 +1,17 @@ +grass 1 n 0 100 n 0 0 rock 0 n 0 100 mainmenu 200 200 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 mud 0 n 0 100 n 0 0 grass 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 gravel 0 n 0 100 n 0 0 ice 0 tree 1 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 +grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 grass 1 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 rock 0 n 0 100 n 0 0 diff --git a/README b/README index 7ec0afa..58367d7 100644 --- a/README +++ b/README @@ -11,6 +11,51 @@ for a portfolio piece. I will place this under the GPL licence. ################################################## +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +TODO: + +Take the camera into account so we do not draw things off screen. + +*Menu: +~~~~~ +- New Game +- SaveGame loading + - New screen or make buttons appear on the menu +- SaveGame deleting +- Game Settings + - Keybindings + - Fullscreen + +*Fix NPC animation + +*Map Editor: +~~~~~~~~~~~~ + +- Change the array of tiles into a list of tiles. +- Get a tile selection marker and display the current tile info. + +*Proper collision testing. +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- MapTile objects store a list of character* 's + - The character class will add and remove themselves from the list in the MapTile. + - When the Character class wants to check for collisions it hands a pointer to + itself to the MapTile object, the MapTile will then return true if any + Character in it's list collides with the Character* it just recieved. + - Create the appropriate methods in the MapTile class + - bool CheckCollision(Character *charptr); + - void AddCharacter(Character *charptr); + - void RemoveCharacter(Character *charptr); + +*A way for entities to store information (Like items). +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Sort out how we will read in the information + - A list of present objects that can be referenced with a single word in the map file. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Copyright (C) 2011 Allanis allanis@saracraft.net diff --git a/Save/1 b/Save/1 new file mode 100644 index 0000000..c3f407c --- /dev/null +++ b/Save/1 @@ -0,0 +1 @@ +55 diff --git a/Save/2 b/Save/2 new file mode 100644 index 0000000..e69de29 diff --git a/Unuk-QT/Makefile b/Unuk-QT/Makefile index f6adef2..09a672f 100644 --- a/Unuk-QT/Makefile +++ b/Unuk-QT/Makefile @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: Unuk-QT -# Generated by qmake (2.01a) (Qt 4.7.4) on: Sun Nov 20 17:49:45 2011 +# Generated by qmake (2.01a) (Qt 4.7.3) on: Mon Nov 21 13:46:00 2011 # Project: Unuk-QT.pro # Template: app # Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro @@ -10,13 +10,13 @@ CC = gcc CXX = g++ -DEFINES = -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +DEFINES = -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED CFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES) CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT $(DEFINES) INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. LINK = g++ LFLAGS = -LIBS = $(SUBLIBS) -L/usr/lib/i386-linux-gnu -lGL -lSDL -lSDL_ttf -lSDL_image -lGLU -lQtGui -lQtCore -lpthread +LIBS = $(SUBLIBS) -L/usr/lib -lGL -lSDL -lSDL_ttf -lSDL_image -lGLU -lQtGui -lQtCore -lpthread AR = ar cqs RANLIB = QMAKE = /usr/bin/qmake-qt4 @@ -63,7 +63,9 @@ SOURCES = ../src/libUnuk/Debug.cpp \ ../src/libUnuk/IngameMenu.cpp \ ../src/libUnuk/Collision.cpp \ ../src/libUnuk/Character.cpp \ - ../src/libUnuk/NPC.cpp + ../src/libUnuk/NPC.cpp \ + ../src/Unuk/Player.cpp \ + ../src/Unuk/Game.cpp OBJECTS = Debug.o \ main.o \ Input.o \ @@ -84,12 +86,13 @@ OBJECTS = Debug.o \ IngameMenu.o \ Collision.o \ Character.o \ - NPC.o + NPC.o \ + Player.o \ + Game.o DIST = /usr/share/qt4/mkspecs/common/g++.conf \ /usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/linux.conf \ /usr/share/qt4/mkspecs/qconfig.pri \ - /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ /usr/share/qt4/mkspecs/features/qt_functions.prf \ /usr/share/qt4/mkspecs/features/qt_config.prf \ /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ @@ -141,7 +144,6 @@ Makefile: Unuk-QT.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt /usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/linux.conf \ /usr/share/qt4/mkspecs/qconfig.pri \ - /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ /usr/share/qt4/mkspecs/features/qt_functions.prf \ /usr/share/qt4/mkspecs/features/qt_config.prf \ /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ @@ -157,14 +159,13 @@ Makefile: Unuk-QT.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt /usr/share/qt4/mkspecs/features/yacc.prf \ /usr/share/qt4/mkspecs/features/lex.prf \ /usr/share/qt4/mkspecs/features/include_source_dir.prf \ - /usr/lib/i386-linux-gnu/libQtGui.prl \ - /usr/lib/i386-linux-gnu/libQtCore.prl + /usr/lib/libQtGui.prl \ + /usr/lib/libQtCore.prl $(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro /usr/share/qt4/mkspecs/common/g++.conf: /usr/share/qt4/mkspecs/common/unix.conf: /usr/share/qt4/mkspecs/common/linux.conf: /usr/share/qt4/mkspecs/qconfig.pri: -/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri: /usr/share/qt4/mkspecs/features/qt_functions.prf: /usr/share/qt4/mkspecs/features/qt_config.prf: /usr/share/qt4/mkspecs/features/exclusive_builds.prf: @@ -180,14 +181,14 @@ Makefile: Unuk-QT.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt /usr/share/qt4/mkspecs/features/yacc.prf: /usr/share/qt4/mkspecs/features/lex.prf: /usr/share/qt4/mkspecs/features/include_source_dir.prf: -/usr/lib/i386-linux-gnu/libQtGui.prl: -/usr/lib/i386-linux-gnu/libQtCore.prl: +/usr/lib/libQtGui.prl: +/usr/lib/libQtCore.prl: qmake: FORCE @$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro dist: @$(CHK_DIR_EXISTS) .tmp/Unuk-QT1.0.0 || $(MKDIR) .tmp/Unuk-QT1.0.0 - $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/Menu.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/Menu.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0 clean:compiler_clean @@ -388,6 +389,44 @@ NPC.o: ../src/libUnuk/NPC.cpp ../src/libUnuk/NPC.h \ ../src/libUnuk/Timer.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o NPC.o ../src/libUnuk/NPC.cpp +Player.o: ../src/Unuk/Player.cpp ../src/Unuk/Player.h \ + ../src/Unuk/Globals.h \ + ../src/Unuk/Constants.h \ + ../src/libUnuk/Character.h \ + ../src/libUnuk/ApplySurface.h \ + ../src/libUnuk/Debug.h \ + ../src/libUnuk/ImageLoader.h \ + ../src/libUnuk/Collision.h \ + ../src/libUnuk/Map.h \ + ../src/libUnuk/TextureManager.h \ + ../src/libUnuk/MapTile.h \ + ../src/libUnuk/Timer.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o Player.o ../src/Unuk/Player.cpp + +Game.o: ../src/Unuk/Game.cpp ../src/Unuk/Game.h \ + ../src/Unuk/Constants.h \ + ../src/Unuk/Globals.h \ + ../src/Unuk/Player.h \ + ../src/libUnuk/Character.h \ + ../src/libUnuk/ApplySurface.h \ + ../src/libUnuk/Debug.h \ + ../src/libUnuk/ImageLoader.h \ + ../src/libUnuk/Collision.h \ + ../src/libUnuk/Map.h \ + ../src/libUnuk/TextureManager.h \ + ../src/libUnuk/MapTile.h \ + ../src/libUnuk/Timer.h \ + ../src/libUnuk/IngameMenu.h \ + ../src/libUnuk/Menu.h \ + ../src/libUnuk/Button.h \ + ../src/libUnuk/Input.h \ + ../src/libUnuk/Text.h \ + ../src/libUnuk/Font.h \ + ../src/libUnuk/Rect.h \ + ../src/libUnuk/ButtonToggle.h \ + ../src/libUnuk/NPC.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o Game.o ../src/Unuk/Game.cpp + ####### Install install: FORCE diff --git a/Unuk-QT/Unuk-QT.pro b/Unuk-QT/Unuk-QT.pro index 200f88d..1dc3d26 100644 --- a/Unuk-QT/Unuk-QT.pro +++ b/Unuk-QT/Unuk-QT.pro @@ -30,7 +30,9 @@ HEADERS += ../src/libUnuk/Debug.h \ ../src/libUnuk/IngameMenu.h \ ../src/libUnuk/Collision.h \ ../src/libUnuk/Character.h \ - ../src/libUnuk/NPC.h + ../src/libUnuk/NPC.h \ + ../src/Unuk/Player.h \ + ../src/Unuk/Game.h SOURCES += ../src/libUnuk/Debug.cpp \ ../src/Unuk/main.cpp \ ../src/libUnuk/Input.cpp \ @@ -51,4 +53,6 @@ SOURCES += ../src/libUnuk/Debug.cpp \ ../src/libUnuk/IngameMenu.cpp \ ../src/libUnuk/Collision.cpp \ ../src/libUnuk/Character.cpp \ - ../src/libUnuk/NPC.cpp + ../src/libUnuk/NPC.cpp \ + ../src/Unuk/Player.cpp \ + ../src/Unuk/Game.cpp diff --git a/Unuk-QT/Unuk-QT.pro.user b/Unuk-QT/Unuk-QT.pro.user index 4ed7298..76a9ede 100644 --- a/Unuk-QT/Unuk-QT.pro.user +++ b/Unuk-QT/Unuk-QT.pro.user @@ -1,207 +1,228 @@ - ProjectExplorer.Project.ActiveTarget + RunConfiguration0-BaseEnvironmentBase + 2 + + + RunConfiguration0-CommandLineArguments + + + + RunConfiguration0-ProFile + Unuk-QT.pro + + + RunConfiguration0-RunConfiguration.name + Unuk-QT + + + RunConfiguration0-UseDyldImageSuffix + false + + + RunConfiguration0-UseTerminal + false + + + RunConfiguration0-UserEnvironmentChanges + + + + RunConfiguration0-UserSetName + false + + + RunConfiguration0-UserSetWorkingDirectory + false + + + RunConfiguration0-UserWorkingDirectory + + + + RunConfiguration0-type + Qt4ProjectManager.Qt4RunConfiguration + + + activeRunConfiguration 0 - ProjectExplorer.Project.EditorSettings + activebuildconfiguration + Debug + + + buildConfiguration-Debug - true - false - ISO-8859-1 - false - false - 2 - true - 1 - true - false - true - 0 - 2 - true - 1 - true - true - true - false + Debug + 2 + 0 + + 2 - ProjectExplorer.Project.Target.0 + buildconfiguration-Debug-buildstep0 - - - Qt4ProjectManager.Target.DesktopTarget - 0 - 0 - 0 - - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit. - - - qmake - - QtProjectManager.QMakeBuildStep - false - - false - - - Make - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - Make - - Qt4ProjectManager.MakeStep - true - clean - - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/allanis/Unuk/Unuk-QT-build-desktop - 2 - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit. - false - - - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit. - - - qmake - - QtProjectManager.QMakeBuildStep - false - - false - - - Make - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - Make - - Qt4ProjectManager.MakeStep - true - - - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - Release - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/allanis/Unuk/Unuk-QT-build-desktop - 2 - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit. - false - - 2 - - - 0 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - No deployment - No deployment - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - true - 25 - - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - Qt4 RunConfiguration - Unuk-QT - Qt4ProjectManager.Qt4RunConfiguration - 2 - - Unuk-QT.pro - false - false - - - 3768 - true - false - - 1 + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ICZ0NvJNRS,guid=3b12f0647bd9cd4da4459e180000003d + DISPLAY=:0 + HOME=/home/allanis + HUSHLOGIN=FALSE + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=allanis + LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: + MAIL=/var/mail/allanis + PATH=/usr/bin:/home/allanis/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin:/sbin + PWD=/home/allanis + QTDIR=/usr/share/qt4 + SHELL=/bin/bash + SHLVL=1 + SSH_AGENT_PID=3260 + SSH_AUTH_SOCK=/tmp/ssh-lozFEJmg3235/agent.3235 + TERM=linux + USER=allanis + WINDOWPATH=7 + XAUTHORITY=/home/allanis/.Xauthority + XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1323089410.422893-1130065724 + _=/usr/bin/startx + + + /home/allanis/Unuk/Unuk-QT/Unuk-QT.pro + -spec + linux-g++ + -r + CONFIG+=debug + + /usr/bin/qmake-qt4 + false + /home/allanis/Unuk/Unuk-QT - ProjectExplorer.Project.TargetCount - 1 + buildconfiguration-Debug-buildstep1 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ICZ0NvJNRS,guid=3b12f0647bd9cd4da4459e180000003d + DISPLAY=:0 + HOME=/home/allanis + HUSHLOGIN=FALSE + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=allanis + LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: + MAIL=/var/mail/allanis + PATH=/usr/bin:/home/allanis/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin:/sbin + PWD=/home/allanis + QTDIR=/usr/share/qt4 + SHELL=/bin/bash + SHLVL=1 + SSH_AGENT_PID=3260 + SSH_AUTH_SOCK=/tmp/ssh-lozFEJmg3235/agent.3235 + TERM=linux + USER=allanis + WINDOWPATH=7 + XAUTHORITY=/home/allanis/.Xauthority + XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1323089410.422893-1130065724 + _=/usr/bin/startx + + false + + -w + + /usr/bin/make + true + /home/allanis/Unuk/Unuk-QT + - ProjectExplorer.Project.Updater.EnvironmentId - {359fc55d-3b68-417e-92d9-996c90e029a7} + buildconfiguration-Debug-cleanstep0 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ICZ0NvJNRS,guid=3b12f0647bd9cd4da4459e180000003d + DISPLAY=:0 + HOME=/home/allanis + HUSHLOGIN=FALSE + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=allanis + LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: + MAIL=/var/mail/allanis + PATH=/usr/bin:/home/allanis/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin:/sbin + PWD=/home/allanis + QTDIR=/usr/share/qt4 + SHELL=/bin/bash + SHLVL=1 + SSH_AGENT_PID=3260 + SSH_AUTH_SOCK=/tmp/ssh-lozFEJmg3235/agent.3235 + TERM=linux + USER=allanis + WINDOWPATH=7 + XAUTHORITY=/home/allanis/.Xauthority + XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1323089410.422893-1130065724 + _=/usr/bin/startx + + true + + clean + -w + + /usr/bin/make + true + /home/allanis/Unuk/Unuk-QT + true + + clean + + - ProjectExplorer.Project.Updater.FileVersion - 9 + buildconfigurations + + Debug + + + + buildstep0 + + + + + + + buildstep1 + + + + + + buildsteps + + trolltech.qt4projectmanager.qmake + trolltech.qt4projectmanager.make + + + + cleanstep0 + + + true + + + + cleansteps + + trolltech.qt4projectmanager.make + + + + defaultFileEncoding + System + + + project + diff --git a/src/Unuk/Constants.h b/src/Unuk/Constants.h index ae2f3ba..ef15698 100644 --- a/src/Unuk/Constants.h +++ b/src/Unuk/Constants.h @@ -5,8 +5,8 @@ const int TILE_WIDTH = 64; const int TILE_HEIGHT = 64; -const int SCREEN_WIDTH = 640; -const int SCREEN_HEIGHT = 480; +const int SCREEN_WIDTH = 800; +const int SCREEN_HEIGHT = 600; const int SCREEN_BPP = 16; const SDL_Color COLOUR_BLACK = { 0, 0, 0 }; diff --git a/src/Unuk/Game.cpp b/src/Unuk/Game.cpp new file mode 100644 index 0000000..13c715f --- /dev/null +++ b/src/Unuk/Game.cpp @@ -0,0 +1,192 @@ +#include "Game.h" + +Game::Game(void) { + m_map = new Map; + m_ingameMenu = new IngameMenu; + + m_player = new Player(m_map); + m_npc = new NPC(m_map); + + m_runGameReturnValue = GAME_RETURN_TO_MMENU; +} + +Game::~Game(void) { + delete m_map; + delete m_ingameMenu; + + delete m_player; + delete m_npc; +} + +int Game::Run(const string savegameIDArg) { + m_player->SetXY(200, 200); + m_player->LoadSprites("../Data/Media/Images/Characters/template.png", 40, 45); + + m_npc->SetXY(300, 300); + m_npc->LoadSprites("../Data/Media/Images/Characters/template.png", 40,45); + + LoadSavegame(savegameIDArg); + + int fps; + int frame; + int nextGameTick = SDL_GetTicks(); + + Timer frameTimer; + frameTimer.Start(); + + Timer fpsCalc; + fpsCalc.Start(); + + Timer renderTimer; + Timer updateTimer; + + m_gameRenderTime.SetXY(10, 10); + m_gameRenderTime.SetTextBlended("Render - XX", "vsmall", COLOUR_BLACK); + + m_gameUpdateTime.SetXY(10, 30); + m_gameUpdateTime.SetTextBlended("Update - XX", "vsmall", COLOUR_BLACK); + + stringstream playerXYString; + m_playerXY.SetXY(10, 50); + m_playerXY.SetTextBlended("Player coords - XX XX", "vsmall", COLOUR_BLACK); + + m_gameRunning = true; + while(m_gameRunning) { + updateTimer.Start(); + while((int)SDL_GetTicks() > nextGameTick) { + HandleInput(); + UpdateGame(); + + nextGameTick += SKIP_TICKS; + } + updateTimer.Pause(); + + renderTimer.Start(); + Render(); + renderTimer.Pause(); + + // Calculate and display our FPS. + if(fpsCalc.GetTicks() >= 1000) { + fps = frame / (fpsCalc.GetTicks() / 1000); + + stringstream caption; + caption << "Unuk - FPS: " << fps; + + SDL_WM_SetCaption(caption.str().c_str(), NULL); + + fpsCalc.Start(); + frame = 0; + + // Check to see if we are allowed to display debug info. + if(debugEnabled) { + m_gameUpdateTime.SetTextBlended("Update - " + updateTimer.GetTicksStr(), "vsmall", COLOUR_BLACK); + m_gameRenderTime.SetTextBlended("Render - " + renderTimer.GetTicksStr(), "vsmall", COLOUR_BLACK); + + playerXYString.str(""); + playerXYString << "Player coords: x" << m_player->GetX() << ", y" << m_player->GetY(); + m_playerXY.SetTextBlended(playerXYString.str(), "vsmall", COLOUR_BLACK); + } + } + // Restrict the fps. + if(1000 / MAX_FPS > frameTimer.GetTicks()) { + // SDL_Delay does not accept a float so for higher framerate + // limits there's an innacuracy. This is as much as 3fps + // at a limit of 60fps. + SDL_Delay((1000 / MAX_FPS) - frameTimer.GetTicks()); + } + frameTimer.Start(); + frame++; + } + return m_runGameReturnValue; +} + +void Game::HandleInput(void) { + if(m_ingameMenu->GetStatus() == false) { + while(SDL_PollEvent(&event)) { + m_player->HandleInput(); + + if(event.key.type == SDL_KEYDOWN) { + if(event.key.keysym.sym == SDLK_ESCAPE) + m_ingameMenu->SetStatus(true); + if(event.key.keysym.sym == SDLK_p) + debugEnabled = !debugEnabled; + } + else if(event.type == SDL_QUIT) { + m_gameRunning = false; + m_runGameReturnValue = GAME_QUIT_GAME; + break; + } + } + } else { + switch(m_ingameMenu->HandleInput()) { + case INGAME_MENU_NOTHING: + break; + case INGAME_MENU_RESUME: + m_ingameMenu->SetStatus(false); + break; + case INGAME_MENU_SAVE_GAME: + break; + case INGAME_MENU_LOAD_GAME: + break; + case INGAME_MENU_OPTIONS: + break; + case INGAME_MENU_EXIT_TO_MMENU: + m_gameRunning = false; + break; + } + + if(event.type == SDL_QUIT) { + m_gameRunning = false; + m_ingameMenu->SetStatus(false); + m_runGameReturnValue = GAME_QUIT_GAME; + } + } +} + +void Game::UpdateGame(void) { + if(m_ingameMenu->GetStatus() == false) { + m_player->Update(); + m_npc->Update(); + } else { + // :D + } +} + +void Game::Render(void) { + if(m_ingameMenu->GetStatus() == false) { + m_map->Render(); + + m_player->Render(); + m_npc->Render(); + + if(debugEnabled) { + m_gameRenderTime.RenderLiteral(); + m_gameUpdateTime.RenderLiteral(); + m_playerXY.RenderLiteral(); + } + } else { + m_ingameMenu->Render(); + } + SDL_Flip(screen); +} + +void Game::LoadSavegame(const string savegameIDArg) { + m_saveGameID = savegameIDArg; + + string saveFilename = "../Save/" + m_saveGameID; + + ifstream saveFile(saveFilename.c_str()); + assert(saveFile.is_open()); + + // Read stuff. + m_map->Load("TestLevel"); +} + +void Game::SaveSavegame(void) { + string saveFilename = "../Save/" + m_saveGameID; + + ofstream saveFile(saveFilename.c_str()); + assert(saveFile.is_open()); + + // Write stuff. +} diff --git a/src/Unuk/Game.h b/src/Unuk/Game.h new file mode 100644 index 0000000..3c1ff86 --- /dev/null +++ b/src/Unuk/Game.h @@ -0,0 +1,61 @@ +#ifndef _GAME_H_ +#define _GAME_H_ +#include +#include +#include +#include +#include +#include + +#include "Constants.h" +#include "Globals.h" +#include "Player.h" +#include "../libUnuk/IngameMenu.h" +#include "../libUnuk/Map.h" +#include "../libUnuk/Timer.h" +#include "../libUnuk/NPC.h" +#include "../libUnuk/Debug.h" +#include "../libUnuk/Text.h" +using namespace std; + +const int GAME_RETURN_TO_MMENU = 0; +const int GAME_QUIT_GAME = 1; + +class Game { +public: + Game(void); + ~Game(void); + + int Run(const string savegameIDArg); + +private: + void HandleInput(void); + void UpdateGame(void); + void Render(void); + + void LoadSavegame(const string savegameIDArg); + void SaveSavegame(void); + + bool m_gameRunning; + + int m_runGameReturnValue; + + string m_saveGameID; + string m_mapID; + + Text m_gameUpdateTime; + Text m_gameRenderTime; + Text m_playerXY; + + static const int MAX_FPS = 6000; + static const int GAME_UPDATES_PER_SECOND = 60; + static const int SKIP_TICKS = 1000 / GAME_UPDATES_PER_SECOND; + + IngameMenu* m_ingameMenu; + Map* m_map; + + Player* m_player; + NPC* m_npc; +}; + +#endif diff --git a/src/Unuk/Globals.cpp b/src/Unuk/Globals.cpp index 3cd14d4..2a35a41 100644 --- a/src/Unuk/Globals.cpp +++ b/src/Unuk/Globals.cpp @@ -10,4 +10,4 @@ SDL_Event event; int levelWidth; int levelHeight; -//bool debugEnabled = false; +bool debugEnabled = false; diff --git a/src/Unuk/Globals.h b/src/Unuk/Globals.h index 7949c9b..a9e0790 100644 --- a/src/Unuk/Globals.h +++ b/src/Unuk/Globals.h @@ -13,7 +13,7 @@ extern SDL_Event event; extern int levelWidth; extern int levelHeight; -//extern bool debugEnabled; +extern bool debugEnabled; #endif diff --git a/src/Unuk/Player.cpp b/src/Unuk/Player.cpp new file mode 100644 index 0000000..950db58 --- /dev/null +++ b/src/Unuk/Player.cpp @@ -0,0 +1,84 @@ +#include "Player.h" + +// Pixels * 60 / sec. +const float Player::PLAYER_SPEED = Character::CHARACTER_SPEED + 0.5; + +Player::Player(Map *mapArg) : Character(mapArg) { + +} + +Player::~Player(void) { + +} + +void Player::HandleInput(void) { + if(event.key.type == SDL_KEYDOWN) { + switch(event.key.keysym.sym) { + case SDLK_w: + yVel -= PLAYER_SPEED; + xVel = 0; + m_directionFacing = FACING_UP; + break; + case SDLK_s: + yVel += PLAYER_SPEED; + xVel = 0; + m_directionFacing = FACING_DOWN; + break; + case SDLK_a: + xVel -= PLAYER_SPEED; + yVel = 0; + m_directionFacing = FACING_LEFT; + break; + case SDLK_d: + xVel += PLAYER_SPEED; + yVel = 0; + m_directionFacing = FACING_RIGHT; + break; + default: + break; + } + } + else if(event.key.type == SDL_KEYUP) { + switch(event.key.keysym.sym) { + case SDLK_w: yVel = 0; break; + case SDLK_s: yVel = 0; break; + case SDLK_a: xVel = 0; break; + case SDLK_d: xVel = 0; break; + default: break; + } + } + else if(event.type == SDL_MOUSEBUTTONDOWN) { + if(event.button.button == SDL_BUTTON_LEFT) { + m_attacking = true; + m_attackTimer.Start(); + } + } +} + +void Player::Update(void) { + Move(); + SetCamera(); +} + +void Player::SetCamera(void) { + camera.x = (x + w / 2) - SCREEN_WIDTH / 2; + camera.y = (y + h / 2) - SCREEN_HEIGHT / 2; + + if(camera.x < 0) + camera.x = 0; + if(camera.y < 0) + camera.y = 0; + + if(camera.x > levelWidth - camera.w) + camera.x = levelWidth - camera.w; + if(camera.y > levelHeight - camera.h) + camera.y = levelHeight = camera.h; +} + +void Player::Move() { + Character::Move(); + if(map->GetMapTransitionName(tileX, tileY) != "n") { + SetXY(map->GetMapTransitionX(tileX, tileY), map->GetMapTransitionY(tileX, tileY)); + map->Load(map->GetMapTransitionName(tileX, tileY)); + } +} diff --git a/src/Unuk/Player.h b/src/Unuk/Player.h new file mode 100644 index 0000000..01252fe --- /dev/null +++ b/src/Unuk/Player.h @@ -0,0 +1,26 @@ +#ifndef _PLAYER_H_ +#define _PLAYER_H_ +#include + +#include "Globals.h" +#include "Constants.h" +#include "../libUnuk/Character.h" + +class Player : public Character { +public: + Player(Map* mapArg); + ~Player(void); + + void HandleInput(void); + void Update(void); + +protected: + void Move(void); + void CheckTileCollisions(void); + +private: + void SetCamera(void); + static const float PLAYER_SPEED; +}; + +#endif diff --git a/src/Unuk/main.cpp b/src/Unuk/main.cpp index 2bce4a6..e58520c 100644 --- a/src/Unuk/main.cpp +++ b/src/Unuk/main.cpp @@ -1,215 +1,116 @@ -#ifdef __unix__ -#include -#endif - -#include -#include -#include -#include #include +#include +#include +#include +#include -#include "../libUnuk/Input.h" +#include "../libUnuk/MainMenu.h" +#include "../libUnuk/NPC.h" #include "../libUnuk/Debug.h" #include "Constants.h" #include "Globals.h" - -// Screen width, height, and bit depth. -//const int SCREEN_WIDTH = 640; -//const int SCREEN_HEIGHT = 480; -//const int SCREEN_BPP = 16; - -// Define our SDL surface. -SDL_Surface *surface; - -void Quit(int returnCode) { - Debug::logger->message("-----Cleaning Up------"); - // Clean up the window. - SDL_Quit(); - Debug::logger->message("Window destroyed!"); - Debug::closeLog(); - // And exit appropriately. - exit(returnCode); -} - -// Reset our viewport after a window resize. -int ResizeWindow(int width, int height) { - // Height and width ration. - GLfloat ratio; - - // Prevent divide by zero. - if(height == 0) - height = 1; - - ratio = (GLfloat)width / (GLfloat)height; - - // Setup our viewport. - glViewport(0, 0, (GLsizei)width, (GLsizei)height); - - // Change to the projection matrix and set our viewing volume. - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - // Set our perspective. - gluPerspective(45.0f, ratio, 0.1f, 100.0f); - - // Change to the MODELVIEW. - glMatrixMode(GL_MODELVIEW); - - // Reset The View. - glLoadIdentity(); - - return 1; -} - -void ProcessEvents(SDL_keysym *keysym) { - switch(keysym->sym) { - case SDLK_ESCAPE: - // Quit if we detect 'esc' key. - Quit(0); - break; - case SDLK_F1: - // Fullscreen. - SDL_WM_ToggleFullScreen(surface); - break; - default: - break; - } - return; -} - -int InitGL(void) { - - // Enable smooth shading. - glShadeModel(GL_SMOOTH); - - // Set the background black. - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - - // Depth buffer setup. - glClearDepth(1.0f); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - - // Nice Perspective Calculations. - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - return 1; -} - -unsigned int GetTickCount() { - struct timeval t; - gettimeofday(&t, NULL); - - unsigned long secs = t.tv_sec * 1000; - secs += (t.tv_usec / 1000); - return secs; -} - -float GetElapsedSeconds(void) { - unsigned int lastTime = 0; - unsigned int currentTime = GetTickCount(); - unsigned int diff = currentTime - lastTime; - lastTime = currentTime; - return float(diff) / 1000.0f; -} +#include "Game.h" int main() { - // Initialize our Debug log. - Debug::openLog(true); - Debug::logger->message("-----Debug Initialized-----"); - - int videoFlags; - bool done = false; - SDL_Event event; - const SDL_VideoInfo *videoInfo; - - // Initialize SDL. - if(SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf( stderr, "Video initialization failed: %s\n", SDL_GetError()); - Quit(1); + if(SDL_Init(SDL_INIT_VIDEO == -1)) { + system("zenity --error --text=\"Could not load SDL\""); + Debug::logger->message("Error: Could not load SDL"); + return 1; + } + if(TTF_Init() == -1) { + system("zenity --error --text=\"Could not load SDL_TTF\""); + Debug::logger->message("Error: Could not load SDL_TTF"); + return 1; } - // Fetch the video info. - videoInfo = SDL_GetVideoInfo(); + screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE); + SDL_WM_SetCaption("fps - 00", NULL); - // Set the window caption. - SDL_WM_SetCaption("Unuk", NULL); + srand(time(NULL)); - if(!videoInfo) { - fprintf( stderr, "Video query failed: %s\n", SDL_GetError()); - Quit(1); - } + camera.x = 0; + camera.y = 0; + camera.w = SCREEN_WIDTH; + camera.h = SCREEN_HEIGHT; - // Pass some flags to SDL_SetVideoMode. - videoFlags = SDL_OPENGL; - videoFlags |= SDL_GL_DOUBLEBUFFER; - videoFlags |= SDL_HWPALETTE; - videoFlags |= SDL_RESIZABLE; + errorTexture = LoadImage("../Data/Media/error.png"); - // Can the surface be stored in memory? - if(videoInfo->hw_available) - videoFlags |= SDL_HWSURFACE; - else - videoFlags |= SDL_SWSURFACE; + Text::LoadFonts(); - // Can we perform blitting on the GPU? - if(videoInfo->blit_hw) - videoFlags |= SDL_HWACCEL; + Game* game = NULL; + MainMenu* menu = new MainMenu; - // Set up the OpenGL double buffer. - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + int fps; + int frame; + const int MAX_FPS = 20; - // Get an SDL surface. - surface = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, videoFlags); + Timer frameTimer; + frameTimer.Start(); - // Is there an SDL surface? - if(!surface) { - fprintf( stderr, "Video mode set failed: %s\n", SDL_GetError()); - Quit(1); - } + Timer fpsCalc; + fpsCalc.Start(); - // Initialize OpenGL. - InitGL(); + int gameReturnVal; + bool menuRunning = true; + while(menuRunning) { + menu->Render(); + SDL_Flip(screen); - Debug::logger->message("\n\n-----Engine Initialization Complete-----"); - Debug::logger->message("\n\n-----Logic-----"); + switch(menu->HandleInput()) { + case MAIN_MENU_NOTHING: + break; + case MAIN_MENU_NEW_GAME: + delete menu; + game = new Game; - while(!done) { - // Time to poll events. - while(SDL_PollEvent(&event)) { - switch(event.type) { - case SDL_VIDEORESIZE: - // Handle resize events. - surface = SDL_SetVideoMode(event.resize.w, event.resize.h, 16, videoFlags); - if(!surface) { - Debug::logger->message("Could not get a surface after resize\n"); - Quit(1); - } - ResizeWindow(event.resize.w, event.resize.h); - break; - case SDL_KEYDOWN: - // handle keydown events. - ProcessEvents(&event.key.keysym); - break; - case SDL_QUIT: - // Handle quit events. - done = true; - break; - default: - break; - } - //CreateInput(); - //UpdateInput(); + gameReturnVal = game->Run("1"); + + if(gameReturnVal == GAME_RETURN_TO_MMENU) + menu = new MainMenu; + else if(gameReturnVal == GAME_QUIT_GAME) + menuRunning = false; + + delete game; + break; + case MAIN_MENU_LOAD_GAME: + break; + case MAIN_MENU_OPTIONS: + break; + case MAIN_MENU_EXIT: + menuRunning = false; + delete menu; + break; } - // Render the scene. - float elapsedTime = GetElapsedSeconds(); + // Calculate and display the FPS. + if(fpsCalc.GetTicks() >= 1000) { + fps = frame / (fpsCalc.GetTicks() / 1000); - SDL_GL_SwapBuffers(); + stringstream caption; + caption << "Unuk: fps - " << fps; + + SDL_WM_SetCaption(caption.str().c_str(), NULL); + + fpsCalc.Start(); + frame = 0; + } + // Restrict the FPS. + if(1000 / MAX_FPS > frameTimer.GetTicks()) { + // SDL_Delay does not accept a float, so for higher + // framerate limits there is an innacuracy. This is + // as much as 3FPS at a limit of 60FPS. + SDL_Delay((1000 / MAX_FPS) - frameTimer.GetTicks()); + } + frameTimer.Start(); + frame++; } - //game.Shutdown(); - // Clean ourselves up and exit. - Quit(0); + // Clean up after ourselves. + Text::FreeFonts(); - // We should never get here. - return(0); + SDL_FreeSurface(screen); + SDL_FreeSurface(errorTexture); + + SDL_Quit(); + TTF_Quit(); + + return 0; } diff --git a/src/libUnuk/Button.cpp b/src/libUnuk/Button.cpp index 02a6138..73ed374 100644 --- a/src/libUnuk/Button.cpp +++ b/src/libUnuk/Button.cpp @@ -26,7 +26,7 @@ void Button::SetXY(int xArg, int yArg) { y = yArg; button.SetXY(x, y); - text.SetXY(x + 10, y + 10); + m_text.SetXY(x + 10, y + 10); } void Button::SetTextRGB(Uint8 r, Uint8 g, Uint8 b) { @@ -34,14 +34,14 @@ void Button::SetTextRGB(Uint8 r, Uint8 g, Uint8 b) { m_textColour.g = g; m_textColour.b = b; - text.SetTextBlended(text.GetText(), "small", m_textColour); + m_text.SetTextBlended(m_text.GetText(), "small", m_textColour); } void Button::SetText(string textArg) { - text.SetTextBlended(textArg, "small", m_textColour); + m_text.SetTextBlended(textArg, "small", m_textColour); - w = text.GetWidth(); - h = text.GetHeight(); + w = m_text.GetWidth(); + h = m_text.GetHeight(); button.SetWidthHeight(w + 20, h + 15); } @@ -58,5 +58,5 @@ bool Button::CheckMouseOver(void) { void Button::Render(void) { button.DrawLiteral(); - text.RenderLiteral(); + m_text.RenderLiteral(); } diff --git a/src/libUnuk/Button.h b/src/libUnuk/Button.h index 850e095..d1a8e07 100644 --- a/src/libUnuk/Button.h +++ b/src/libUnuk/Button.h @@ -40,7 +40,7 @@ private: int h; Rect button; - Text text; + Text m_text; }; #endif diff --git a/src/libUnuk/MainMenu.cpp b/src/libUnuk/MainMenu.cpp index 44d8ad2..fe7940b 100644 --- a/src/libUnuk/MainMenu.cpp +++ b/src/libUnuk/MainMenu.cpp @@ -25,7 +25,7 @@ MainMenu::MainMenu(void) { btnExit.SetText("Exit"); btnExit.SetXY(100, 250); m_background = new Map; - m_background->Load("mainmenu"); + m_background->Load("MainMenu"); camera.x = 0; camera.y = 0; } diff --git a/src/libUnuk/MainMenu.h b/src/libUnuk/MainMenu.h index 41d3e55..caf2c81 100644 --- a/src/libUnuk/MainMenu.h +++ b/src/libUnuk/MainMenu.h @@ -21,7 +21,7 @@ public: void Render(void); private: - Map *m_background; + Map* m_background; Button btnNewGame; Button btnLoadGame; diff --git a/src/libUnuk/NPC.cpp b/src/libUnuk/NPC.cpp index 91ca7f9..23f6ee0 100644 --- a/src/libUnuk/NPC.cpp +++ b/src/libUnuk/NPC.cpp @@ -12,6 +12,10 @@ NPC::~NPC(void) { } +void NPC::Update(void) { + Move(); +} + void NPC::Move(void) { if(m_moving && m_moveTimer.GetTicks() > m_moveDurationMax) { xVel = 0.0f; diff --git a/src/libUnuk/NPC.h b/src/libUnuk/NPC.h index aa44738..a845830 100644 --- a/src/libUnuk/NPC.h +++ b/src/libUnuk/NPC.h @@ -25,4 +25,4 @@ private: Timer m_moveTimer; }; -#endif \ No newline at end of file +#endif diff --git a/src/libUnuk/Text.cpp b/src/libUnuk/Text.cpp index a35eec3..54847f5 100644 --- a/src/libUnuk/Text.cpp +++ b/src/libUnuk/Text.cpp @@ -24,7 +24,7 @@ void Text::LoadFonts(void) { verySmallFont = Font("../Data/Media/Fonts/Enigma_2.ttf", 16); smallFont = Font("../Data/Media/Fonts/Enigma_2.ttf", 23); mediumFont = Font("../Data/Media/Fonts/Enigma_2.ttf", 27); - largeFont = Font("../Data/Media/Fonts/Enigma_2.ttf", 32); + largeFont = Font("../Data/Media/Fonts/Enigma_2.ttf", 32); } void Text::FreeFonts(void) {