int SetAbsolutePosition(lua_State *L) { GraphObject2D *Target = GetObjectFromState<GraphObject2D>(L, "Target"); Vec2 NewPos(luaL_checknumber(L, 1), luaL_checknumber(L, 2)); Target->SetPosition(NewPos); return 0; }
void VisualObject::SetPos( Vec2i _pos ) { pos = _pos; Redraw(); NewPos( pos ); }
LRESULT WINAPI WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { if(g_WndProcContext == NULL) { return DefWindowProc( hWnd, msg, wParam, lParam ); } switch( msg ) { case WM_SYSCOMMAND: // Intercept System Commands { switch (wParam) // Check System Calls { case SC_SCREENSAVE: // Screensaver Trying To Start? case SC_MONITORPOWER: // Monitor Trying To Enter Powersave? return 0; // Prevent From Happening } break; // Exit } case WM_CLOSE: PostQuitMessage(0); //Kill the current window break; case WM_KEYDOWN: switch( wParam ) //key pressed { case VK_ESCAPE: //PostQuitMessage(0); //if escape pressed, exit break; default: g_WndProcContext->SetKeyState(wParam, true); break; } break; case WM_KEYUP: g_WndProcContext->SetKeyState(wParam, false); break; case WM_COMMAND: if ( 0 == HIWORD(wParam) ) { g_WndProcContext->PushEvent(InputEvent(InputEventMenu, wParam)); //PostQuitMessage(0); } break; case WM_SYSKEYDOWN: // Alt key pressed if ((TCHAR)wParam == KEY_ENTER) { g_WndProcContext->SetKeyState(KEY_ALT_ENTER, true); return NULL; } break; case WM_SYSKEYUP: // Alt key pressed if ((TCHAR)wParam == KEY_ENTER) { g_WndProcContext->SetKeyState(KEY_ALT_ENTER, false); return NULL; } break; case WM_LBUTTONDOWN: g_WndProcContext->SetMouseState(MouseButtonLeft, true); break; case WM_LBUTTONUP: g_WndProcContext->SetMouseState(MouseButtonLeft, false); break; case WM_RBUTTONDOWN: g_WndProcContext->SetMouseState(MouseButtonRight, true); break; case WM_RBUTTONUP: g_WndProcContext->SetMouseState(MouseButtonRight, false); break; case WM_MBUTTONDOWN: g_WndProcContext->SetMouseState(MouseButtonMiddle, true); break; case WM_MBUTTONUP: g_WndProcContext->SetMouseState(MouseButtonMiddle, false); break; case WM_MOUSEMOVE: { POINTS P = MAKEPOINTS(lParam); Vec2i NewPos(P.x, P.y); g_WndProcContext->UpdateMousePos(NewPos); } break; case WM_MOUSEWHEEL: g_WndProcContext->UpdateWheelState(GET_WHEEL_DELTA_WPARAM(wParam)); break; case WM_SIZING: { /*double Ratio = g_WndProcContext->GetWindowManager().CastWindows().FixedAspectRatio(); if(Ratio > 0.0) { RECT ScreenRect; GetWindowRect(GetDesktopWindow(), &ScreenRect); RECT *Rect = (RECT *)lParam; Vec2f BorderDimensions = g_WndProcContext->GetWindowManager().CastWindows().GetBorderDimensions(); //Console::WriteLine(BorderDimensions.CommaSeperatedString()); Vec2f ProposedDimensions = Vec2f(float(Rect->right - Rect->left), float(Rect->bottom - Rect->top)) - BorderDimensions; float NewWidth = float(ProposedDimensions.y / Ratio + BorderDimensions.x); float NewHeight = float(ProposedDimensions.x * Ratio + BorderDimensions.y); if(NewHeight > ScreenRect.bottom) { NewHeight = float(ScreenRect.bottom); NewWidth = float(ProposedDimensions.y / Ratio + BorderDimensions.x); Rect->right = Rect->left + Math::Round(NewWidth); } switch(wParam) { case WMSZ_BOTTOM: Rect->right = Rect->left + Math::Round(NewWidth); break; case WMSZ_LEFT: case WMSZ_TOPLEFT: case WMSZ_TOPRIGHT: Rect->top = Rect->bottom - Math::Round(NewHeight); break; case WMSZ_RIGHT: case WMSZ_BOTTOMRIGHT: case WMSZ_BOTTOMLEFT: Rect->bottom = Rect->top + Math::Round(NewHeight); break; case WMSZ_TOP: Rect->left = Rect->right - Math::Round(NewWidth); break; } return TRUE; }*/ } break; //Console::WriteLine(String(wParam) + " " + String(lParam)); } return DefWindowProc( hWnd, msg, wParam, lParam ); //return handling of command to main }
void Player::AddTail() { tailAmount++; Position PosStart; Direction Direct; Tail NewTail; pair<Direction, Position> NewTurn; if(tails.empty()==false) { PosStart=tails.back().GetPos(); Direct=tails.back().GetDirect(); NewTail.turns=tails.back().GetTurns(); }else { PosStart=pos; Direct=direct; } Position NewPos(0,0); switch(Direct) { case Up: NewPos.y=PosStart.y+1; NewPos.x=PosStart.x; if(Game::display.isValidPosition(NewPos)==false) // Can't go down one { NewPos.y=PosStart.y; NewPos.x=PosStart.x-1; if(Game::display.isValidPosition(NewPos)==false) // Can't go left, So go Right { NewPos.y=PosStart.y; NewPos.x=PosStart.x+1; NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); Direct=Left; }else { NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); Direct=Right; } } break; case Down: NewPos.y=PosStart.y-1; NewPos.x=PosStart.x; if(Game::display.isValidPosition(NewPos)==false) // Can't go up { NewPos.y=PosStart.y; // Try Left NewPos.x=PosStart.x-1; if(Game::display.isValidPosition(NewPos)==false) // Can't go left So Go Right { NewPos.y=PosStart.y; NewPos.x=PosStart.x+1; NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); Direct=Left; }else // Go Left { NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); // Add a turn so it joins back with the tail correctly Direct=Right; } } break; case Left: NewPos.y=PosStart.y; NewPos.x=PosStart.x+1; if(Game::display.isValidPosition(NewPos)==false) // Can't go Right { NewPos.y=PosStart.y-1; // Try Up NewPos.x=PosStart.x; if(Game::display.isValidPosition(NewPos)==false) // Can't go up, so go down { NewPos.y=PosStart.y+1; NewPos.x=PosStart.x; NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); Direct=Up; }else // Go Up { NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); // Add a turn so it joins back with the tail correctly Direct=Down; } } break; case Right: NewPos.y=PosStart.y; NewPos.x=PosStart.x-1; if(Game::display.isValidPosition(NewPos)==false) // Can't go Left { NewPos.y=PosStart.y-1; // Try Up NewPos.x=PosStart.x; if(Game::display.isValidPosition(NewPos)==false) // Can't go up, so go down { NewPos.y=PosStart.y+1; NewPos.x=PosStart.x; NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); Direct=Up; }else // Go Up { NewTurn.second=PosStart; NewTurn.first=Direct; NewTail.AddTurn(NewTurn); // Add a turn so it joins back with the tail correctly Direct=Down; } } break; } NewTail.SetTailPos(NewPos); NewTail.SetTailDirect(Direct); Game::display.SetPos(NewPos, snakeGraphic_); tails.push_back(NewTail); return; }