Skip to content

Commit 780ae4e

Browse files
committed
Fixed lost commit
1 parent f581406 commit 780ae4e

30 files changed

Lines changed: 446 additions & 282 deletions

apps/Arduino/ss_basic/ss_basic.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
*/
1717

18-
#define VERSION "SS_v0.1.6"
18+
#define VERSION "SS_v0.1.4"
1919
#define FALSE_START_TICKS 4
2020
#define MAX_RACERS 4
2121

@@ -237,7 +237,7 @@ void updateRacerTicks()
237237
// 1 km/hr = 0.2778 mm/ms
238238
// 114.3mm == fake roller diameter
239239
float mmSec = mockSpeedsKph[i] * 277.77778;
240-
float curTimeSecs = currentTimeMillis / 1000;
240+
float curTimeSecs = currentTimeMillis / 1000.0;
241241
//racerTicks[i] = floor( curTimeSecs * mmSec / (114.3 * PI));
242242
racerTicks[i] = floor( currentTimeMillis * mockSpeedsKph[i] * 0.2778 / (114.3 * PI));
243243
}

apps/SilverSprints/src/SilverSprintsApp.cpp

Lines changed: 112 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -23,161 +23,161 @@ using namespace gfx;
2323

2424
class SilverSprintApp : public App {
2525
public:
26-
void setup() override;
27-
void resize() override;
28-
void keyDown(KeyEvent event) override;
29-
void update() override;
30-
void draw() override;
31-
void cleanup() override;
32-
33-
void loadSettings();
34-
void writeSettings();
35-
gfx::GFXMainRef mGfxMain;
26+
void setup() override;
27+
void resize() override;
28+
void keyDown( KeyEvent event ) override;
29+
void update() override;
30+
void draw() override;
31+
void cleanup() override;
32+
33+
void loadSettings();
34+
void writeSettings();
35+
gfx::GFXMainRef mGfxMain;
3636
};
3737

3838
void SilverSprintApp::setup()
3939
{
4040
#if defined(DEBUG_MODE)
41-
fs::path logPath = getAppPath().string() + "/logs/SilverSprint.log";
42-
log::makeLogger<log::LoggerFile>(logPath, false);
43-
CI_LOG_I("Setting up log file at " << logPath);
44-
console() << "path " << logPath.string() << endl;
41+
fs::path logPath = getAppPath().string() + "/logs/SilverSprint.log";
42+
log::makeLogger<log::LoggerFile>( logPath, false );
43+
CI_LOG_I("Setting up log file at " << logPath );
44+
console() << "path " << logPath.string() << endl;
4545
#endif
46-
47-
auto sysLogger = log::makeLogger<log::LoggerSystem>();
48-
sysLogger->setLoggingLevel(log::LEVEL_VERBOSE);
49-
50-
CI_LOG_I("Start program");
51-
52-
gl::enableAlphaBlending();
53-
54-
mGfxMain = GFXMainRef(new GFXMain());
55-
mGfxMain->setup();
56-
57-
loadSettings();
46+
47+
auto sysLogger = log::makeLogger<log::LoggerSystem>();
48+
sysLogger->setLoggingLevel(log::LEVEL_VERBOSE);
49+
50+
CI_LOG_I("Start program");
51+
52+
gl::enableAlphaBlending();
53+
54+
mGfxMain = GFXMainRef( new GFXMain() );
55+
mGfxMain->setup();
56+
57+
loadSettings();
5858
}
5959

