As a result EventEncoder and SimpleGameLogic had to be changed as well. Adding
member variable m_touchingBottom to class SimpleGameLogic, which tells if the
current playing block (in the case that it is in play) is grazing the bottom
(either the bottom of pit boundary or grazing frozen cruft below). That new
member variable is used in the following situation. When the block is already
touching bottom and when the user drop sequence is initiated, instead of
freezing the block immediately, the block is given m_hitBottomDelay
milliseconds before freezing in order to be able to perform some final post
drop sequence of events. The computer player needs this logic, because there
is no way to poll these kinds of situations; in particular if the computer
player initiates a user drop but at the same exact time a system drop block
event is created, then before, there would be no chance to perform post drop
events, and now with this change, a small time window is available to perform
these movements.