Skip to content
Permalink
Browse files
Merge interfaces
  • Loading branch information
grantb3 committed Mar 4, 2019
1 parent 3b863ca commit e0d675ca660dd828382f9a75e69b9d91d315dac4
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 52 deletions.
@@ -2,17 +2,58 @@
#include <string>
#include <istream>
#include <iterator>
#include <vector>
#include "timer.h"
#include "objects.h"

using namespace std;

//set default size for 3 ingredients windows (keep it odd for alignment purposes)
const int WIN_X = 23;
bool paused = false;

void timerDone(){
exit(0);
}

char* getLine(WINDOW * win, int y)
{
char * str = new char[WIN_X-2];
mvwinnstr(win, y - 15, 1, str,WIN_X-2);

return str;
}
void printVector(WINDOW * win, vector<char *> &v)
{
int line = 2;
for (int i = 0;i != v.size();i++)
{
mvwprintw(win, line, 1, v[i]);
line++;
}
wrefresh(win);
}
void getAndPrint(WINDOW * from, WINDOW * dest, int y, vector<char *> &v) //(source window, destination window, y coordinate, vector with ingredients)
{
if (v.size() < 4)
{
v.push_back(getLine(from, y));

if (!v.empty())
{
if (v.back()[0] == ' ')
v.pop_back();
}
printVector(dest, v);
}
}

