Browse Source

Trying to optimize less obj construct/destruct.

Steve Thielemann 3 years ago
parent
commit
094082b8e8
4 changed files with 29 additions and 50 deletions
  1. 7 0
      deck.cpp
  2. 1 0
      deck.h
  3. 7 38
      main.cpp
  4. 14 12
      play.cpp

+ 7 - 0
deck.cpp

@@ -214,6 +214,13 @@ std::string Deck::backSymbol(int level) {
   return c;
 }
 
+void Deck::setBack(door::ANSIColor backColor) {
+  for (auto &back : backs) {
+    back->lineSetBack(backColor);
+  }
+  card_back_color = backColor;
+}
+
 shared_panel Deck::backOf(int level) {
   // using: \xb0, 0xb1, 0xb2, 0xdb
   // OR:    \u2591, \u2592, \u2593, \u2588

+ 1 - 0
deck.h

@@ -136,6 +136,7 @@ public:
 
   ~Deck();
 
+  void setBack(door::ANSIColor backcolor);
   int getRank(int c);
   int getSuit(int c);
   int getDeck(int c);

+ 7 - 38
main.cpp

@@ -283,6 +283,8 @@ int main(int argc, char *argv[]) {
   // center the help box
   help.set((mx - 60) / 2, (my - 15) / 2);
 
+  PlayCards pc(door, spacedb, rng);
+
   int r = 0;
   while ((r >= 0) and (r != 6)) {
     // starfield + menu ?
@@ -295,51 +297,19 @@ int main(int argc, char *argv[]) {
     switch (r) {
     case 1: // play game
     {
-      PlayCards pc(door, spacedb, rng);
+      // PlayCards pc(door, spacedb, rng);
       r = pc.play();
       // r = play_cards(door, spacedb, rng);
     }; break;
 
     case 2: // view scores
-    {
-      // door << door::cls;
-      Scores score(door, spacedb);
-
-      score.display_scores(door);
-      r = press_a_key(door);
-      break;
-
-      display_starfield(door, rng);
-      door << door::Goto(1, 2);
-
-      auto monthly_scores = spacedb.getMonthlyScores(10);
-      if (!monthly_scores.empty()) {
-        door << "The TOP monthly Scores:" << door::nl;
-      }
-      for (auto it : monthly_scores) {
-        time_t date = it.date;
-        std::string nice_date = convertDateToMonthlyFormat(date);
-        door << nice_date << " " << std::setw(18) << it.user << " " << it.score
-             << door::nl;
-      }
-      door << door::nl;
-
-      // I probably want JUST the top 10 here!
-
-      auto all_scores = spacedb.getScores();
-      if (!all_scores.empty()) {
-        door << "The Top Scores for this Month:" << door::nl;
-      }
 
-      for (auto it : all_scores) {
+      // door << door::cls;
+      {
+        Scores score(door, spacedb);
 
-        std::string nice_date = convertDateToDateScoreFormat(it.date);
-        door << "  *** " << nice_date << setw(15) << it.user << " " << it.won
-             << " " << it.score << door::nl;
+        score.display_scores(door);
       }
-      door << "====================" << door::nl;
-    }
-
       r = press_a_key(door);
       break;
 
@@ -364,7 +334,6 @@ int main(int argc, char *argv[]) {
       break;
     }
   }
-
   if (r < 0) {
     // TIMEOUT:
     if (r == -1) {

+ 14 - 12
play.cpp

@@ -152,18 +152,17 @@ int PlayCards::play(void) {
     }
   }
 
-  // Ok, we need to select a day.
+// Ok, we need to select a day.
+// calendar = make_calendar();
 
-  std::unique_ptr<door::Screen> calendar = make_calendar();
-
-  if (false) {
-  CALENDAR_UPDATE:
-    if (get_logger) {
-      get_logger() << "update calendar days" << std::endl;
-    }
-    update_calendar_days();
-    calendar->update();
+// if (false) {
+CALENDAR_UPDATE:
+  if (get_logger) {
+    get_logger() << "update calendar days" << std::endl;
   }
+  update_calendar_days();
+  calendar->update();
+  //}
 
   if (cls_display_starfield)
     cls_display_starfield();
@@ -277,14 +276,17 @@ int PlayCards::play_cards(void) {
   spaceAceTriPeaks->set(tp_off_x, off_y);
   off_y += 3; // adjust for tripeaks panel
 
+  std::string currentDefault = db.getSetting("DeckColor", "ALL");
+
 next_hand:
   // Make sure we pick the deck color here.  We want it to (possibly) change
   // between hands.
-  std::string currentDefault = db.getSetting("DeckColor", "ALL");
+
   get_logger() << "DeckColor shows as " << currentDefault << std::endl;
   deck_color = stringToANSIColor(currentDefault);
 
-  dp = Deck(deck_color);
+  dp.setBack(deck_color);
+  // dp = Deck(deck_color);
 
   play_card = 28;
   select_card = 23;