// Note - this was version1 of cs20200's project.  It has
// been superseeded by what is currently in mario.cpp

/*

#include<curses.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>

#include "world.h"

void init();
void cleanup();
void draw_screen();
void handle_key(int ch);
void update_person();

int x, coins, lives,
  width, height, delta_us;
double y, vy, g;

char * world[100]; // max of 100 rows tall
int world_h, world_w;


void mario() {
  init();

  int chTyped;
  do {
    draw_screen();
    //usleep(delta_us);

    chTyped = getch();
    if (lives > 0) {
      handle_key(chTyped);
      update_person();
    }
  } while (chTyped != 'q');

  cleanup();
}


void handle_key(int ch) {
  switch(ch) {
  case KEY_UP:
    //y = y > 0 ? y-1 : 0;
    vy = -10; // #rows up / sec
    break;
    
  case KEY_DOWN:
    //y = y < height-1 ? y+1 : height-1;
    break;
    
  case KEY_LEFT:
    x = x > 0 ? x-1 : 0;
    break;
    
  case KEY_RIGHT:
    // x = x + 1;  but don't go off the screen
    x = x < width-1 ? x+1 : width-1;
    break;
  }
}

void update_person() {
  // update velocity
  vy = vy + (g * delta_us / 1e6);
  if (vy > 0 && y >= height-2) vy = 0;

  // update y position based on vy
  y = y + vy * (delta_us / 1e6);
  if (y >= height - 2) y = height - 2;
}

void draw_screen() {
  // erase the screen
  erase();

  // border and such
  border('|', '|', '-', '-', '+', '+', '+', '+');
  mvprintw(1, 1,"q to quit");
  mvprintw(2, 1, "y=%lf, vy=%lf, coins=%d, lives=%d", y, vy, coins, lives);

  // world stuff
  for(int i=0; i < world_h; i++) {
    mvprintw(height-1 - world_h + i, 1, "%s", world[i]);
  }

  // player
  if (mvinch((int) y, x) == '$') {
    coins++;
    // remove $ from world[...][...]
  }
  if (mvinch((int) y, x) == '@') {
    lives = lives > 0 ? lives-1 : 0;
    // remove monster? from world[...][...]
  }
  
  mvaddch((int) y, x, '*');

  if (lives <= 0) {
      mvprintw(height/2, width/3, "~~~ GAME OVER ~~~");
  }
  
  refresh();
}

void init() {
  // note - already done from main.c:
  //  initsrc (creates screen)
  //  noecho (don't display chars that are typed)
  //  cbreak (don't wait for enter key)
  //  curs_set(0) - makes cursor not visible

  // screen setup
  halfdelay(1); // make getch return after 1/10 of a second, even if no character typed
  keypad(stdscr, TRUE); // enable use of arrow keys.

  width = COLS;
  height = LINES;

  // setup world, players
  x = 2;
  y = height - 2;  
  vy = 0;  
  delta_us = 100000; // microsec to delay, .1s
  g = 10;          // gravity, #rows down per sec

  coins = 0; lives = 3;

  // copy from world1 into world, one line at a time
  world_h = world_w = 0;
  int begin = 0, end = 0; // current line reading in world1
  while (world1[end]) {
    if (world1[end] == '\n') { // copy over when see \n
      world[world_h] = (char *) malloc(sizeof(char) * (end - begin + 1)); // space for the line
      strncpy(world[world_h], world1+begin, end-begin); // copy the line
      world[world_h][end-begin] = '\0';
      if (end - begin > world_w) world_w = end-begin;
      begin = end+1; // next line starts at next spot
      world_h++;
    }
    end++;
    if (world_h >= 100) break;
  }
}

void cleanup() {
  endwin();
  refresh();
}

*/