ECE2035 Project 2

Dependencies:   mbed mbed-rtos SDFileSystem

Committer:
kwengryn3
Date:
Tue Apr 20 18:15:22 2021 +0000
Revision:
10:1994adcfc86f
Parent:
9:f1d34ef049c5
adv features

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kwengryn3 0:bff8b9020128 1 //=================================================================
kwengryn3 0:bff8b9020128 2 // The file is for module "compost pile"
kwengryn3 0:bff8b9020128 3 //
kwengryn3 0:bff8b9020128 4 // Copyright 2020 Georgia Tech. All rights reserved.
kwengryn3 0:bff8b9020128 5 // The materials provided by the instructor in this course are for
kwengryn3 0:bff8b9020128 6 // the use of the students currently enrolled in the course.
kwengryn3 0:bff8b9020128 7 // Copyrighted course materials may not be further disseminated.
kwengryn3 0:bff8b9020128 8 // This file must not be made publicly available anywhere.
kwengryn3 0:bff8b9020128 9 //==================================================================
kwengryn3 0:bff8b9020128 10
kwengryn3 0:bff8b9020128 11 #include "compost_pile_private.h"
kwengryn3 5:b9b7993823e1 12 #define MAX_PILE_HEIGHT 4
kwengryn3 5:b9b7993823e1 13 #include "globals.h"
kwengryn3 5:b9b7993823e1 14 #include "graphics.h"
kwengryn3 4:8e15742ebcc6 15
kwengryn3 5:b9b7993823e1 16 COMPOST compost_record[NUM_PILE];
kwengryn3 5:b9b7993823e1 17 int tallest_pile_height;
kwengryn3 5:b9b7993823e1 18
kwengryn3 5:b9b7993823e1 19
kwengryn3 5:b9b7993823e1 20
kwengryn3 0:bff8b9020128 21
kwengryn3 0:bff8b9020128 22
kwengryn3 0:bff8b9020128 23 // See the comments in compost_pile_public.h
kwengryn3 0:bff8b9020128 24 void compost_pile_init() {
kwengryn3 5:b9b7993823e1 25 int x = 0;
kwengryn3 4:8e15742ebcc6 26 for (int i = 0; i < NUM_PILE; i++) {
kwengryn3 5:b9b7993823e1 27 compost_record[i].width = PILE_WIDTH;
kwengryn3 5:b9b7993823e1 28 compost_record[i].height = 0;
kwengryn3 5:b9b7993823e1 29 compost_record[i].box.topLeft.x = x;
kwengryn3 5:b9b7993823e1 30 compost_record[i].box.topLeft.y = 127;
kwengryn3 5:b9b7993823e1 31 compost_record[i].box.bottomRight.x = x + PILE_WIDTH;
kwengryn3 5:b9b7993823e1 32 compost_record[i].box.bottomRight.y = 127;
kwengryn3 5:b9b7993823e1 33 //pc.printf("(%d, %d)\n",compost_record[i].box.bottomRight.x, 127);
kwengryn3 5:b9b7993823e1 34 x += PILE_WIDTH + 1;
kwengryn3 4:8e15742ebcc6 35 }
kwengryn3 5:b9b7993823e1 36 tallest_pile_height = 0;
kwengryn3 5:b9b7993823e1 37 draw_compost();
kwengryn3 5:b9b7993823e1 38
kwengryn3 4:8e15742ebcc6 39
kwengryn3 0:bff8b9020128 40
kwengryn3 0:bff8b9020128 41 }
kwengryn3 0:bff8b9020128 42
kwengryn3 5:b9b7993823e1 43 COMPOST compost_get_info(int index){
kwengryn3 4:8e15742ebcc6 44 return compost_record[index];
kwengryn3 0:bff8b9020128 45 }
kwengryn3 0:bff8b9020128 46
kwengryn3 5:b9b7993823e1 47 int get_num_piles() {
kwengryn3 5:b9b7993823e1 48 return NUM_PILE;
kwengryn3 5:b9b7993823e1 49 }
kwengryn3 5:b9b7993823e1 50
kwengryn3 0:bff8b9020128 51 void compost_add(int index) {
kwengryn3 5:b9b7993823e1 52 compost_record[index].height++;
kwengryn3 5:b9b7993823e1 53 compost_record[index].box.topLeft.y = 127 - (PILE_WIDTH * compost_record[index].height);
kwengryn3 5:b9b7993823e1 54 if (compost_record[index].height > tallest_pile_height) {
kwengryn3 5:b9b7993823e1 55 tallest_pile_height = compost_record[index].height;
kwengryn3 4:8e15742ebcc6 56 }
kwengryn3 0:bff8b9020128 57
kwengryn3 0:bff8b9020128 58 }
kwengryn3 0:bff8b9020128 59
kwengryn3 5:b9b7993823e1 60 void draw_compost(){
kwengryn3 5:b9b7993823e1 61 for (int i = 0; i < NUM_PILE; i++) {
kwengryn3 5:b9b7993823e1 62 uLCD.filled_rectangle(compost_record[i].box.topLeft.x, compost_record[i].box.topLeft.y, compost_record[i].box.bottomRight.x, compost_record[i].box.bottomRight.y, COMPOST_COLOR);
kwengryn3 5:b9b7993823e1 63 }
kwengryn3 5:b9b7993823e1 64
kwengryn3 5:b9b7993823e1 65 }
kwengryn3 5:b9b7993823e1 66
kwengryn3 0:bff8b9020128 67 int get_compost_tallest_height() {
kwengryn3 5:b9b7993823e1 68 return tallest_pile_height;
kwengryn3 0:bff8b9020128 69
kwengryn3 0:bff8b9020128 70 }
kwengryn3 0:bff8b9020128 71
kwengryn3 0:bff8b9020128 72 int get_compost_height(int index) {
kwengryn3 5:b9b7993823e1 73 return compost_record[index].height;
kwengryn3 4:8e15742ebcc6 74 }
kwengryn3 0:bff8b9020128 75
kwengryn3 5:b9b7993823e1 76 bool check_overflow() {
kwengryn3 5:b9b7993823e1 77 return (tallest_pile_height > MAX_PILE_HEIGHT);
kwengryn3 5:b9b7993823e1 78
kwengryn3 5:b9b7993823e1 79 }
kwengryn3 5:b9b7993823e1 80
kwengryn3 9:f1d34ef049c5 81 void remove_tallest_pile() {
kwengryn3 9:f1d34ef049c5 82 int new_tallest = 0;
kwengryn3 9:f1d34ef049c5 83 for (int i = 0; i < NUM_PILE; i++) {
kwengryn3 9:f1d34ef049c5 84 if (get_compost_height(i) == tallest_pile_height) {
kwengryn3 9:f1d34ef049c5 85 uLCD.filled_rectangle(compost_record[i].box.topLeft.x, compost_record[i].box.topLeft.y, compost_record[i].box.bottomRight.x, compost_record[i].box.bottomRight.y, BLACK);
kwengryn3 9:f1d34ef049c5 86 compost_record[i].height = 0;
kwengryn3 9:f1d34ef049c5 87 compost_record[i].box.topLeft.y = 127;
kwengryn3 9:f1d34ef049c5 88 }
kwengryn3 9:f1d34ef049c5 89
kwengryn3 9:f1d34ef049c5 90 if (compost_record[i].height > new_tallest) {
kwengryn3 9:f1d34ef049c5 91 new_tallest = compost_record[i].height;
kwengryn3 9:f1d34ef049c5 92 }
kwengryn3 9:f1d34ef049c5 93 }
kwengryn3 9:f1d34ef049c5 94
kwengryn3 9:f1d34ef049c5 95 tallest_pile_height = new_tallest;
kwengryn3 9:f1d34ef049c5 96
kwengryn3 9:f1d34ef049c5 97
kwengryn3 9:f1d34ef049c5 98 }
kwengryn3 9:f1d34ef049c5 99