<commit_before>package nl.mvdr.tinustris.engine.speedcurve;

import nl.mvdr.tinustris.model.GameState;

/**
 * Determines numeric speed values for a game of Tetris.
 * 
 * @author <NAME>
 */
public interface SpeedCurve {
    /**
     * Determines the internal gravity based on the given game state.
     * 
     * The internal gravity is expressed in 1 / 256 G, where G is the number of cells a tetromino drops per frame of
     * animation.
     * 
     * @param state
     *            game state
     * @return internal gravity in 1 / 256 G
     */
    int computeInternalGravity(GameState state);
    
    /**
     * Determines the lock delay based on the given game state. The lock delay is expressed in frames.
     * 
     * @param state
     *            game state
     * @return lock delay in frames
     */
    int computeLockDelay(GameState state);
    
    /**
     * Determines the ARE (also known as entry delay, appearance delay or spawn delay) in frames.
     * 
     * @param state state
     * @return ARE in frames
     */
    int computeARE(GameState state);
    
    /**
     * Determines the line clear delay in frames.
     * 
     * @param state state
     * @return line clear delay in frames
     */
    int computeLineClearDelay(GameState state);
    
    // TODO add delayed auto shift (DAS)?
}<commit_msg>Improved Javadoc.<commit_after>package nl.mvdr.tinustris.engine.speedcurve;

import nl.mvdr.tinustris.model.GameState;

/**
 * Determines numeric speed values for a game of Tetris.
 * 
 * @author <NAME>
 */
public interface SpeedCurve {
    /**
     * Determines the internal gravity based on the given game state.
     * 
     * The internal gravity is expressed in 1 / 256 G, where G is the number of cells a tetromino drops per frame of
     * animation.
     * 
     * @param state
     *            game state
     * @return internal gravity in 1 / 256 G, must be positive
     */
    int computeInternalGravity(GameState state);
    
    /**
     * Determines the lock delay based on the given game state. The lock delay is expressed in frames.
     * 
     * @param state
     *            game state
     * @return lock delay in frames, must be 0 or more
     */
    int computeLockDelay(GameState state);
    
    /**
     * Determines the ARE (also known as entry delay, appearance delay or spawn delay) in frames.
     * 
     * @param state state
     * @return ARE in frames, must be 0 or more
     */
    int computeARE(GameState state);
    
    /**
     * Determines the line clear delay in frames.
     * 
     * @param state state
     * @return line clear delay in frames, must be positive
     */
    int computeLineClearDelay(GameState state);
    
    // TODO add delayed auto shift (DAS)?
}
{'fraction_non_alphanumeric': 0.0782387190684134, 'fraction_numerical': 0.006550218340611353, 'mean_word_length': 2.156142365097589, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6101787', 'n_tokens_mistral': 807, 'n_tokens_neox': 757, 'n_words': 305}