void Init() { // Set the map to default g_Map.SetDefault(); // By default set the current tile type to map tiles g_Map.SetCurrentType(TILE_TYPE); // Set our current map to .... our current map :) g_pCurrentMap = &g_Map; }
void Init(HWND hWnd) { // Set our global window handle to our main window g_hWnd = hWnd; // Create our double buffering for each window g_Buffer.CreateDoubleBuffering(hWnd); g_ToolBuffer.CreateDoubleBuffering(g_hWndTool); // Set the map to default g_Map.SetDefault(); // Load the tiles into the global lists and then get the scroll bar max scroll position g_ScrollInfo.nMax = LoadTiles(); // By default set the current tile type to map tiles g_Map.SetCurrentType(TILE_TYPE); // Set our current map to .... our current map :) g_pCurrentMap = &g_Map; // Initialize the scroll bar information g_ScrollInfo.cbSize = sizeof(SCROLLINFO); g_ScrollInfo.nMin = 0; g_ScrollInfo.nPage = 1; g_ScrollInfo.fMask = SIF_PAGE | SIF_RANGE; SetScrollInfo(g_hWndTool, SB_VERT, &g_ScrollInfo, FALSE); //////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// // Here we initialize our open file information g_OpenInfo.lStructSize = sizeof(OPENFILENAME); // Set the size of the structure g_OpenInfo.nMaxFile = MAX_PATH; // Set the max characters for a file name g_OpenInfo.lpstrFile = g_szFileName; // Give a string to store the file name g_OpenInfo.lpstrFilter = "Map Files (*.map)\0*.map"; // Only accept .map files to load g_OpenInfo.hwndOwner = g_hWndTool; // Assign the window owner and give it desired flags g_OpenInfo.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR; //////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// // Here we set the current pen to red for drawing our exit rectangles g_Buffer.SetPen(PS_SOLID,2,RGB(255,0,0)); // Set the backbuffer to black first (This clears the backbuffer) g_Buffer.ClearScreen(BLACK_BRUSH); g_ToolBuffer.ClearScreen(BLACK_BRUSH); }
void Init() { // This is where we create the image of our character, a brown @ symbol CHAR_INFO playerImage = {'@', FOREGROUND_RED | FOREGROUND_GREEN}; // Initialize our player with it's image and position g_Player.Init(playerImage, kPlayerStartX, kPlayerStartY); // Init the map and load the first map. Then set the flag that tells // the map's Draw() function to draw that frame. We don't want to draw // every frame, but only when something happens. g_Map.SetDefault(); g_Map.Load(kStartMap); g_Map.SetDrawFlag(true); }
void Init(HWND hWnd) { // Set our global window handle to our main window g_hWnd = hWnd; // Create our double buffering for each window g_Buffer.CreateDoubleBuffering(hWnd); g_ToolBuffer.CreateDoubleBuffering(g_hWndTool); // Set the map to default g_Map.SetDefault(); // Load the tiles into the global lists and then get the scroll bar max scroll position g_ScrollInfo.nMax = LoadTiles(); // By default set the current tile type to map tiles g_Map.SetCurrentType(TILE_TYPE); // Set our current map to .... our current map :) g_pCurrentMap = &g_Map; // Initialize the scroll bar information g_ScrollInfo.cbSize = sizeof(SCROLLINFO); g_ScrollInfo.nMin = 0; g_ScrollInfo.nPage = 1; g_ScrollInfo.fMask = SIF_PAGE | SIF_RANGE; SetScrollInfo(g_hWndTool, SB_VERT, &g_ScrollInfo, FALSE); //////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// // Here we set the current pen to red for drawing our exit rectangles g_Buffer.SetPen(PS_SOLID,2,RGB(255,0,0)); //////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// // Set the backbuffer to black first (This clears the backbuffer) g_Buffer.ClearScreen(BLACK_BRUSH); g_ToolBuffer.ClearScreen(BLACK_BRUSH); }
void HandleMenu(int menuID) { if(menuID == ID_FILE_QUIT) // If the user chose File->Quit { PostQuitMessage(0); // Quit the program } //////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// else if(menuID == ID_FILE_OPENUP) // If the user chose File->Open { // Have windows bring up the Open File dialog box and Load the file chosen if(GetOpenFileName(&g_OpenInfo)) g_Map.Load(g_OpenInfo.lpstrFile); } else if(menuID == ID_FILE_SAVEIT) // If the user chose File->Save { // If we have a n valid name for our map already, do a normal save if(strlen(g_Map.GetMapName()) > 3) g_Map.Save(g_Map.GetMapName()); else { // If haven't given our map a name yet, do a "SaveAs" and bring up the save dlg box if(GetSaveFileName(&g_OpenInfo)) g_Map.Save(g_OpenInfo.lpstrFile); } } else if(menuID == ID_FILE_SAVEAS) // If the user chose File->SaveAs { // Bring up the save dlg box and allow the user to type in a new map name and save it if(GetSaveFileName(&g_OpenInfo)) g_Map.Save(g_OpenInfo.lpstrFile); } //////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// else if(menuID == ID_FILE_RESET) // If the user chose File->Reset g_Map.SetDefault(); // Destroy all the tiles on the map and start over else if(menuID == ID_TILES_TILES) // If the user chose Tiles->Tiles g_Map.SetCurrentType(TILE_TYPE); // Set the tool bar tile type to tiles else if(menuID == ID_TILES_ITEMS) // If the user chose Tiles->Items g_Map.SetCurrentType(ITEM_TYPE); // Set the tool bar tile type to items else if(menuID == ID_TILES_MONSTERS) // If the user chose Tiles->Monsters g_Map.SetCurrentType(MONSTER_TYPE); // Set the tool bar tile type to monsters else if(menuID == ID_TILES_CITIZENS) // If the user chose Tiles->Citizens g_Map.SetCurrentType(NPC_TYPE); // Set the tool bar tile type to citizens else if(menuID == ID_TILES_EXITS) // If the user chose Tiles->Exits g_Map.SetCurrentType(EXIT_TYPE); // Set the tool bar tile type to exits (no tiles of course) else if(menuID == ID_HELP_ABOUT) // If the user chose Help->About // Instead of creating a help dialog box, we can just use a simple system MessageBox() call MessageBox(g_hWnd, "www.GameTutorials.com Map Editor\n\n" "\t- Choose the desired tile type from the Tiles menu,\n" "\t then click on a tile in the tile window. You can\n" "\t then draw the tiles on the map with the left mouse button.\n\n" "\t- Right click to remove the current cursor tile.\n\n" "\t- To delete a item:monster:citizen:exit, make sure you choose\n" "\t that type from the menu, then right click on the tile.\n\n" "\t- When setting an exit you can hold down shift to place more exits.\n" "\t Once you place an exit without holding the shift key you will be\n" "\t prompted to choose the destination map. Then place one tile for\n" "\t the position where the character will end up.\n\n" "\t- Hit Esc to quit the program.", "About", MB_OK | MB_ICONINFORMATION); // Over assuming that a tile type was changed, reset the scroll bar size. // The -1 is because the tool bar window's title size offsets it a bit (being smaller). g_ScrollInfo.nMax = g_Map.GetCurrentTypeSize() - MAP_HEIGHT - 1; // If there isn't enough (or any) tiles to fill up the tool bar window, disable the scroll bar if(g_ScrollInfo.nMax < 0) { g_ScrollInfo.nMax = 0; EnableScrollBar(g_hWndTool, SB_VERT, ESB_DISABLE_BOTH); } else EnableScrollBar(g_hWndTool, SB_VERT, ESB_ENABLE_BOTH); // Enable the scroll bar if it's needed // Reset the scroll bar info g_scrollBarPosY = 0; g_ScrollInfo.nPage = 0; // Update the current scroll bar information with no need to redraw (FALSE) SetScrollInfo(g_hWndTool, SB_VERT, &g_ScrollInfo, FALSE); ShowScrollBar(g_hWndTool, SB_VERT, TRUE); // If we chose a tile type, put a check box next to it switch(menuID) { case ID_TILES_TILES: case ID_TILES_ITEMS: case ID_TILES_MONSTERS: case ID_TILES_CITIZENS: case ID_TILES_EXITS: g_pCursorTile = NULL; CheckTileType(menuID); break; } }