void tick(WINDOW* timerWindow, Timer timer){

if(paused){
return tick(timerWindow, timer);
}

int minutes = timer.getMinutes(), seconds = timer.getSeconds();

if(minutes <= 0 && seconds <= 0){
@@ -36,9 +77,9 @@ void tick(WINDOW* timerWindow, Timer timer){
int main()
{

Database db = Database("cocktail.db");
Database db = Database("cocktail.db");

initialiseObjectsFromDatabase(db);
initialiseObjectsFromDatabase(db);

//ncurses start
initscr();
@@ -48,8 +89,9 @@ int main()
cbreak();
//enables colors
start_color();

nodelay(stdscr, TRUE);
curs_set(0); //disable cursor
setenv("TERM","xterm-1005",1);

//check if colors are supported
if(!has_colors())
@@ -165,25 +207,25 @@ int main()
**************************************
*/

WINDOW * ingredientsWindow = newwin( 3, 21, 11, 3);
WINDOW * ingredientsWindow = newwin( 3, WIN_X, 11, 3);
box(ingredientsWindow, 0, 0);
refresh();
wrefresh(ingredientsWindow);

wbkgd(ingredientsWindow, COLOR_PAIR(1));

mvwprintw(ingredientsWindow, 1, 5, "INGREDIENTS");
mvwprintw(ingredientsWindow, 1, (WIN_X-11)/2, "INGREDIENTS");

wrefresh(ingredientsWindow);

WINDOW * ingr2 = newwin( 20, 21, 15, 3);
WINDOW * ingr2 = newwin( 20, WIN_X, 15, 3);
box(ingr2, 0, 0);
refresh();
wrefresh(ingr2);

wbkgd(ingr2, COLOR_PAIR(3));

/* Loop inspired by John H. https://stackoverflow.com/a/26282004 */
/* Loop inspired by John H. https://stackoverflow.com/a/26282004 */
int tmpY = 1;
for(map<string, double>::iterator it = ingredients.begin(); it != ingredients.end(); it++){
mvwprintw(ingr2, tmpY, 1, it->first.c_str());
@@ -198,18 +240,18 @@ int main()
**************************************
*/

WINDOW * glass = newwin( 3, 21, 11, 26);
WINDOW * glass = newwin( 3, WIN_X, 11, 26);
box(glass, 0, 0);
refresh();
wrefresh(glass);

wbkgd(glass, COLOR_PAIR(1));

mvwprintw(glass, 1, 8, "GLASS");
mvwprintw(glass, 1, (WIN_X-5)/2, "GLASS");

wrefresh(glass);

WINDOW * glass2 = newwin( 20, 21, 15, 26);
WINDOW * glass2 = newwin( 20, WIN_X, 15, WIN_X+5);
box(glass2, 0, 0);
refresh();
wrefresh(glass2);
@@ -228,13 +270,16 @@ int main()
**************************************
*/

WINDOW * decoration = newwin( 3, 20, 11, 49);
WINDOW * decoration = newwin( 3, WIN_X, 11, 7+2*WIN_X);
box(decoration, 0, 0);
refresh();
wrefresh(decoration);

wbkgd(decoration, COLOR_PAIR(1));
WINDOW * dec2 = newwin( 20, 20, 15, 49);

mvwprintw(decoration, 1, (WIN_X-11)/2, "DECORATIONS");

WINDOW * dec2 = newwin( 20, WIN_X, 15, 5+2*WIN_X+2);
box(dec2, 0, 0);
refresh();
wrefresh(dec2);
@@ -276,7 +321,7 @@ int main()
**************************************
*/

WINDOW * Customer = newwin(13, 30, 37,3);
WINDOW * Customer = newwin(13, ((WIN_X*3+4)-4)/2, 37,3);

refresh();

@@ -293,18 +338,21 @@ int main()

/*
**************************************
SHAKER WINDOW
COCKTAIL WINDOW
**************************************
*/

WINDOW * Shaker = newwin(13, 34, 37,35);
WINDOW * Shaker = newwin(13, (WIN_X*3+4)/2+1, 37, 3+(WIN_X*3+4)/2);

box(Shaker,0,0);
refresh();

vector<char *> shakerContent;

wbkgd(Shaker,COLOR_PAIR(2));

mvwprintw(Shaker, 1, 9, "COCKTAIL SHAKER");
mvwprintw(Shaker, 1, (((WIN_X*3+4)/2+1)-15)/2, "COCKTAIL SHAKER");
mvwprintw(Shaker, 1, (WIN_X*3+4)/2+1 - 4, "CLR");

wrefresh(Shaker);

@@ -440,73 +488,90 @@ int main()
refresh();
wrefresh(money);

while(1){
tick(timerWindow, timer);
}

/*
**************************************
READ FROM TEMRINAL
**************************************
*/
/*
char * s;
wmove(ingr2, 1,1);
getline(s, 6);
mvprintw(52, 1, s);
**************************************
MOUSE FUNCTIONALITY
**************************************
*/

//enable mouse detection
mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL);
//mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL);
mousemask(BUTTON1_PRESSED, NULL);
keypad(stdscr, TRUE);

mvprintw(53, 1, "%d", xMax);

MEVENT event;
int i = 0;
MEVENT event;
while(1)
{

tick(timerWindow, timer);
mvprintw(50, 1, "%d", i);
int c = wgetch(stdscr);

if (c == '\n')
break;
if (c == '\n' || c == ERR)
continue;

if (c == KEY_MOUSE)
{
MEVENT event;

if (getmouse(&event) == OK)
{

move(55,1);
clrtoeol();
printw("Row=%d", event.y);
printw("y=%d", event.y);
move(56,1);
clrtoeol();
printw("Column=%d", event.x);
refresh();
//if(event.x>0 && event.x<14 && event.y>5 && event.y<9){}
printw("x=%d", event.x);
refresh();

if(event.x>3 && event.x<3+WIN_X-1 && event.y < 34 && event.y>15) //ingredients
{
getAndPrint(ingr2, Shaker, event.y, shakerContent);
}
if(event.x>3+WIN_X+2 && event.x<5+2*WIN_X-1 && event.y < 34 && event.y>15) //glass
{
getAndPrint(glass2, Shaker, event.y, shakerContent);
}
if(event.x>5+2*WIN_X+2 && event.x<7+3*WIN_X-1 && event.y < 34 && event.y>15) //decorations
{
getAndPrint(dec2, Shaker, event.y, shakerContent);
}
if(event.x>2+3*WIN_X && event.x<6+3*WIN_X && event.y==38) //clr button
{
shakerContent.clear();
for (int i = 2; i<11 ; i++)
{
mvwprintw(Shaker,i,1," ");
}
wrefresh(Shaker);

}
if(event.x>xMax-38 && event.x<xMax-23 && event.y>37 && event.y<43 || (event.x==161 && event.y <109)) //shake button
{
mvwprintw(Shaker, 10, 1, "shook");
wrefresh(Shaker);
}
if(event.x>xMax-33 && event.x<xMax-29 && event.y == 12) //arrow left
{
mvwprintw(recipeBook2, 8, 1, "left ");
wrefresh(recipeBook2);
}
if(event.y>xMax-7 && event.y<xMax-3 && event.x == 161) //arrow right
{
mvwprintw(recipeBook2, 8, 1, "right");
wrefresh(recipeBook2);
}

}
}
i++;
}
*/




//make sure program waits before exiting
getch();
endwin();
@@ -6,6 +6,7 @@

class Timer {
public:

Timer(int seconds){
finishingTimePoint = std::chrono::steady_clock::now() + std::chrono::seconds(seconds);
}
@@ -21,6 +22,7 @@ class Timer {
int getMinutes(){
return std::chrono::duration_cast<std::chrono::minutes>(finishingTimePoint - std::chrono::steady_clock::now()).count();;
}

private:
std::chrono::steady_clock::time_point finishingTimePoint;
};

0 comments on commit e0d675c

Please sign in to comment.