6060
void SilverSprintApp::loadSettings()
6161
{
62-
CI_LOG_I("Load settings");
63-
fs::path targetPath = ci::app::getAppPath().parent_path() / fs::path("settings.cfg");
62+
CI_LOG_I("Load settings");
63+
fs::path targetPath = ci::app::getAppPath().parent_path() / fs::path("settings.cfg");
6464
#if defined(CINDER_MAC)
65-
targetPath = ci::app::Platform::get()->expandPath("~/Library") / fs::path("SilverSprints/settings.cfg");
65+
targetPath = ci::app::Platform::get()->expandPath("~/Library") / fs::path("SilverSprints/settings.cfg");
6666
#elif defined(CINDER_MSW)
67-
targetPath = getDocumentsDirectory() / fs::path("SilverSprints/settings.cfg");
67+
targetPath = getDocumentsDirectory() / fs::path("SilverSprints/settings.cfg");
6868
#endif
69-
70-
if (fs::exists(targetPath)) {
71-
config().read(loadFile(targetPath));
72-
// config().load(targetPath);
73-
74-
Model::instance().setCurrentRaceType((Model::RACE_TYPE)config().get("settings", "race_type", (int)Model::RACE_TYPE::RACE_TYPE_DISTANCE));
75-
Model::instance().setRaceLengthMeters(config().get("settings", "race_length_meters", 100));
76-
Model::instance().setRaceTimeSeconds(config().get("settings", "race_time", 60));
77-
Model::instance().setUseKph(config().get("settings", "race_kph", true));
78-
Model::instance().setRollerDiameterMm(config().get("settings", "roller_diameter_mm", 114.3));
79-
Model::instance().setNumRacers(config().get("settings", "num_racers", 114.3));
80-
Model::instance().setRaceLogging(config().get("settings", "log_races", false));
81-
82-
setFullScreen(config().get("app", "fullscreen", false));
83-
}
69+
70+
if(fs::exists(targetPath)){
71+
config().read(loadFile(targetPath));
72+
// config().load(targetPath);
73+
74+
Model::instance().setCurrentRaceType((Model::RACE_TYPE)config().get("settings", "race_type", (int)Model::RACE_TYPE::RACE_TYPE_DISTANCE));
75+
Model::instance().setUseKph( config().get("settings", "race_kph", true));
76+
Model::instance().setRollerDiameterMm( config().get("settings", "roller_diameter_mm", 114.3));
77+
Model::instance().setNumRacers( config().get("settings", "num_racers", 114.3));
78+
Model::instance().setRaceLogging( config().get("settings", "log_races", false));
79+
Model::instance().setRaceTimeSeconds( config().get("settings", "race_time", 60));
80+
// this must be called after the roller diameter is set
81+
Model::instance().setRaceLengthMeters( config().get("settings", "race_length_meters", 100));
82+
83+
setFullScreen( config().get("app", "fullscreen", false));
84+
}
8485
}
8586

8687
void SilverSprintApp::writeSettings()
8788
{
8889
config().set("settings", "race_type", (int)Model::instance().getCurrentRaceType());
89-
config().set("settings", "race_length_meters", Model::instance().getRaceLengthMeters());
90-
config().set("settings", "race_time", Model::instance().getRaceTimeSeconds());
91-
config().set("settings", "race_kph", Model::instance().getUsesKph());
92-
config().set("settings", "roller_diameter_mm", Model::instance().getRollerDiameterMm());
93-
config().set("settings", "num_racers", Model::instance().getNumRacers());
94-
config().set("settings", "log_races", Model::instance().getRaceLogging());
95-
96-
fs::path targetPath = ci::app::getAppPath().parent_path() / fs::path("settings.cfg");
97-
90+
config().set("settings", "race_length_meters", Model::instance().getRaceLengthMeters());
91+
config().set("settings", "race_time", Model::instance().getRaceTimeSeconds());
92+
config().set("settings", "race_kph", Model::instance().getUsesKph());
93+
config().set("settings", "roller_diameter_mm", Model::instance().getRollerDiameterMm());
94+
config().set("settings", "num_racers", Model::instance().getNumRacers());
95+
config().set("settings", "log_races", Model::instance().getRaceLogging());
96+
97+
fs::path targetPath = ci::app::getAppPath().parent_path() / fs::path("settings.cfg");
98+
9899
#if defined(CINDER_MAC)
99-
targetPath = ci::app::Platform::get()->expandPath("~/Library") / fs::path("SilverSprints/settings.cfg");
100+
targetPath = ci::app::Platform::get()->expandPath("~/Library") / fs::path("SilverSprints/settings.cfg");
100101
#elif defined(CINDER_MSW)
101-
targetPath = getDocumentsDirectory() / fs::path("SilverSprints/settings.cfg");
102+
targetPath = getDocumentsDirectory() / fs::path("SilverSprints/settings.cfg");
102103
#endif
103-
104-
CI_LOG_I("Writing settings to " << targetPath);
105-
106-
auto d = ci::DataTargetPath::createRef(targetPath);
107-
config().write(d);
104+
105+
CI_LOG_I("Writing settings to " << targetPath);
106+
107+
auto d = ci::DataTargetPath::createRef(targetPath);
108+
config().write(d);
108109
}
109110

