00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020
00021
00022
00024
00025
00027
00028 #ifndef STAR_H
00029 #define STAR_H
00030
00031 #include <string>
00032 #include <SFML/Graphics.hpp>
00033
00034 #include "Globals.hpp"
00035
00036 #define ASTEROID_MIN_SPEED 0.5f
00037 #define ASTEROID_MAX_SPEED 1.5f
00038
00039 #define STAR_ASTEROID_RADIUS 90
00040 #define STAR_ANI_UPDATE 100
00041
00043
00044 struct AsteroidData
00045 {
00046 int FrameX;
00047 int FrameY;
00048 int FrameCount;
00049 std::string FileName;
00050 };
00051
00055 class CStar
00056 {
00057 public:
00059 CStar();
00060 ~CStar();
00061
00063 void Init(const std::string& FileName, int Layer, bool Planet = false, int FieldWidth = SCREEN_X_SIZE - HUD_SIZE_X);
00064
00066 void InitAsteroid(AsteroidData* Data, int Layer, float XSpeed, float YSpeed, float X, float Y);
00067
00068
00070 void Draw();
00071
00073 int GetLayer() const { return m_Layer; }
00074
00075
00077 bool IsPlanet() const { return m_IsPlanet; }
00078
00080 bool CanBeRemoved() const { return m_CanBeRemoved; }
00081
00082
00084 void SetFieldWidth(int FieldWidth) { m_FieldWidth = FieldWidth; }
00085
00086
00088 void SetPosition(float X, float Y) { m_Star.SetPosition(X,Y); }
00089 private:
00090 sf::Sprite m_Star;
00091 float m_SpeedX;
00092 float m_SpeedY;
00093
00094 int m_Layer;
00095
00096 bool m_IsPlanet;
00097 bool m_IsAsteroid;
00098 bool m_CanBeRemoved;
00099
00100 int m_LastAniUpdate;
00101
00102 int m_FieldWidth;
00103
00104 unsigned frame_count;
00105 bool framed;
00106 };
00107
00108 #endif
00109