int main(int argc, char *argv[], char *env[]) { // Setup basic variables int isRunning = 1; findHomeDirectory(env); while (isRunning) { char *cmd, *arg; // reset line memset(line, 0, sizeof(line)); // get input printf("Command? "); scanf(" %[^\n]", line); commandProcessor(env); } return 0; }
void specKeyPressed(DWORD key, bool pressed) { switch (key) { case VK_F6: { chatWrite = !chatWrite; PLAYER::SET_PLAYER_CONTROL(PLAYER::PLAYER_ID(), !chatWrite, 0); break; } case VK_F7: { chatEnabled = !chatEnabled; break; } case VK_BACK: { if (!chatWrite) break; if (cursorPos > 0) { curChatText.erase(curChatText.begin() + (cursorPos - 1), curChatText.begin() + cursorPos); cursorPos--; } break; } case VK_DELETE: { if (!chatWrite) break; if (cursorPos < curChatText.size()) { curChatText.erase(curChatText.begin() + cursorPos, curChatText.begin() + cursorPos + 1); } break; } case VK_RETURN: { if (!chatWrite) break; if (curChatText.size()) { if (curChatText[0] == '/') { if (!commandProcessor(curChatText)) sendPlayerMessage("Unknown command", 125, 0, 0); } else sendPlayerMessage(SOCIALCLUB::_SC_GET_NICKNAME() + string(": ") + curChatText, 255, 255, 255); chatHistory.push_back(curChatText); historyPos = -1; curChatText = string(""); cursorPos = 0; } chatWrite = false; PLAYER::SET_PLAYER_CONTROL(PLAYER::PLAYER_ID(), !chatWrite, 0); break; } case 0x57: { if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LATITUDE, (float)1.0); playerObject->PointCam(playerCam); } break; } case 0x53: { if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LATITUDE, (float)-1.0); playerObject->PointCam(playerCam); } break; } case 0x41: { if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LONGTITUDE, (float)-1.0); playerObject->PointCam(playerCam); } break; } case 0x44: { if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LONGTITUDE, (float)1.0); playerObject->PointCam(playerCam); } break; } case VK_LEFT: { if (chatWrite && cursorPos > 0) cursorPos--; else if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LONGTITUDE, (float)-1.0); playerObject->PointCam(playerCam); } break; } case VK_RIGHT: { if (chatWrite && cursorPos < curChatText.size()) { cursorPos++; } else if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LONGTITUDE, (float)1.0); playerObject->PointCam(playerCam); } break; } case VK_UP: { if (chatWrite && chatHistory.size()) { if (historyPos < (chatHistory.size() - 1) || historyPos == -1) { historyPos++; curChatText = chatHistory[chatHistory.size() - historyPos - 1]; cursorPos = (int)curChatText.size(); } } else if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LATITUDE, (float)1.0); playerObject->PointCam(playerCam); } break; } case VK_DOWN: { if (chatWrite && chatHistory.size()) { if (historyPos > 0) { historyPos--; curChatText = chatHistory[chatHistory.size() - historyPos - 1]; cursorPos = (int)curChatText.size(); } else if (historyPos == 0) { historyPos = -1; curChatText = ""; cursorPos = 0; } } else if (objectEditor) { lil::Object::RotateCam(lil::CAM_PARAM::LATITUDE, (float)-1.0); playerObject->PointCam(playerCam); } break; } case VK_PRIOR: { if (!objectEditor) break; if ((lil::Object::distance - ((controlPressed) ? 1.0f : .01f)) < 0) lil::Object::distance = 0.0; else lil::Object::distance -= ((controlPressed) ? 1.0f : .01f); playerObject->PointCam(playerCam); break; } case VK_NEXT: { if (!objectEditor) break; lil::Object::distance += ((controlPressed) ? 1.0f : .01f); playerObject->PointCam(playerCam); break; } case VK_ADD: { if (!objectEditor) break; playerObject->ChangeOneParam(lil::POSITION_Z, ((controlPressed) ? 1.0f : .01f)); playerObject->PointCam(playerCam); break; } case VK_SUBTRACT: { if (!objectEditor) break; playerObject->ChangeOneParam(lil::POSITION_Z, -((controlPressed) ? 1.0f : .01f)); playerObject->PointCam(playerCam); break; } case VK_NUMPAD2: { if (objectEditor) { Vector3 pos = playerObject->GetPosition(); pos.x -= ((controlPressed) ? 1.0f : .01f) * cos(lil::Object::longtitude*PI / 180.0); pos.y -= ((controlPressed) ? 1.0f : .01f) * sin(lil::Object::longtitude*PI / 180.0); playerObject->SetPosition(pos); playerObject->PointCam(playerCam); } break; } case VK_NUMPAD8: { if (objectEditor) { Vector3 pos = playerObject->GetPosition(); pos.x += ((controlPressed) ? 1.0f : .01f) * cos(lil::Object::longtitude*PI / 180.0); pos.y += ((controlPressed) ? 1.0f : .01f) * sin(lil::Object::longtitude*PI / 180.0); playerObject->SetPosition(pos); playerObject->PointCam(playerCam); } break; } case VK_NUMPAD4: { if (objectEditor) { Vector3 pos = playerObject->GetPosition(); pos.x += ((controlPressed) ? 1.0f : .01f) * cos((lil::Object::longtitude + 90.0)*PI / 180.0); pos.y += ((controlPressed) ? 1.0f : .01f) * sin((lil::Object::longtitude + 90.0)*PI / 180.0); playerObject->SetPosition(pos); playerObject->PointCam(playerCam); } break; } case VK_NUMPAD6: { if (objectEditor) { Vector3 pos = playerObject->GetPosition(); pos.x -= ((controlPressed) ? 1.0f : .01f) * cos((lil::Object::longtitude + 90.0)*PI / 180.0); pos.y -= ((controlPressed) ? 1.0f : .01f) * sin((lil::Object::longtitude + 90.0)*PI / 180.0); playerObject->SetPosition(pos); playerObject->PointCam(playerCam); } break; } case VK_NUMPAD1: { playerObject->ChangeOneParam(lil::OBJECT_PARAM::ROTATION_Z, ((controlPressed) ? 5.0f : .1f)); break; } case VK_NUMPAD3: { playerObject->ChangeOneParam(lil::OBJECT_PARAM::ROTATION_Z, -((controlPressed) ? 5.0f : .1f)); break; } case VK_NUMPAD7: { playerObject->ChangeOneParam(lil::OBJECT_PARAM::ROTATION_X, ((controlPressed) ? 5.0f : .1f)); break; } case VK_NUMPAD9: { playerObject->ChangeOneParam(lil::OBJECT_PARAM::ROTATION_X, -((controlPressed) ? 5.0f : .1f)); break; } case VK_DIVIDE: { playerObject->ChangeOneParam(lil::OBJECT_PARAM::ROTATION_Y, ((controlPressed) ? 5.0f : .1f)); break; } case VK_MULTIPLY: { playerObject->ChangeOneParam(lil::OBJECT_PARAM::ROTATION_Y, -((controlPressed) ? 5.0f : .1f)); break; } case VK_CONTROL: { controlPressed = !controlPressed; break; } } }