001    package components;
002    
003    import physics3d.Vect3;
004    
005    /**
006     * GameSettings is a mutable object that holds gamesettings
007     * @specfield gravity
008     * @specfield mu                        
009     * @specfield mu2
010     * @specfield fps
011     */
012    
013    /*
014     * Abstraction Function
015     * AF(r) = a GameSettings object, gs, such that
016     * gs.gravity = r.gravity
017     * gs.mu = r.mu
018     * gs.mu2 = this.mu2
019     * gs.fps = this.fps
020     */
021    
022    /*
023     * Rep Invariant
024     * gravity != null
025     */
026    
027    public class GameSettings {
028            
029            //fields
030            private Vect3 gravity;
031            private double mu;
032            private double mu2;
033            private int fps;
034            
035            public GameSettings() {
036                    gravity = new Vect3(0,25,0);
037                    mu = 0.025;
038                    mu2 = 0.025;
039                    fps = 30; //frames per second
040            }
041    
042            /**
043             * @return the frames per second 
044             */
045            public int getFPS() {
046                    return fps;
047            }
048    
049            /**
050             * @param fps is the frames per second to set
051             * @effects sets the frames per second
052             */
053            public void setFPS(int fps) {
054                    this.fps = fps;
055            }
056    
057            /**
058             * @return the gravity
059             */
060            public Vect3 getGravity() {
061                    return gravity;
062            }
063    
064            /**
065             * @require gravity != null
066             */
067            public void setGravity(Vect3 gravity) {
068                    this.gravity = gravity;
069            }
070    
071            /**
072             * @return the mu
073             */
074            public double getMu() {
075                    return mu;
076            }
077    
078            /**
079             * @param mu the mu to set
080             */
081            public void setMu(double mu) {
082                    this.mu = mu;
083            }
084    
085            /**
086             * @return the mu2
087             */
088            public double getMu2() {
089                    return mu2;
090            }
091    
092            /**
093             * @param mu2 the mu2 to set
094             */
095            public void setMu2(double mu2) {
096                    this.mu2 = mu2;
097            }
098    }