110111
void SilverSprintApp::cleanup()
111112
{
112-
CI_LOG_I("Exiting");
113-
writeSettings();
113+
CI_LOG_I("Exiting");
114+
writeSettings();
114115
}
115116

116117
void SilverSprintApp::resize()
117118
{
118-
Rectf originalSize(0, 0, 1920, 1080);
119+
Rectf originalSize(0,0,1920,1080);
119120
Model::instance().setScale( originalSize.getCenteredFit(getWindowBounds(), true) );
120121
}
121122

122-
void SilverSprintApp::keyDown(KeyEvent event)
123+
void SilverSprintApp::keyDown( KeyEvent event )
123124
{
124-
if (event.isAccelDown() || event.isControlDown()) {
125-
if (event.getChar() == 'f') {
126-
setFullScreen(!isFullScreen());
127-
config().set("app", "fullscreen", isFullScreen());
128-
}
129-
else if (event.getChar() == '1') {
130-
StateManager::getInstance()->changeAppState(APP_STATE::RACE);
131-
}
132-
else if (event.getChar() == '2') {
133-
StateManager::getInstance()->changeAppState(APP_STATE::ROSTER);
134-
}
135-
else if (event.getChar() == '3') {
136-
StateManager::getInstance()->changeAppState(APP_STATE::SETTINGS);
137-
}
138-
else if (event.getChar() == 'r') {
139-
mGfxMain->reloadShaders();
140-
}
141-
}
125+
if( event.isAccelDown() || event.isControlDown() ){
126+
if( event.getChar() == 'f' ){
127+
setFullScreen( !isFullScreen() );
128+
config().set("app", "fullscreen", isFullScreen());
129+
}
130+
else if( event.getChar() == '1' ){
131+
StateManager::getInstance()->changeAppState( APP_STATE::RACE );
132+
}
133+
else if( event.getChar() == '2' ){
134+
StateManager::getInstance()->changeAppState( APP_STATE::ROSTER );
135+
}
136+
else if( event.getChar() == '3' ){
137+
StateManager::getInstance()->changeAppState( APP_STATE::SETTINGS );
138+
}else if( event.getChar() == 'r' ){
139+
mGfxMain->reloadShaders();
140+
}
141+
}
142142
}
143143

144144
void SilverSprintApp::update()
145145
{
146-
mGfxMain->update();
146+
mGfxMain->update();
147147
}
148148

149149
void SilverSprintApp::draw()
150150
{
151-
gl::clear(Color(0, 0, 0));
152-
153-
// clear out the window with black
154-
gl::clear(Color(0, 0, 0));
155-
156-
gl::pushMatrices(); {
157-
Rectf originalSize(0, 0, 1920, 1080);
158-
Rectf scaledFit = originalSize.getCenteredFit(getWindowBounds(), true);
159-
160-
float hScale = getWindowWidth() / originalSize.getWidth();
161-
float vScale = getWindowHeight() / originalSize.getHeight();
162-
163-
float scaleAmt = (hScale < vScale) ? hScale : vScale;
164-
165-
gl::translate(vec2(scaledFit.x1, 0));
166-
gl::scale(scaleAmt, scaleAmt);
167-
168-
mGfxMain->draw(scaledFit);
169-
}gl::popMatrices();
170-
151+
gl::clear( Color( 0, 0, 0 ) );
152+
153+
// clear out the window with black
154+
gl::clear( Color( 0, 0, 0 ) );
155+
156+
gl::pushMatrices();{
157+
Rectf originalSize(0,0,1920,1080);
158+
Rectf scaledFit = originalSize.getCenteredFit(getWindowBounds(), true);
159+
160+
float hScale = getWindowWidth() / originalSize.getWidth();
161+
float vScale = getWindowHeight() / originalSize.getHeight();
162+
163+
float scaleAmt = ( hScale < vScale ) ? hScale : vScale;
164+
165+
gl::translate( vec2(scaledFit.x1, 0) );
166+
gl::scale(scaleAmt, scaleAmt);
167+
168+
mGfxMain->draw( scaledFit );
169+
}gl::popMatrices();
170+
171171
#if defined(DEBUG_MODE)
172-
gl::drawString(to_string(getAverageFps()), vec2(10, getWindowHeight() - 60));
173-
gl::drawString(StateManager::getInstance()->getCurrentAppStateString(), vec2(10, getWindowHeight() - 40));
174-
gl::drawString(StateManager::getInstance()->getCurrentRaceStateString(), vec2(10, getWindowHeight() - 20));
172+
gl::drawString( to_string( getAverageFps() ), vec2(10, getWindowHeight() - 60) );
173+
gl::drawString( StateManager::getInstance()->getCurrentAppStateString(), vec2(10, getWindowHeight() - 40) );
174+
gl::drawString( StateManager::getInstance()->getCurrentRaceStateString(), vec2(10, getWindowHeight() - 20) );
175175
#endif
176176
}
177177

