Stupid bullet. Also fixed WIZARD_IDLE animations missing.

This commit is contained in:
sigonasr2 2023-09-04 18:24:21 -05:00
parent 34f44f0f6f
commit 934bf5be79
9 changed files with 89 additions and 33 deletions

View File

@ -138,7 +138,7 @@ bool Crawler::OnUserCreate(){
}
bool Crawler::OnUserUpdate(float fElapsedTime){
fElapsedTime=std::clamp(fElapsedTime,0.f,1/60.f);
fElapsedTime=std::clamp(fElapsedTime,0.f,1/60.f); //HACK fix. We can't have a negative time. Although using a more precise system clock should make this never occur. Also make sure if the game is too slow we advance by only 1/60th of a second.
HandleUserInput(fElapsedTime);
UpdateEffects(fElapsedTime);
player->Update(fElapsedTime);
@ -436,13 +436,8 @@ void Crawler::UpdateBullets(float fElapsedTime){
moveStep=(b->vel*fElapsedTime).norm();
}
while(totalDistance>0){
if(totalDistance>=1){
b->pos+=moveStep;
totalDistance--;
} else {
b->pos+=moveStep*totalDistance;
totalDistance=0;
}
totalDistance=std::max(0.f,totalDistance-1);
b->pos+=moveStep;
if(b->friendly){
for(Monster&m:MONSTER_LIST){
if(geom2d::overlaps(geom2d::circle(m.GetPos(),12*m.GetSizeMult()),geom2d::circle(b->pos,b->radius))){

View File

@ -2,7 +2,7 @@
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_PATCH 0
#define VERSION_BUILD 1025
#define VERSION_BUILD 1033
#define stringify(a) stringify_(a)
#define stringify_(a) #a

View File

@ -24,4 +24,5 @@ Player
PLAYER_ANIMATION[8] = WIZARD_IDLE_ATTACK
PLAYER_ANIMATION[9] = WIZARD_ATTACK
PLAYER_ANIMATION[10] = WIZARD_CAST
PLAYER_ANIMATION[11] = WIZARD_IDLE
}

View File

@ -35,7 +35,7 @@ var Module = {
})(),
};
</script>
<script async type="text/javascript" src="_REPLACEME_"></script>
<script async type="text/javascript" src="pge.js"></script>
<script type="text/javascript">
Module.canvas.addEventListener("resize", (e) => {

View File

@ -1021,6 +1021,8 @@ namespace olc
uint32_t GetFPS() const;
// Gets last update of elapsed time
float GetElapsedTime() const;
// Gets Actual Window pos
const olc::vi2d& GetWindowPos() const;
// Gets Actual Window size
const olc::vi2d& GetWindowSize() const;
// Gets pixel scale
@ -1222,6 +1224,7 @@ namespace olc
olc::vi2d vMousePosCache = { 0, 0 };
olc::vi2d vMouseWindowPos = { 0, 0 };
int32_t nMouseWheelDeltaCache = 0;
olc::vi2d vWindowPos = { 0, 0 };
olc::vi2d vWindowSize = { 0, 0 };
olc::vi2d vViewPos = { 0, 0 };
olc::vi2d vViewSize = { 0,0 };
@ -1292,6 +1295,7 @@ namespace olc
// "Break In" Functions
void olc_UpdateMouse(int32_t x, int32_t y);
void olc_UpdateMouseWheel(int32_t delta);
void olc_UpdateWindowPos(int32_t x, int32_t y);
void olc_UpdateWindowSize(int32_t x, int32_t y);
void olc_UpdateViewport();
void olc_ConstructFontSheet();
@ -2001,6 +2005,7 @@ namespace olc
// Construct the window
if (platform->CreateWindowPane({ 30,30 }, vWindowSize, bFullScreen) != olc::OK) return olc::FAIL;
olc_UpdateWindowPos(30,30);
olc_UpdateWindowSize(vWindowSize.x, vWindowSize.y);
// Start the thread
@ -2126,6 +2131,9 @@ namespace olc
float PixelGameEngine::GetElapsedTime() const
{ return fLastElapsed; }
const olc::vi2d& PixelGameEngine::GetWindowPos() const
{ return vWindowPos; }
const olc::vi2d& PixelGameEngine::GetWindowSize() const
{ return vWindowSize; }
@ -3761,6 +3769,11 @@ namespace olc
olc_UpdateViewport();
}
void PixelGameEngine::olc_UpdateWindowPos(int32_t x, int32_t y)
{
vWindowPos = { x, y };
}
void PixelGameEngine::olc_UpdateMouseWheel(int32_t delta)
{ nMouseWheelDeltaCache += delta; }
@ -5589,6 +5602,7 @@ namespace olc
ptrPGE->olc_UpdateMouse(ix, iy);
return 0;
}
case WM_MOVE: ptrPGE->olc_UpdateWindowPos(lParam & 0xFFFF, (lParam >> 16) & 0xFFFF); return 0;
case WM_SIZE: ptrPGE->olc_UpdateWindowSize(lParam & 0xFFFF, (lParam >> 16) & 0xFFFF); return 0;
case WM_MOUSEWHEEL: ptrPGE->olc_UpdateMouseWheel(GET_WHEEL_DELTA_WPARAM(wParam)); return 0;
case WM_MOUSELEAVE: ptrPGE->olc_UpdateMouseFocus(false); return 0;
@ -5834,11 +5848,13 @@ namespace olc
{
XWindowAttributes gwa;
XGetWindowAttributes(olc_Display, olc_Window, &gwa);
ptrPGE->olc_UpdateWindowPos(gwa.x, gwa.y);
ptrPGE->olc_UpdateWindowSize(gwa.width, gwa.height);
}
else if (xev.type == ConfigureNotify)
{
XConfigureEvent xce = xev.xconfigure;
ptrPGE->olc_UpdateWindowPos(xce.x, xce.y);
ptrPGE->olc_UpdateWindowSize(xce.width, xce.height);
}
else if (xev.type == KeyPress)
@ -6316,19 +6332,19 @@ namespace olc
mapKeys[DOM_PK_QUOTE] = Key::OEM_7; mapKeys[DOM_PK_BACKSLASH] = Key::OEM_8;
// Keyboard Callbacks
emscripten_set_keydown_callback("#canvas", 0, 1, keyboard_callback);
emscripten_set_keyup_callback("#canvas", 0, 1, keyboard_callback);
emscripten_set_keydown_callback("body", 0, 1, keyboard_callback);
emscripten_set_keyup_callback("body", 0, 1, keyboard_callback);
// Mouse Callbacks
emscripten_set_wheel_callback("#canvas", 0, 1, wheel_callback);
emscripten_set_mousedown_callback("#canvas", 0, 1, mouse_callback);
emscripten_set_mouseup_callback("#canvas", 0, 1, mouse_callback);
emscripten_set_mousemove_callback("#canvas", 0, 1, mouse_callback);
emscripten_set_mousedown_callback("body", 0, 1, mouse_callback);
emscripten_set_mouseup_callback("body", 0, 1, mouse_callback);
emscripten_set_mousemove_callback("body", 0, 1, mouse_callback);
// Touch Callbacks
emscripten_set_touchstart_callback("#canvas", 0, 1, touch_callback);
emscripten_set_touchmove_callback("#canvas", 0, 1, touch_callback);
emscripten_set_touchend_callback("#canvas", 0, 1, touch_callback);
emscripten_set_touchstart_callback("body", 0, 1, touch_callback);
emscripten_set_touchmove_callback("body", 0, 1, touch_callback);
emscripten_set_touchend_callback("body", 0, 1, touch_callback);
// Canvas Focus Callbacks
emscripten_set_blur_callback("#canvas", 0, 1, focus_callback);
@ -6569,7 +6585,22 @@ namespace olc
{ return olc::OK; }
virtual olc::rcode HandleSystemEvent() override
{ return olc::OK; }
{
ptrPGE->olc_UpdateWindowPos(EM_ASM_INT({return Module.canvas.getBoundingClientRect().left}),EM_ASM_INT({return Module.canvas.getBoundingClientRect().top}));
int mouseDown=EM_ASM_INT({return Module.olc_MOUSEDOWN});
int mouseUp=EM_ASM_INT({return Module.olc_MOUSEUP});
if(mouseDown!=-1){
if(mouseDown==2){mouseDown=1;}//Javascript uses button 2 as right click while PGE uses button 1. This translates it back.
ptrPGE->olc_UpdateMouseState(mouseDown,true);
EM_ASM({Module.olc_MOUSEDOWN=-1});
}
if(mouseUp!=-1){
if(mouseUp==2){mouseUp=1;}//Javascript uses button 2 as right click while PGE uses button 1. This translates it back.
ptrPGE->olc_UpdateMouseState(mouseUp,false);
EM_ASM({Module.olc_MOUSEUP=-1});
}
return olc::OK;
}
static void MainLoop()
{

View File

@ -8964,7 +8964,7 @@ MonsterStrategy
{
Name = Run Towards
# How long to wait before attempting to path again.
WaitTime = 2
WaitTime = 3
# How far the monster will travel before reassessing for a new path.
MaxDistance = 999999
}
@ -8972,12 +8972,14 @@ MonsterStrategy
{
Name = Shoot Afar
# How far away the monster attempts to distance itself from the player
Range = 800
Range = 700
# If the player is farther than this distance, close in on them.
CloseInRange = 850
# How often the enemy shoots.
ShootingSpeed = 1
BulletSpeed = 100
BulletSize = 100
BulletColor = 0, 0, 255, 255
BulletSpeed = 300
BulletSize = 20
BulletColor = 37, 131, 112, 255
}
2
{
@ -8985,10 +8987,10 @@ MonsterStrategy
# How far away the monster starts shooting from
Range = 800
# How often the enemy shoots.
ShootingSpeed = 1
BulletSpeed = 100
BulletSize = 100
BulletColor = 0, 0, 255, 255
ShootingSpeed = 0.6
BulletSpeed = 450
BulletSize = 30
BulletColor = 0, 255, 0, 255
}
}Monsters
{
@ -9014,8 +9016,9 @@ MonsterStrategy
ShootAnimation = 10, 0.1, OneShot
DeathAnimation = 10, 0.1, OneShot
#Additional custom animations go down below. Start with ANIMATION[0]
#ANIMATION[0] = MY_NEW_ANIMATION
#Additional custom animations go down below. Start with ANIMATION[0]. Order is:
# Frame Count, Frame Speed (s), Frame Cycling (Repeat,OneShot,PingPong,Reverse)
#ANIMATION[0] = 6, 0.1, Repeat
}
1
{
@ -9036,7 +9039,7 @@ MonsterStrategy
# Frame Count, Frame Speed (s), Frame Cycling (Repeat,OneShot,PingPong,Reverse)
IdleAnimation = 10, 0.1, Repeat
JumpAnimation = 10, 0.06, Repeat
ShootAnimation = 10, 0.1, OneShot
ShootAnimation = 10, 0.1, Repeat
DeathAnimation = 10, 0.1, OneShot
#Additional custom animations go down below. Start with ANIMATION[0]
@ -9130,6 +9133,19 @@ MonsterStrategy
# How much speed the player loses while no momentum is being added.
Friction = 400
# Each attack will have _N,_E,_S,_W appended to them once read in-game.
PLAYER_ANIMATION[0] = WARRIOR_WALK
PLAYER_ANIMATION[1] = WARRIOR_IDLE
PLAYER_ANIMATION[2] = WARRIOR_SWINGSWORD
PLAYER_ANIMATION[3] = WARRIOR_SWINGSONICSWORD
PLAYER_ANIMATION[4] = RANGER_WALK
PLAYER_ANIMATION[5] = RANGER_IDLE
PLAYER_ANIMATION[6] = RANGER_SHOOT
PLAYER_ANIMATION[7] = WIZARD_WALK
PLAYER_ANIMATION[8] = WIZARD_IDLE_ATTACK
PLAYER_ANIMATION[9] = WIZARD_ATTACK
PLAYER_ANIMATION[10] = WIZARD_CAST
}Ranger
{
ClassName = Ranger
@ -9377,7 +9393,7 @@ MonsterStrategy
Right Click Ability
{
Name = Block
Cooldown = 1
Cooldown = 15
Mana Cost = 0
#RGB Values. Color 1 is the left side of the bar, Color 2 is the right side.
@ -16645,6 +16661,19 @@ D
éôjyƒhëô<C3AB>® }[¯Ó«©ê§tþwW¬€Eh… lݯTEDd$ ICüJUFÒ°ƒ(·¾ Jm}¿R¥þ }I$”–¾=ÇvtÓ~W´;¶Š·…ûBÅçû üv?öÖö…Î2æÖâ±]h}ú.0Æj·=ØÏìL2™“D5†é7íwNw¦PºÈú<C388>ýë }ÍaŠÃø&€ñ÷˾^ÿ<>üc<õ¿&
ƒÖX™[Cn;‡xö{\ Ê^Uÿ#n;‡¹ŸmLk·;Úm\´cQZ*<2A>·Áz]¾Ór·±ý8¡Ìw³ÓÒѯM -ýî`ˆÛÎ!.O¯0¤þmç0·¾)Yóòèô`8Wâ¦opì†øðþ<C3B0>ta*-”Ùv#ôõ]Lß´A}§úòÒ–?5ÇKé¿tœÐÐ7âKï$qÅPºÀ½Ô}¡©O}GÛ[%}<7D>1"„B!„B!„B!»Åß«öciôV}ÄIEND®B`‰PNG

IHDRð`#3ÿÑ„iCCPICC profile(}=HÃ@Å_SK´8ØA¤C†êdATÄQªX ¥­ÐªƒÉ¥_ÐÄ<C390>¤¸8
®?«.κ:¸
‚àˆ«‹“¢‹”ø¿¤Ð"ƃã~¼»÷¸{­:S;q@Õ,#JŠ…âŠ|ECBb¦žÎ-äá9¾îáãë]gyŸûsD”ÉŸH<ËtÃ"^'žÞ´tÎûÄQV•âsâ1ƒ.HüÈuÙå7Ξ5òÙ9â(±Xéa¹‡YÕP‰§ˆãŠªQ¾PpYá¼ÅY­7Xçžü…ᶜã:ÍRXDˆ<>Ñ@ uXHЪb"KûIÿ°ãÏ<C3A3>K&W ŒóØ€
ÉñƒÿÁïnÍòä„N<02>Ûþ‚»@»iÛßǶÝ>üÏÀ•Öõo´€™OÒ]-~ l×]MÞ.w€¡']2$GòÓÊeàýŒ¾© Þý«no<6E>}œ>yêjé88F+”½æñîPooÿžéô÷ˆör°YÚ bKGDùC» pHYs  šœtIMEç  $ªÃtEXtCommentCreated with GIMPW<50>•IDATxÚí<C39A>½nIEmåGÀ•HŠôLE„àžHÙîLè@ÁF
 7rDÒE; ,_À¥Ä ̾A<C2BE>­<E280A1>wºÚÕͦøÓ·H6y>@@‰§ŠU÷ÞªjH§B!„B!„B!„B&(-ð»óýëÖO·Qr0žEÖ/úüî¤þþ"âaÄ/¼yÕV×ú¦ eí­Ñ/úüî¢þþ2â¿þç/ûg%íλÖO%õ·l~©ÿãÍ@Â(CF<>tz5±~gõAý­ž_êÏjÀˆù•ªˆˆŒ¤!#iˆ_©ÊHv#©Ÿ£?Fz<46>vRߌ~æ×î§W“N¯æ¤ÿ¬¿7«•²WÇSÿ+>ß_à·ûO€ÇþµÚæߥ~({uùÇ׫þG”½úÎëñ<07>MV?pyz…ËÓ+'ýßdý¹b šN:¿*ýÇþu<—§Wª´ úEŸ_»¸íšþ üæUa4ùzw0ÄC_rwܵ~w0ÄÛÊàmå5àÛóºƒ!än£èúEŸ_êÏ~Â%ÐéÕ/ñÿ<>Wgú™ÚSÚØEý¢Ï/õçlXr<16>uêÏ[&K;ª_ôù¥>!„B!„B!„B!„B!„BÈÔAŽ/ÿVLe<4C>C “`aÄ_Öˆˆ@D0†vF#ë<C3AB><E280B9>I2ši{£é‰ekÛ¶4aÈMû<4D>Šç,{—Œ¾Ãy +\<5C>]WhÚ2Ç
™Ç³
aàÀk%~Pöêx[y<>ö;•o° @ÍR'1.^ e¯Ž²WÇåé:½ÚÔÿEÎ1¯q{Š»&ð2ÛD—ÛPíí§_©âÀkÅAúáý£ wÙÉûùþŸï/I|âëOû× ÛMÏ°¯…ó³‡ Ï-% œ‰#@Ù«£;jvv‡¸·È$R¾µj“lК\£iLÕL=ö¯ÕLÐŒ=Ÿ\ú>¹œæDAP*Óü¬c{ +|Ïñ¹ž¡ìÏN¯4>ÿŒ_.~ÂI¯†÷g¿ß[Ú2&Kÿmå5:ùõ Ö]ur¹pxt©oæia×Ì<C397>YåÇGŒÞ^y?«H]…øqéˆÿãÅèôæëÿþ<p~ö€§þX¼ìÕQõ?â±m7¢²µ(õ!æÏçŸ3Ï àÚôlZFßòLÊ¥mνéñÑø As¢@ŒçäSî.&vÆ+|®øiEèÛó]b µ œ§yú?ÓVöÀká©ŸL0m[SW+ä8@|{¾K$± ¦œZ fíí Fr¥ÛxA¿”WÛ$q:y5>ƒû¬ùÕ*rGþq"&Íãra>•ìKÍôl^ög—¡¦Ó-¨CÏ]+@ƒDÕTL23i2¥R´>‡#}«@ µ ÄÔªy0gxW¾Ù^ Gþ1n;‡±¾)e¯Žö_¹â(o~­ÕÚö=Î:Ã(´X%Ï/.4Ö¥ïª@¤v(?
DÞcQz…·Œiúf#Ø—ÞI¢½/½µ#X§7Œû¾L~­Ózªï±Ýùœ¾Çd3pq·®s_îYOÉv*…÷…^…ï1٭ ?ìËM!„B!„B!„B!„B!„²­ðï,IGñ+EÍ úBW‰æÄ—Ê<E28094>«eÚ»«P·L`â„0
0†v1Hèk%q±5ŽRŸ QU¥@úBý¹5U éõ%Œ‰÷†Q #i¨è¿ðÞU:^.¥_Z@<áþ÷½b©žAégÚâjXÆ\_ŒfÙ«',‡û/Y¶² êg<C3AA>O%½z:IbSã#}¡õ·'±_.~Òòž.´þWíØ«ÊQÿñæUçg膱ÕÍ¿?üý’õ•~-N^WýÏJÞMŠÿ½9tW´
ý‰«OÌõ!@ncñ•éŸŸ=ÄÆôe¯Žó³ }c<>§ªÿÑ…~"0<>ï“mn·áã3áÛ¼‰ñ¿7Ï?3 Æúüì!¾?Gã‰â<E280B0>×JL€}?O^}0é«O4\6<>¾ ™Ðÿö|7aTG?í²ø¥w¢®oë=ö¯ÕÆglKü5aâîBßFSßu|æÕŸi+[öêxê·œùB+\Ò5G©k:³Å-áßÇåÇŠvൾۅ~R×7Û]mýîàSâ5-»ßUÙ»Ò7ñ¹©úûëN€U询@Ø¢íu<C3AD>ÖÓÔÏJ‡^Ý…ŸßMÓ_«/ô*ôóúîÎÖ¿(¸þ<C2B8>úkÔÏÿëô…¦>õ©<C3B5>bûBSŸúÔw«O!„B!„B!„B!„B!„B!„B!Xì_•$çû·]?«þ+qÊþ"A™á[«ôE×7ØNÿ„¸dÛ}¡W®F<> ýU݈Ä5†0
éôjyƒhëô<C3AB>® }[¯Ó«©ê§tþwW¬€Eh… lݯTEDd$ ICüJUFÒ°ƒ(·¾ Jm}¿R¥þ }I$”–¾=ÇvtÓ~W´;¶Š·…ûBÅçû üv?öÖö…Î2æÖâ±]h}ú.0Æj·=ØÏìL2™“D5†é7íwNw¦PºÈú<C388>ýë }ÍaŠÃø&€ñ÷˾^ÿ<>üc<õ¿&
ƒÖX™[Cn;‡xö{\ Ê^Uÿ#n;‡¹ŸmLk·;Úm\´cQZ*<2A>·Áz]¾Ór·±ý8¡Ìw³ÓÒѯM -ýî`ˆÛÎ!.O¯0¤þmç0·¾)Yóòèô`8Wâ¦opì†øðþ<C3B0>ta*-”Ùv#ôõ]Lß´A}§úòÒ–?5ÇKé¿tœÐÐ7âKï$qÅPºÀ½Ô}¡©O}GÛ[%}<7D>1"„B!„B!„B!»Åß«öciôV}ÄIEND®B`‰PNG

IHDR<00>`òÔû¡-ÚzTXtRaw profile type exifxÚ¥œi²œ7ŽEÿsµÎ —Ã1¢wÐËïs™ùd•ËaG[¶%½!ó#ÜŸ;ÿû?×ýë_ÿ
>ïr±V{­žrÏ=þÐüçŸþþ|~ÿÿíCïïÿöqW>ùPâ÷ôù«<C3B9>ï×ÿ|<üz<C3BC>Ïoƒ?•ß^èçÍÃü÷O´ï'bûÓ }ß(é‰"ØßúyÔù»„óù}Æï´?þKö^â××êïî÷dc—vá«RŒ'…äùJñóFIÿ¥4ø½òÿ<C3B2>,þö÷~kŸ]¼zŠüŸûñç ÿõ§ß6ü=ѽá1¿!ýiŸê¯ß}Üýþ‰PþzcßîýöDq|ÿÿøø{¡´£ùßÿùmcïÝí¾5³Š+»X¿úYâû“ã '“Þ·U~ÿþlïWçWóÃ/²ýò“_+ô‰Ä 9ì0 'lÇVX<cŽ'ãŠé}¬Á)ëW¸ÑRO;5¢µ^DsŠŸGqYÙ߯õÞ­ñÎ;ð¥1ðb<C3B0>où[¿Üßý¿úuïÒí¥Ÿð\Q‰Çc(rú?_FDÂýnjyüóëÏÿ§4&„åmsc<73>ÃÏÏKÌþÈ­ô<02>øºÂïŸJ¶_b(PÙñÞ…‡ ‰øR 5xÑB`#<zL9N"J‰‡Œ9¥JlZÔ[ó-æÂûÚXâçãà(T“›žÁʹ<C38A>?94J*¹”R•Vz5Õ\K­®Z° K­X5³fÝFK-·Òj³ÖZo£ÇžÀ½Òk·ÞzïcðžƒW|óhnðgšyY§Í6ûôYy•U—­¶ú´<C3AE>†]·í¶û'RéäSN=æN;ýŒK®Ýtó-·^»íö;~EíÕÿøõ¢¾Q/Rú:û5>jö-hÒÅéE3"s âF 3ßBÎQSÌ|Ž•ÈCÅfæ\,7ð<37>ŸØý¹7Wë<C3AB>[ü's
Ýÿ#r¿âæŽ}ãöàõ"ö©BÕ OTŸ?=“à Þê<ÓvçúSV“]po£®ÃJQ“@f\;`LÃB‰¬pÎ<70>n³™÷Ž®Æ]ë.·ìNÔ*Ï`}?çnɃH—'¨¹­Ãά:zm<7A>qÖôìE«)LWJãe)à|R>õÓ­Õ<46><37>ÖkLâ<Çe½lV.;Ó¹5öŽ[ VÜEÿ³ÚÙ³”vo6ó\^o¯œ;ϧý²g,yð½ÆÚWI£áúJyÞÓ€ç\B.¤<>÷<&ÑK½žLpØÁÍ}[ =±H^<5E>×<EFBFBD>cùCÔÇ»¹Ö}&•º<E280A2>õ·ÓÒ¾¡Œ;ú"]ˆs·D¦>;

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.