]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/life/game.h
implementing delayed freezing, fixes #12865
[wxWidgets.git] / demos / life / game.h
index 8605e51376beff5be83fa9e8034938007c7504c9..a95dae26567da20f5d20eac9304ab66821174d53 100644 (file)
 #ifndef _LIFE_GAME_H_
 #define _LIFE_GAME_H_
 
-#if defined(__GNUG__) && !defined(__APPLE__)
-    #pragma interface "game.h"
-#endif
-
-// for compilers that support precompilation, includes "wx/wx.h"
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-    #pragma hdrstop
-#endif
-
-// for all others, include the necessary headers
-#ifndef WX_PRECOMP
-    #include "wx/wx.h"
-#endif
-
 // --------------------------------------------------------------------------
 // LifePattern
 // --------------------------------------------------------------------------
@@ -47,8 +31,8 @@ public:
         m_rules       = rules;
         m_shape       = shape;
     };
-    
-    // A more convenient ctor for the built-in samples    
+
+    // A more convenient ctor for the built-in samples
     LifePattern(wxString      name,
                 wxString      description,
                 int           width,
@@ -57,10 +41,24 @@ public:
     {
         m_name        = name;
         m_description = description;
-        m_rules       = _("");
-        m_shape.Add( wxString::Format("%i %i", -width/2, -height/2) );
+        m_rules       = wxEmptyString;
+        // TODO: add the positions later, since the formatting command
+        // causes a crash due to conversion objects not being available
+        // during initialisation.
+#ifndef __WXMAC__
+        m_shape.Add( wxString::Format(wxT("%i %i"), -width/2, -height/2) );
+#endif
         for(int j = 0; j < height; j++)
-            m_shape.Add( wxString(shape + (j * width), (size_t) width) );        
+        {
+            wxString tmp;
+
+            for(int i = 0; i < width; i++)
+            {
+                tmp += wxChar(shape[j * width + i]);
+            }
+
+            m_shape.Add( tmp );
+        }
     };
 
     wxString      m_name;
@@ -79,7 +77,7 @@ struct LifeCell
 {
     wxInt32 i;
     wxInt32 j;
-};       
+};
 
 // A private class that contains data about a block of cells
 class LifeCellBox;
@@ -97,7 +95,7 @@ public:
     inline wxString GetRules() const       { return m_rules; };
     inline wxString GetDescription() const { return m_description; };
     bool IsAlive(wxInt32 x, wxInt32 y);
-    void SetCell(wxInt32 x, wxInt32 y, bool alive = TRUE);
+    void SetCell(wxInt32 x, wxInt32 y, bool alive = true);
     void SetPattern(const LifePattern &pattern);
 
     // game control
@@ -114,7 +112,7 @@ public:
     // The following functions find cells within a given viewport; either
     // all alive cells, or only those cells which have changed since last
     // generation. You first call BeginFind() to specify the viewport,
-    // then keep calling FindMore() until it returns TRUE.
+    // then keep calling FindMore() until it returns true.
     //
     // BeginFind:
     //  Specify the viewport and whether to look for alive cells or for
@@ -126,7 +124,7 @@ public:
     //  Fills an array with cells that match the specification given with
     //  BeginFind(). The array itself belongs to the Life object and must
     //  not be modified or freed by the caller. If this function returns
-    //  FALSE, then the operation is not complete: just process all cells
+    //  false, then the operation is not complete: just process all cells
     //  and call FillMore() again.
     //
     void BeginFind(wxInt32 x0, wxInt32 y0,
@@ -137,7 +135,7 @@ public:
 private:
     // cellbox-related
     LifeCellBox *CreateBox(wxInt32 x, wxInt32 y, wxUint32 hv);
-    LifeCellBox *LinkBox(wxInt32 x, wxInt32 y, bool create = TRUE);
+    LifeCellBox *LinkBox(wxInt32 x, wxInt32 y, bool create = true);
     void KillBox(LifeCellBox *c);
 
     // helper for BeginFind & FindMore