178-
CINDER_APP(SilverSprintApp, RendererGl(RendererGl::Options().msaa(8)), [&](SilverSprintApp::Settings *settings) {
179-
settings->setFrameRate(60.0);
180-
settings->setWindowSize(1280, 700);
181-
// settings->setWindowPos((1400-1280)/2, 0 );
182-
settings->setTitle("SilverSprint");
178+
CINDER_APP( SilverSprintApp, RendererGl(RendererGl::Options().msaa(8)), [&](SilverSprintApp::Settings *settings){
179+
settings->setFrameRate(60.0);
180+
settings->setWindowSize(1280, 700);
181+
// settings->setWindowPos((1400-1280)/2, 0 );
182+
settings->setTitle("SilverSprint");
183183
})

apps/Silversprints/include/app/GFXMain.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22
// GFXMain.h
3-
// GoldsprintsFX
3+
// SilverSprints
44
//
55
// Created by Charlie Whitney on 8/27/14.
66
//

apps/Silversprints/include/data/Model.h

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,24 @@
1414
#include "PlayerData.h"
1515

1616
namespace gfx {
17-
17+
1818
class Model {
1919
friend class SerialReader;
2020

21-
public:
22-
21+
public:
22+
2323
static Model &instance(){
2424
static Model sInstance;
2525
return sInstance;
2626
}
2727

28+
enum RACE_TYPE {
29+
RACE_TYPE_TIME = 0,
30+
RACE_TYPE_DISTANCE
31+
};
32+
const RACE_TYPE& getCurrentRaceType(){ return mCurrentRaceType; }
33+
void setCurrentRaceType(const RACE_TYPE &type){ mCurrentRaceType = type; }
34+
2835
void resetPlayers();
2936

3037
void setRaceLengthMeters( const float &meters );
@@ -45,32 +52,42 @@ namespace gfx {
4552
PlayerData* getPlayerData(const int &num){ return playerData[num]; };
4653

4754
const double& getRaceLengthMillis(){ return RaceSettings.mRaceLengthMillis;}
48-
55+
4956
void setUseKph(bool useKph){ RaceSettings.bUseKph = useKph;}
5057
bool getUsesKph(){ return RaceSettings.bUseKph; }
5158

5259
void setRaceLogging(const bool &bShouldLog){
5360
RaceSettings.bLogRacesToFile = bShouldLog;
5461
}
5562
const bool getRaceLogging(){ return RaceSettings.bLogRacesToFile; }
56-
63+
5764
std::vector<gfx::PlayerData*> playerData;
5865
ci::Color playerColors[4];
5966

6067
int startTimeMillis;
6168
int elapsedRaceTimeMillis;
6269
std::string mFirmwareVersion = "Unknown";
6370

64-
private:
71+
// FONTS
72+
ci::Font uiFont;
73+
ci::gl::TextureFontRef texFont, winnerTexFont, winnerUiFont;
74+
ci::gl::TextureFontRef countdownFont;
75+
76+
ci::vec2 localToGlobal( ci::vec2 pos );
77+
void setScale( const ci::Rectf &scaledRect );
78+
79+
//! How often the mph is updated for racers
80+
const float speedUpdateInterval = 0.5f;
81+
82+
private:
6583
// PRIVATE CONSTRUCTOR + COPY
6684
Model();
6785
~Model();
6886
Model(Model const&){};
69-
70-
static Model *mInstance;
71-
7287
void setRaceLength(int ticks);
7388

89+
RACE_TYPE mCurrentRaceType = RACE_TYPE::RACE_TYPE_TIME;
90+
7491
struct RaceSettings {
7592
int numRacers = 2;
7693
// For distance based
@@ -87,8 +104,6 @@ namespace gfx {
87104
bool bLogRacesToFile = false;
88105
} RaceSettings;
89106

90-
91-
92-
107+
ci::vec2 mScreenScale, mScreenOffset;
93108
};
94109
}

0 commit comments

Comments
 (0)