@ -45,8 +45,8 @@ void ItemDrop::Initialize(){
gravity = " ItemDrop.Item Drop Gravity " _F ;
}
ItemDrop : : ItemDrop ( ItemInfo * item , vf2d pos )
: item ( item ) , pos ( pos ) {
ItemDrop : : ItemDrop ( ItemInfo * item , vf2d pos , bool isUpper )
: item ( item ) , pos ( pos ) , upperLevel ( isUpper ) {
speed . x = util : : random ( " ItemDrop.Item Drop Horizontal Speed " _f [ 1 ] - " ItemDrop.Item Drop Horizontal Speed " _f [ 0 ] ) + " ItemDrop.Item Drop Horizontal Speed " _f [ 0 ] ;
speed . y = util : : random ( " ItemDrop.Item Drop Vertical Speed " _f [ 1 ] - " ItemDrop.Item Drop Vertical Speed " _f [ 0 ] ) + " ItemDrop.Item Drop Vertical Speed " _f [ 0 ] ;
zSpeed = " ItemDrop.Item Drop Initial Rise Speed " _F ;
@ -102,8 +102,9 @@ void ItemDrop::UpdateDrops(float fElapsedTime){
vf2d pointVel = lineTo . vector ( ) . norm ( ) ;
if ( ( 1.f / dist ) * 200 * fElapsedTime > dist ) {
drop . pos = game - > GetPlayer ( ) - > GetPos ( ) ;
drop . collected = true ;
} else {
drop . pos + = pointVel * ( 1.f / dist ) * 200 * fElapsedTime ;
drop . pos + = pointVel * ( 1.f / dist ) * " ItemDrop.Item Drop Suction Strength " _F * fElapsedTime ;
}
}
}
@ -125,12 +126,24 @@ void ItemDrop::UpdateDrops(float fElapsedTime){
}
# pragma endregion
}
std : : erase_if ( drops , [ ] ( ItemDrop & drop ) {
if ( drop . collected ) {
Inventory : : AddItem ( drop . GetItem ( ) - > Name ( ) , 1 , true ) ;
return true ;
}
return false ;
} ) ;
}
float ItemDrop : : GetZ ( ) {
return z ;
}
void ItemDrop : : SpawnItem ( ItemInfo * item , vf2d pos ) {
drops . push_back ( ItemDrop { item , pos } ) ;
void ItemDrop : : SpawnItem ( ItemInfo * item , vf2d pos , bool isUpper ) {
drops . push_back ( ItemDrop { item , pos , isUpper } ) ;
}
ItemInfo * ItemDrop : : GetItem ( ) {
return item ;
}