Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

palm/minimap.c

Go to the documentation of this file.
00001 
00007 #include <minimap.h>
00008 #include <zakdef.h>
00009 #include <globals.h>
00010 #include <simcity.h>
00011 #include <ui.h>
00012 #include <logging.h>
00013 #include <resCompat.h>
00014 #include <UIColor.h>
00015 
00017 static struct minimap {
00018         RectangleType rect; 
00019         RectangleType rout; 
00021         Int8 showing:1; 
00022         Int8 detailed:1; 
00023 } minimap;
00024 
00025 Int8
00026 minimapGetShowing(void)
00027 {
00028         return (minimap.showing);
00029 }
00030 
00031 void
00032 minimapSetShowing(Int8 show)
00033 {
00034         minimap.showing = show ? 1 : 0;
00035 }
00036 
00037 Int8
00038 minimapGetDetailed(void)
00039 {
00040         return (minimap.detailed);
00041 }
00042 
00043 void
00044 minimapSetDetailed(Int8 detailed)
00045 {
00046         minimap.detailed = detailed ? 1 : 0;
00047 }
00048 
00049 void
00050 minimapPlace(RectangleType *pos)
00051 {
00052         MemMove(&minimap.rect, pos, sizeof (RectangleType));
00053 
00054         if (minimap.rect.extent.x != 0 && minimap.rect.extent.y != 0) {
00055                 minimap.rout.extent.x = (Coord)((Int32)minimap.rect.extent.x *
00056                     getVisibleX() / getMapWidth());
00057                 minimap.rout.extent.y = (Coord)((Int32)minimap.rect.extent.y *
00058                     getVisibleY() / getMapHeight());
00059         }
00060 }
00061 
00062 void
00063 minimapIntersect(const RectangleType *other, RectangleType *dest)
00064 {
00065         RctGetIntersection(&minimap.rect, other, dest);
00066 }
00067 
00068 
00069 void
00070 minimapPaint(void)
00071 {
00072         if (!minimap.showing) return;
00073 
00074         WinEraseRectangle(&minimap.rect, 0);
00075         minimap.rout.topLeft.x = (Coord)(minimap.rect.topLeft.x +
00076             (Int32)getMapXPos() * minimap.rect.extent.x / getMapWidth());
00077         minimap.rout.topLeft.y = (Coord)(minimap.rect.topLeft.y +
00078             (Int32)getMapYPos() * minimap.rect.extent.y / getMapHeight());
00079         WriteLog("Minimap rect = (%d,%d) -> (%d,%d)\n",
00080             (int)minimap.rout.topLeft.x, (int)minimap.rout.topLeft.y,
00081             (int)minimap.rout.extent.x, (int)minimap.rout.extent.y);
00082         WinDrawRectangle(&minimap.rout, 0);
00083 }
00084 
00085 Int8
00086 minimapIsTapped(PointType *point, PointType *percentage)
00087 {
00088         if (!minimap.showing) return (0);
00089         if (RctPtInRectangle(point->x, point->y, &minimap.rect)) {
00090                 percentage->x = (Coord)(((Int32)point->x -
00091                     minimap.rect.topLeft.x) * 100 /
00092                     minimap.rect.extent.x);
00093                 percentage->y = (Coord)(((Int32)point->y -
00094                     minimap.rect.topLeft.y) * 100 /
00095                     minimap.rect.extent.y);
00096                 return (1);
00097         }
00098         return (0);
00099 }

Generated on Mon Aug 30 19:44:15 2004 for pocketcity by doxygen1.2.18