mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Merge pull request #20984 from hrydgard/more-ui-tweaking
DualSense accelerometer input support, UI tweaks
This commit is contained in:
57 files changed
+157
-85
No files matched your search
+8
-8
@@ -468,14 +468,15 @@ void Choice::ClickInternal() {
|
||||
void Choice::GetContentDimensionsBySpec(const UIContext &dc, MeasureSpec horiz, MeasureSpec vert, float &w, float &h) const {
|
||||
float totalW = 0.0f;
|
||||
float totalH = 0.0f;
|
||||
int paddingLeft = 12;
|
||||
int paddingRight = 12;
|
||||
|
||||
if (!text_.empty() && !hideTitle_) {
|
||||
int paddingLeft = 12;
|
||||
int paddingRight = 12;
|
||||
if (rightIconImage_.isValid()) {
|
||||
paddingRight = ITEM_HEIGHT;
|
||||
}
|
||||
|
||||
float availWidth = horiz.size - paddingLeft - paddingRight - textPadding_.horiz() - totalW;
|
||||
float availWidth = horiz.size - paddingLeft - paddingRight - textPadding_.horiz();
|
||||
if (availWidth < 0.0f) {
|
||||
// Let it have as much space as it needs.
|
||||
availWidth = MAX_ITEM_SIZE;
|
||||
@@ -487,20 +488,19 @@ void Choice::GetContentDimensionsBySpec(const UIContext &dc, MeasureSpec horiz,
|
||||
float textW = 0.0f, textH = 0.0f;
|
||||
dc.MeasureTextRect(dc.GetTheme().uiFont, scale, scale, text_, availBounds, &textW, &textH, FLAG_WRAP_TEXT);
|
||||
totalH = std::max(totalH, textH);
|
||||
totalW += textW;
|
||||
if (image_.isValid()) {
|
||||
totalW += 12;
|
||||
totalW += totalH;
|
||||
paddingLeft = ITEM_HEIGHT;
|
||||
}
|
||||
totalW = paddingLeft + textW + paddingRight + textPadding_.horiz();
|
||||
} else {
|
||||
if (image_.isValid()) {
|
||||
dc.Draw()->GetAtlas()->measureImage(image_, &w, &h);
|
||||
totalW = w * imgScale_ + 6;
|
||||
totalW = w * imgScale_ + paddingLeft + paddingRight;
|
||||
totalH = h * imgScale_;
|
||||
}
|
||||
}
|
||||
|
||||
w = totalW + (text_.empty() ? 16 : 24);
|
||||
w = totalW;
|
||||
h = totalH + 16;
|
||||
h = std::max(h, ITEM_HEIGHT);
|
||||
}
|
||||
|
||||
@@ -957,8 +957,6 @@ static const ConfigSetting controlSettings[] = {
|
||||
ConfigSetting("Custom18Mapping", "Custom18Image", "Custom18Shape", "Custom18Toggle", "Custom18Repeat", SETTING_IDX(g_Config, CustomButton, 18), {0, 3, 9, false, false}, CfgFlag::PER_GAME),
|
||||
ConfigSetting("Custom19Mapping", "Custom19Image", "Custom19Shape", "Custom19Toggle", "Custom19Repeat", SETTING_IDX(g_Config, CustomButton, 19), {0, 4, 9, false, false}, CfgFlag::PER_GAME),
|
||||
|
||||
|
||||
#ifdef MOBILE_DEVICE
|
||||
ConfigSetting("TiltBaseAngleY", SETTING(g_Config, fTiltBaseAngleY), 0.9f, CfgFlag::PER_GAME),
|
||||
ConfigSetting("TiltInvertX", SETTING(g_Config, bInvertTiltX), false, CfgFlag::PER_GAME),
|
||||
ConfigSetting("TiltInvertY", SETTING(g_Config, bInvertTiltY), false, CfgFlag::PER_GAME),
|
||||
@@ -968,7 +966,6 @@ static const ConfigSetting controlSettings[] = {
|
||||
ConfigSetting("TiltInverseDeadzone", SETTING(g_Config, fTiltInverseDeadzone), 0.0f, CfgFlag::PER_GAME),
|
||||
ConfigSetting("TiltCircularDeadzone", SETTING(g_Config, bTiltCircularDeadzone), true, CfgFlag::PER_GAME),
|
||||
ConfigSetting("TiltInputType", SETTING(g_Config, iTiltInputType), 0, CfgFlag::PER_GAME),
|
||||
#endif
|
||||
|
||||
ConfigSetting("DisableDpadDiagonals", SETTING(g_Config, bDisableDpadDiagonals), false, CfgFlag::PER_GAME),
|
||||
ConfigSetting("GamepadOnlyFocused", SETTING(g_Config, bGamepadOnlyFocused), false, CfgFlag::PER_GAME),
|
||||
|
||||
+41
-54
@@ -72,21 +72,11 @@ private:
|
||||
void OnReplace(UI::EventParams ¶ms);
|
||||
void OnReplaceAll(UI::EventParams ¶ms);
|
||||
|
||||
void MappedCallback(const MultiInputMapping &kdf);
|
||||
|
||||
enum Action {
|
||||
NONE,
|
||||
REPLACEONE,
|
||||
REPLACEALL,
|
||||
ADD,
|
||||
};
|
||||
int pspKey_;
|
||||
|
||||
UI::Choice *addButton_ = nullptr;
|
||||
UI::Choice *replaceAllButton_ = nullptr;
|
||||
std::vector<UI::View *> rows_;
|
||||
Action action_ = NONE;
|
||||
int actionIndex_ = 0;
|
||||
int pspKey_;
|
||||
std::string keyName_;
|
||||
ScreenManager *scrm_;
|
||||
};
|
||||
@@ -167,73 +157,67 @@ void SingleControlMapper::Refresh() {
|
||||
}
|
||||
}
|
||||
|
||||
void SingleControlMapper::MappedCallback(const MultiInputMapping &kdf) {
|
||||
if (kdf.empty()) {
|
||||
// Don't want to try to add this.
|
||||
return;
|
||||
}
|
||||
|
||||
switch (action_) {
|
||||
case ADD:
|
||||
KeyMap::SetInputMapping(pspKey_, kdf, false);
|
||||
addButton_->SetFocus();
|
||||
break;
|
||||
case REPLACEALL:
|
||||
KeyMap::SetInputMapping(pspKey_, kdf, true);
|
||||
replaceAllButton_->SetFocus();
|
||||
break;
|
||||
case REPLACEONE:
|
||||
{
|
||||
bool success = KeyMap::ReplaceSingleKeyMapping(pspKey_, actionIndex_, kdf);
|
||||
void SingleControlMapper::OnReplace(UI::EventParams ¶ms) {
|
||||
const int index = atoi(params.v->Tag().c_str());
|
||||
scrm_->push(new KeyMappingNewKeyDialog(pspKey_, true, [this, index](KeyMap::MultiInputMapping mapping) {
|
||||
if (mapping.empty())
|
||||
return;
|
||||
bool success = KeyMap::ReplaceSingleKeyMapping(pspKey_, index, mapping);
|
||||
if (!success) {
|
||||
replaceAllButton_->SetFocus(); // Last got removed as a duplicate
|
||||
} else if (actionIndex_ < (int)rows_.size()) {
|
||||
rows_[actionIndex_]->SetFocus();
|
||||
} else if (index < (int)rows_.size()) {
|
||||
rows_[index]->SetFocus();
|
||||
} else {
|
||||
SetFocus();
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
SetFocus();
|
||||
break;
|
||||
}
|
||||
KeyMap::UpdateNativeMenuKeys();
|
||||
g_IsMappingMouseInput = false;
|
||||
}
|
||||
|
||||
void SingleControlMapper::OnReplace(UI::EventParams ¶ms) {
|
||||
actionIndex_ = atoi(params.v->Tag().c_str());
|
||||
action_ = REPLACEONE;
|
||||
scrm_->push(new KeyMappingNewKeyDialog(pspKey_, true, std::bind(&SingleControlMapper::MappedCallback, this, std::placeholders::_1), I18NCat::KEYMAPPING));
|
||||
KeyMap::UpdateNativeMenuKeys();
|
||||
g_IsMappingMouseInput = false;
|
||||
}, I18NCat::KEYMAPPING));
|
||||
}
|
||||
|
||||
void SingleControlMapper::OnReplaceAll(UI::EventParams ¶ms) {
|
||||
action_ = REPLACEALL;
|
||||
scrm_->push(new KeyMappingNewKeyDialog(pspKey_, true, std::bind(&SingleControlMapper::MappedCallback, this, std::placeholders::_1), I18NCat::KEYMAPPING));
|
||||
scrm_->push(new KeyMappingNewKeyDialog(pspKey_, true, [this](KeyMap::MultiInputMapping mapping) {
|
||||
if (mapping.empty())
|
||||
return;
|
||||
KeyMap::SetInputMapping(pspKey_, mapping, true);
|
||||
replaceAllButton_->SetFocus();
|
||||
KeyMap::UpdateNativeMenuKeys();
|
||||
g_IsMappingMouseInput = false;
|
||||
}, I18NCat::KEYMAPPING));
|
||||
}
|
||||
|
||||
void SingleControlMapper::OnAdd(UI::EventParams ¶ms) {
|
||||
action_ = ADD;
|
||||
scrm_->push(new KeyMappingNewKeyDialog(pspKey_, true, std::bind(&SingleControlMapper::MappedCallback, this, std::placeholders::_1), I18NCat::KEYMAPPING));
|
||||
scrm_->push(new KeyMappingNewKeyDialog(pspKey_, true, [this](KeyMap::MultiInputMapping mapping) {
|
||||
if (mapping.empty())
|
||||
return;
|
||||
KeyMap::SetInputMapping(pspKey_, mapping, false);
|
||||
addButton_->SetFocus();
|
||||
KeyMap::UpdateNativeMenuKeys();
|
||||
g_IsMappingMouseInput = false;
|
||||
}, I18NCat::KEYMAPPING));
|
||||
}
|
||||
|
||||
void SingleControlMapper::OnAddMouse(UI::EventParams ¶ms) {
|
||||
action_ = ADD;
|
||||
g_IsMappingMouseInput = true;
|
||||
scrm_->push(new KeyMappingNewMouseKeyDialog(pspKey_, true, std::bind(&SingleControlMapper::MappedCallback, this, std::placeholders::_1), I18NCat::KEYMAPPING));
|
||||
scrm_->push(new KeyMappingNewMouseKeyDialog(pspKey_, true, [this](KeyMap::MultiInputMapping mapping) {
|
||||
if (mapping.empty())
|
||||
return;
|
||||
KeyMap::SetInputMapping(pspKey_, mapping, false);
|
||||
addButton_->SetFocus();
|
||||
KeyMap::UpdateNativeMenuKeys();
|
||||
g_IsMappingMouseInput = false;
|
||||
}, I18NCat::KEYMAPPING));
|
||||
}
|
||||
|
||||
void SingleControlMapper::OnDelete(UI::EventParams ¶ms) {
|
||||
int index = atoi(params.v->Tag().c_str());
|
||||
KeyMap::DeleteNthMapping(pspKey_, index);
|
||||
|
||||
if (index + 1 < (int)rows_.size())
|
||||
rows_[index]->SetFocus();
|
||||
else
|
||||
SetFocus();
|
||||
}
|
||||
|
||||
|
||||
struct BindingCategory {
|
||||
const char *catName;
|
||||
int firstKey;
|
||||
@@ -1030,7 +1014,10 @@ void VisualMappingScreen::MapNext(bool successive) {
|
||||
} else {
|
||||
psp_->SelectButton(nextKey_);
|
||||
}
|
||||
auto dialog = new KeyMappingNewKeyDialog(nextKey_, true, std::bind(&VisualMappingScreen::HandleKeyMapping, this, std::placeholders::_1), I18NCat::KEYMAPPING);
|
||||
|
||||
auto dialog = new KeyMappingNewKeyDialog(nextKey_, true, [this](KeyMap::MultiInputMapping mapping) {
|
||||
HandleKeyMapping(mapping);
|
||||
}, I18NCat::KEYMAPPING);
|
||||
|
||||
Bounds bounds = screenManager()->getUIContext()->GetLayoutBounds();
|
||||
dialog->SetPopupOffset(psp_->GetPopupOffset() * bounds.h);
|
||||
|
||||
@@ -1477,6 +1477,7 @@ void NativeMouseDelta(float dx, float dy) {
|
||||
SendMouseDeltaAxis();
|
||||
}
|
||||
|
||||
// TODO: Should include a device ID here, since accelerometers can be on pads for example (DualSense).
|
||||
void NativeAccelerometer(float tiltX, float tiltY, float tiltZ) {
|
||||
if (g_Config.iTiltInputType == TILT_NULL) {
|
||||
// if tilt events are disabled, don't do anything special.
|
||||
|
||||
@@ -66,6 +66,11 @@ void UploadScreen::RecreateStatus() {
|
||||
}
|
||||
}
|
||||
|
||||
std::string_view UploadScreen::GetTitle() const {
|
||||
auto n = GetI18NCategory(I18NCat::NETWORKING);
|
||||
return n->T("Upload files");
|
||||
}
|
||||
|
||||
void UploadScreen::update() {
|
||||
UIScreen::update();
|
||||
bool running = WebServerRunning(WebServerFlags::FILE_UPLOAD);
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
|
||||
protected:
|
||||
void update() override;
|
||||
std::string_view GetTitle() const override;
|
||||
|
||||
const char *tag() const override { return "Upload"; }
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ struct DualSenseOutputReport {
|
||||
u8 rumbleLeft;
|
||||
u8 pad[2];
|
||||
u8 muteLED;
|
||||
u8 micMute;
|
||||
u8 micMute; // 10
|
||||
u8 other[32];
|
||||
u8 enableBrightness;
|
||||
u8 fade;
|
||||
@@ -491,6 +491,8 @@ bool ReadDualShockInput(HANDLE handle, HIDControllerState *state) {
|
||||
state->triggerAxes[PS_TRIGGER_L2] = report.l2_analog;
|
||||
state->triggerAxes[PS_TRIGGER_R2] = report.r2_analog;
|
||||
|
||||
state->accValid = false;
|
||||
|
||||
u32 buttons{};
|
||||
int frameCounter = report.buttons[2] >> 2;
|
||||
report.buttons[2] &= 3;
|
||||
@@ -506,6 +508,8 @@ bool ReadDualShockInput(HANDLE handle, HIDControllerState *state) {
|
||||
|
||||
// So strange that this is different!
|
||||
struct DualSenseInputReport {
|
||||
u8 firstByte; // must be 1
|
||||
|
||||
u8 lx;
|
||||
u8 ly;
|
||||
u8 rx;
|
||||
@@ -514,11 +518,13 @@ struct DualSenseInputReport {
|
||||
u8 l2_analog;
|
||||
u8 r2_analog;
|
||||
|
||||
u8 frameCounter;
|
||||
u8 frameCounter; // 7
|
||||
|
||||
u8 buttons[3];
|
||||
u8 buttons[3]; // 8-10
|
||||
u8 pad[5]; // 11,12,13,14,15
|
||||
|
||||
// TODO: More stuff (battery, tilt, etc).
|
||||
s16 gyroscope[3];
|
||||
s16 accelerometer[3];
|
||||
};
|
||||
|
||||
bool ReadDualSenseInput(HANDLE handle, HIDControllerState *state) {
|
||||
@@ -536,14 +542,13 @@ bool ReadDualSenseInput(HANDLE handle, HIDControllerState *state) {
|
||||
}
|
||||
|
||||
// OK, check the first byte to figure out what we're dealing with here.
|
||||
int offset = 1;
|
||||
if (inputReport[0] != 1) {
|
||||
// Wrong data
|
||||
return false;
|
||||
}
|
||||
// const bool isBluetooth = (reportId == 0x11 || reportId == 0x31);
|
||||
|
||||
memcpy(&report, inputReport + offset, sizeof(report));
|
||||
memcpy(&report, inputReport, sizeof(report));
|
||||
|
||||
// Center the sticks.
|
||||
state->stickAxes[PS_STICK_LX] = report.lx - 128;
|
||||
@@ -555,6 +560,13 @@ bool ReadDualSenseInput(HANDLE handle, HIDControllerState *state) {
|
||||
state->triggerAxes[PS_TRIGGER_L2] = report.l2_analog;
|
||||
state->triggerAxes[PS_TRIGGER_R2] = report.r2_analog;
|
||||
|
||||
const float accelScale = (1.0f / 8192.0f) * 9.81f;
|
||||
// We need to remap the axes a bit.
|
||||
state->accValid = true;
|
||||
state->accelerometer[0] = -report.accelerometer[2] * accelScale;
|
||||
state->accelerometer[1] = -report.accelerometer[0] * accelScale;
|
||||
state->accelerometer[2] = report.accelerometer[1] * accelScale;
|
||||
|
||||
u32 buttons{};
|
||||
report.buttons[2] &= 3; // Remove noise
|
||||
memcpy(&buttons, &report.buttons[0], 3);
|
||||
@@ -563,6 +575,8 @@ bool ReadDualSenseInput(HANDLE handle, HIDControllerState *state) {
|
||||
buttons &= ~0xF;
|
||||
buttons |= DecodeHatSwitch(report.buttons[0] & 0xF);
|
||||
|
||||
INFO_LOG(Log::sceCtrl, "DualSense accel: %0.2f %0.2f %0.2f", state->accelerometer[0], state->accelerometer[1], state->accelerometer[2]);
|
||||
|
||||
state->buttons = buttons;
|
||||
return true;
|
||||
}
|
||||
@@ -607,7 +621,7 @@ static void DecodeSwitchProStick(const u8 *stickData, s8 *outX, s8 *outY) {
|
||||
// INFO_LOG(Log::sceCtrl, "Switch Pro input: x=%d, y=%d, cx=%d, cy=%d", x, y, *outX, *outY);
|
||||
}
|
||||
|
||||
bool ReadSwitchProInput(HANDLE handle, HIDControllerState *state) {
|
||||
static bool ReadSwitchProInput(HANDLE handle, HIDControllerState *state) {
|
||||
BYTE inputReport[SwitchPro_INPUT_REPORT_LEN]{}; // 64-byte input report for Switch Pro
|
||||
DWORD bytesRead = 0;
|
||||
if (!ReadFile(handle, inputReport, sizeof(inputReport), &bytesRead, nullptr)) {
|
||||
@@ -737,6 +751,10 @@ int HidInputDevice::UpdateState() {
|
||||
}
|
||||
}
|
||||
|
||||
if (state.accValid) {
|
||||
NativeAccelerometer(state.accelerometer[0], state.accelerometer[1], state.accelerometer[2]);
|
||||
}
|
||||
|
||||
prevState_ = state;
|
||||
return UPDATESTATE_NO_SLEEP; // The ReadFile sleeps for us, effectively.
|
||||
} else {
|
||||
|
||||
@@ -21,6 +21,9 @@ struct HIDControllerState {
|
||||
// Buttons. Here the mapping is specific to the controller type and resolved
|
||||
// later.
|
||||
u32 buttons; // Bitmask, PSButton enum
|
||||
|
||||
bool accValid = false;
|
||||
float accelerometer[3]; // X, Y, Z
|
||||
};
|
||||
|
||||
struct ButtonInputMapping;
|
||||
@@ -34,6 +37,9 @@ public:
|
||||
void Shutdown() override;
|
||||
|
||||
static void AddSupportedDevices(std::set<u32> *deviceVIDPIDs);
|
||||
bool HasAccelerometer() const override {
|
||||
return subType_ == HIDControllerType::DS5;
|
||||
}
|
||||
private:
|
||||
void ReleaseAllKeys(const ButtonInputMapping *buttonMappings, int count);
|
||||
InputDeviceID DeviceID(int pad);
|
||||
|
||||
@@ -86,3 +86,12 @@ void InputManager::StopPolling() {
|
||||
runThread_.store(false, std::memory_order_relaxed);
|
||||
inputThread_.join();
|
||||
}
|
||||
|
||||
bool InputManager::AnyAccelerometer() const {
|
||||
for (const auto &device : devices_) {
|
||||
if (device->HasAccelerometer()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -26,10 +26,11 @@
|
||||
|
||||
class InputDevice {
|
||||
public:
|
||||
virtual ~InputDevice() {}
|
||||
virtual ~InputDevice() = default;
|
||||
|
||||
virtual void Init() {}
|
||||
virtual void Shutdown() {}
|
||||
virtual bool HasAccelerometer() const { return false; }
|
||||
|
||||
enum { UPDATESTATE_SKIP_PAD = 0x1234, UPDATESTATE_NO_SLEEP = 0x2345};
|
||||
virtual int UpdateState() = 0;
|
||||
@@ -55,6 +56,8 @@ public:
|
||||
devices_.emplace_back(std::unique_ptr<InputDevice>(device));
|
||||
}
|
||||
|
||||
bool AnyAccelerometer() const;
|
||||
|
||||
private:
|
||||
void InputThread();
|
||||
|
||||
|
||||
+1
-1
@@ -446,7 +446,7 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
return false;
|
||||
#endif
|
||||
case SYSPROP_HAS_ACCELEROMETER:
|
||||
return true; // for debugging
|
||||
return g_InputManager.AnyAccelerometer();
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1003,6 +1003,7 @@ Send = إرسال
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = نقل الملفات
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -998,6 +998,7 @@ Send = Göndər
|
||||
Send Discord Presence information = Discord "Bol Varlıq" bilgisini göndər
|
||||
Some network functionality in this game is not working = Bu oyundakı bəzi bağlantı işləvsəlliklər işləmir
|
||||
To play in Infrastructure Mode, you must enter a username = İnfrastruktur Modunda oynamaq üçün işlədici adı yazmalısınız
|
||||
Transfer files = Faylları köçürmək
|
||||
Unable to find UPnP device = UPnP qurğusu tapılmır
|
||||
UPnP (port-forwarding) = UPnP (port yönləndirməsi)
|
||||
UPnP need to be reinitialized = UPnP, yenidən başladılmalıdır
|
||||
|
||||
@@ -962,6 +962,7 @@ Send = Адправіць
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Перадаць файлы
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Прехвърляне на файлове
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transferir fitxers
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Přenos souborů
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Overfør filer
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -985,6 +985,7 @@ Send = Senden
|
||||
Send Discord Presence information = Discord "Rich Presence"-Information senden
|
||||
Some network functionality in this game is not working = Einige Netzwerkfunktionen in diesem Spiel funktionieren nicht
|
||||
To play in Infrastructure Mode, you must enter a username = Um im Infrastrukturmodus zu spielen, musst du einen Benutzernamen eingeben
|
||||
Transfer files = Dateien übertragen
|
||||
Unable to find UPnP device = UPnP-Gerät konnte nicht gefunden werden
|
||||
UPnP (port-forwarding) = UPnP (Port-Weiterleitung)
|
||||
UPnP need to be reinitialized = UPnP muss neu initialisiert werden
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transfer file
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -986,6 +986,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transfer files
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -996,6 +996,7 @@ Send = Enviar
|
||||
Send Discord Presence information = Enviar información de "Rich Presence" a Discord
|
||||
Some network functionality in this game is not working = Algunas funciones de red en este juego no funcionan.
|
||||
To play in Infrastructure Mode, you must enter a username = Para jugar en el modo Infraestructura, debes introducir un nombre de usuario
|
||||
Transfer files = Transferir archivos
|
||||
Unable to find UPnP device = Dispositivo UPnP no encontrado
|
||||
UPnP (port-forwarding) = UPnP (redirección de puertos)
|
||||
UPnP need to be reinitialized = Es necesario reiniciar UPnP
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Enviar
|
||||
Send Discord Presence information = Enviar información al Discord "Rich Presence"
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transferir archivos
|
||||
Unable to find UPnP device = No se encuentra el dispositivo UPnP
|
||||
UPnP (port-forwarding) = UPnP (redirección de puertos)
|
||||
UPnP need to be reinitialized = La función de UPnP debe reinicializarse.
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = ارسال
|
||||
Send Discord Presence information = ارسال اطلاعات "Rich Presence" به دیسکورد
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = انتقال فایلها
|
||||
Unable to find UPnP device = پیدا کردن دستگاه UPnP ممکن نیست
|
||||
UPnP (port-forwarding) = UPnP (هدایت درگاه)
|
||||
UPnP need to be reinitialized = UPnP باید بازراهاندازی شود
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Siirrä tiedostoja
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Envoyer
|
||||
Send Discord Presence information = Envoyer l'information "Rich Presence" de Discord
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transférer des fichiers
|
||||
Unable to find UPnP device = Appareil UPnP introuvable
|
||||
UPnP (port-forwarding) = UPnP (redirection de port)
|
||||
UPnP need to be reinitialized = UPnP doit être réinitialisé
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transferir arquivos
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Αποστολή "Rich Presence" πληροφοριών σε Discord
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Μεταφορά αρχείων
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = העבר קבצים
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -992,6 +992,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = קבצים העבר
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Šalji Discord "Rich Presence" informaciju
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Prenesi datoteke
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Küldés
|
||||
Send Discord Presence information = "Rich Presence" információ küldése Discordnak
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Fájlok átvitele
|
||||
Unable to find UPnP device = UPnP eszköz nem található
|
||||
UPnP (port-forwarding) = UPnP (port átirányítás)
|
||||
UPnP need to be reinitialized = UPnP újra-inicializálás szükséges
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Kirim
|
||||
Send Discord Presence information = Kirim informasi "Kritik dan Saran" ke Discord
|
||||
Some network functionality in this game is not working = Beberapa fungsi jaringan dalam game ini tidak berfungsi
|
||||
To play in Infrastructure Mode, you must enter a username = Untuk bermain dalam Mode Infrastruktur, Anda harus memasukkan nama pengguna
|
||||
Transfer files = Transfer file
|
||||
Unable to find UPnP device = Tidak dapat menemukan perangkat UPnP
|
||||
UPnP (port-forwarding) = UPnP (penerusan port)
|
||||
UPnP need to be reinitialized = UPnP perlu diinisialisasi ulang
|
||||
|
||||
@@ -963,6 +963,7 @@ Send = Invia
|
||||
Send Discord Presence information = Invia informazioni Discord "Rich Presence"
|
||||
Some network functionality in this game is not working = Alcune funzionalità di rete in questo gioco non funzionano
|
||||
To play in Infrastructure Mode, you must enter a username = Per giocare in modalità Infrastruttura, è necessario inserire un nome utente
|
||||
Transfer files = Trasferisci file
|
||||
Unable to find UPnP device = Impossibile trovare il dispositivo UPnP
|
||||
UPnP (port-forwarding) = UPnP (reindirizzamento della porta)
|
||||
UPnP need to be reinitialized = UPnP dev'essere reinizializzato
|
||||
|
||||
@@ -962,6 +962,7 @@ Send = 送信する
|
||||
Send Discord Presence information = Discordのプレゼンス情報を送信する
|
||||
Some network functionality in this game is not working = このゲームの一部のネットワーク機能が動作していません
|
||||
To play in Infrastructure Mode, you must enter a username = インフラストラクチャモードでプレイするには、ユーザー名を入力する必要があります
|
||||
Transfer files = ファイルを転送
|
||||
Unable to find UPnP device = UPnPデバイスがみつかりません
|
||||
UPnP (port-forwarding) = UPnP(ポートフォワーディング)
|
||||
UPnP need to be reinitialized = UPnPの再初期化が必要です
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transfer file
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -962,6 +962,7 @@ Send = 보내기
|
||||
Send Discord Presence information = 디스코드 "리치 프레즌스" 정보 보내기
|
||||
Some network functionality in this game is not working = 이 게임의 일부 네트워크 기능이 작동하지 않았음
|
||||
To play in Infrastructure Mode, you must enter a username = 인프라 모드에서 플레이하려면 사용자 이름을 입력해야 함
|
||||
Transfer files = 파일 전송
|
||||
Unable to find UPnP device = UPnP 장치를 찾을 수 없습니다.
|
||||
UPnP (port-forwarding) = UPnP (포트 포워딩)
|
||||
UPnP need to be reinitialized = UPnP를 다시 초기화해야 합니다.
|
||||
|
||||
@@ -976,6 +976,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Pelanên transfer bike
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = ເກັບໃສ່ໄຟລ໌
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Perkelti failus
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Pindahkan fail
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Bestanden overdragen
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Overfør filer
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -991,6 +991,7 @@ Send = Wyślij
|
||||
Send Discord Presence information = Przesyłaj informacje Discord Rich Presence
|
||||
Some network functionality in this game is not working = Niektóre funkcje sieciowe w tej grze nie działają
|
||||
To play in Infrastructure Mode, you must enter a username = Aby grać w trybie infrastruktury, musisz wprowadzić nazwę użytkownika.
|
||||
Transfer files = Przenieś pliki
|
||||
Unable to find UPnP device = Nie udało się zlokalizować urządzenia UPnP
|
||||
UPnP (port-forwarding) = UPnP (przekierowanie portów)
|
||||
UPnP need to be reinitialized = Należy ponownie zainicjować UPnP
|
||||
|
||||
@@ -985,6 +985,7 @@ Send = Enviar
|
||||
Send Discord Presence information = Enviar informação da "Rich Presence" no Discord
|
||||
Some network functionality in this game is not working = Algumas funcionalidades da rede neste jogo não estão funcionando
|
||||
To play in Infrastructure Mode, you must enter a username = Pra jogar no Modo de Infra-estrutura você deve inserir um nome de usuário
|
||||
Transfer files = Transferir arquivos
|
||||
Unable to find UPnP device = Incapaz de achar o dispositivo UPnP
|
||||
UPnP (port-forwarding) = UPnP (abertura das portas)
|
||||
UPnP need to be reinitialized = O UPnP precisa ser reinicializado
|
||||
|
||||
@@ -987,6 +987,7 @@ Send = Enviar
|
||||
Send Discord Presence information = Enviar informação de "Rich Presence" no Discord
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transferir ficheiros
|
||||
Unable to find UPnP device = Não é possível encontrar o dispositivo UPnP
|
||||
UPnP (port-forwarding) = UPnP (abertura das portas)
|
||||
UPnP need to be reinitialized = O UPnP precisa ser reiniciado
|
||||
|
||||
@@ -996,6 +996,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Transferați fișiere
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -962,6 +962,7 @@ Send = Отправить
|
||||
Send Discord Presence information = Отправлять информацию об игре в Discord
|
||||
Some network functionality in this game is not working = Некоторые сетевые функции в этой игре не работают
|
||||
To play in Infrastructure Mode, you must enter a username = Для игры в режиме инфраструктуры необходимо ввести имя пользователя
|
||||
Transfer files = Перенос файлов
|
||||
Unable to find UPnP device = Невозможно найти устройство UPnP
|
||||
UPnP (port-forwarding) = UPnP (проброс портов)
|
||||
UPnP need to be reinitialized = Необходимо перезапустить UPnP
|
||||
|
||||
@@ -963,6 +963,7 @@ Send = Skicka
|
||||
Send Discord Presence information = Visa Discord "Rich Presence"-information
|
||||
Some network functionality in this game is not working = Viss nätverksfunktionalitet i detta spel fungerar ej
|
||||
To play in Infrastructure Mode, you must enter a username = För att spela i infrastrukturläge måste du ange ett användarnamn
|
||||
Transfer files = Överför filer
|
||||
Unable to find UPnP device = Kunde inte hitta UPnP-enhet
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP behöver ominitialiseras
|
||||
|
||||
@@ -996,6 +996,7 @@ Send = I-Send
|
||||
Send Discord Presence information = Magpadala ng impormasyon sa 'Rich Presence' ni Discord.
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Файли интиқол кунед
|
||||
Unable to find UPnP device = Hindi mahanap ang UPnP device
|
||||
UPnP (port-forwarding) = UPnP (pagpapasa ng port)
|
||||
UPnP need to be reinitialized = Kailangang muling simulan ang UPnP
|
||||
|
||||
@@ -1014,6 +1014,7 @@ Send = ส่ง
|
||||
Send Discord Presence information = แสดงชื่อเกมที่กำลังเล่นอยู่ไปยังแอพ Discord
|
||||
Some network functionality in this game is not working = ฟังก์ชั่นของเครือข่ายบางอย่างในเกมนี้อาจจะใช้งานไม่ได้
|
||||
To play in Infrastructure Mode, you must enter a username = การเล่นในโหมด Infrastructure คุณจะต้องป้อนชื่อผู้ใช้งาน
|
||||
Transfer files = โอนไฟล์
|
||||
Unable to find UPnP device = ไม่พบอุปกรณ์ UPnP
|
||||
UPnP (port-forwarding) = โพรโตคอล UPnP (ฟอร์เวิร์ด พอร์ต อัตโนมัติ)
|
||||
UPnP need to be reinitialized = UPnP จำเป็นต้องเริ่มการทำงานใหม่
|
||||
|
||||
@@ -997,6 +997,7 @@ Send = Gönder
|
||||
Send Discord Presence information = Discord Zengin Varlık Bilgisi Gönder
|
||||
Some network functionality in this game is not working = Bu oyundaki bazı ağ işlevleri çalışmıyor
|
||||
To play in Infrastructure Mode, you must enter a username = Altyapı modunda oynamak için bir kullanıcı adı girmelisiniz
|
||||
Transfer files = Dosyaları aktar
|
||||
Unable to find UPnP device = UPnP cihazı bulunamıyor
|
||||
UPnP (port-forwarding) = UPnP (Port Yönlendirme)
|
||||
UPnP need to be reinitialized = UPnP yeniden başlatılmalı
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Надіслати
|
||||
Send Discord Presence information = Відправляти інформацію про гру в Діскорд
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Передати файли
|
||||
Unable to find UPnP device = Неможливо знайти пристрій UPnP
|
||||
UPnP (port-forwarding) = UPnP (переадресація портів)
|
||||
UPnP need to be reinitialized = UPnP необхідно повторно ініціалізувати
|
||||
|
||||
@@ -995,6 +995,7 @@ Send = Send
|
||||
Send Discord Presence information = Send Discord "Rich Presence" information
|
||||
Some network functionality in this game is not working = Some network functionality in this game is not working
|
||||
To play in Infrastructure Mode, you must enter a username = To play in Infrastructure Mode, you must enter a username
|
||||
Transfer files = Chuyển tệp
|
||||
Unable to find UPnP device = Unable to find UPnP device
|
||||
UPnP (port-forwarding) = UPnP (port forwarding)
|
||||
UPnP need to be reinitialized = UPnP need to be reinitialized
|
||||
|
||||
@@ -996,6 +996,7 @@ Send = 发送
|
||||
Send Discord Presence information = Discord 显示在线状态
|
||||
Some network functionality in this game is not working = 此游戏中的某些网络功能不起作用
|
||||
To play in Infrastructure Mode, you must enter a username = 您必须输入用户名,才能在基础模式下游玩
|
||||
Transfer files = 传输文件
|
||||
Unable to find UPnP device = 未找到UPnP设备
|
||||
UPnP (port-forwarding) = UPnP (端口转发)
|
||||
UPnP need to be reinitialized = UPnP 需要重新初始化
|
||||
|
||||
@@ -962,6 +962,7 @@ Send = 傳送
|
||||
Send Discord Presence information = 傳送 Discord「Rich Presence」資訊
|
||||
Some network functionality in this game is not working = 此遊戲中的某些網路功能無法工作
|
||||
To play in Infrastructure Mode, you must enter a username = 您必須輸入使用者名稱,才能在基礎模式下游玩
|
||||
Transfer files = 傳輸檔案
|
||||
Unable to find UPnP device = 找不到 UPnP 裝置
|
||||
UPnP (port-forwarding) = UPnP (連接埠轉送)
|
||||
UPnP need to be reinitialized = UPnP 需要重新初始化
|
||||
|
||||
+11
-11
@@ -24,9 +24,9 @@
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
inkscape:zoom="2.8284273"
|
||||
inkscape:cx="130.81475"
|
||||
inkscape:cy="363.62964"
|
||||
inkscape:zoom="16.000001"
|
||||
inkscape:cx="88.062495"
|
||||
inkscape:cy="536.09372"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2071"
|
||||
inkscape:window-x="-9"
|
||||
@@ -4291,14 +4291,14 @@
|
||||
d="m 394.50099,118.40641 -313.625408,0 C 19.303582,118.40641 0,177.316 0,238.889 0,300.462 19.303582,358.17138 80.875582,358.17138 l 313.625408,0 c 61.573,0 83.27701,-57.71038 83.27701,-119.28238 0,-61.573 -21.70401,-120.48259 -83.27701,-120.48259 z m -46.97508,203.70597 c 5.624,0 -4.558,10.18 -10.18,10.18 l -216.71733,0 c -5.622,0 -10.179,-4.556 -10.179,-10.18 V 154.46541 c 0,-5.623 4.557,-10.18 10.179,-10.18 l 216.71633,0 c 5.622,0 10.18,4.556 10.18,10.18 v 167.64697 z m 28.9719,-62.74938 c -0.132,0 -0.232,0.07 -0.365,0.07 -9.877,0 -17.886,-8.017 -17.886,-17.901 0,-9.868 8.009,-17.885 17.886,-17.885 0.132,0 0.233,0.07 0.365,0.07 9.713,0.209 17.536,8.079 17.536,17.815 0,9.752 -7.822,17.623 -17.536,17.831 z m 36.527,36.961 c -9.877,0 -17.886,-8.009 -17.886,-17.893 0,-9.884 8.009,-17.893 17.886,-17.893 9.892,0 17.901,8.009 17.901,17.893 -0.001,9.884 -8.01,17.893 -17.901,17.893 z m 0,-73.781 c -9.877,0 -17.886,-8.009 -17.886,-17.893 0,-9.884 8.009,-17.893 17.886,-17.893 9.892,0 17.901,8.009 17.901,17.893 -0.001,9.883 -8.01,17.893 -17.901,17.893 z m 36.89,36.89 c -9.877,0 -17.886,-8.017 -17.886,-17.901 0,-9.868 8.009,-17.885 17.886,-17.885 9.892,0 17.901,8.017 17.901,17.885 0,9.884 -8.009,17.901 -17.901,17.901 z"
|
||||
style="fill:#ffffff;fill-opacity:1"
|
||||
sodipodi:nodetypes="ssssssssssssssscscssscscsssssssssssssss"
|
||||
id="path113" /></g><g
|
||||
id="ID_HOMEBREW_STORE"><path
|
||||
id="I_HOMEBREW_STORE_PATH"
|
||||
style="color:#000000;baseline-shift:baseline;display:inline;overflow:visible;visibility:visible;vector-effect:none;fill:#ffffff;stroke:none;stroke-width:0.469874;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;stop-color:#000000"
|
||||
d="m 20.573576,144.15812 c -0.967683,0 -1.755448,0.78827 -1.755448,1.75596 0,0.43966 -0.0044,0.20079 0.0098,0.85525 l 0.318326,-0.008 c -0.0142,-0.65446 -0.0098,-0.4053 -0.0098,-0.8475 0,-0.79603 0.641098,-1.43764 1.437121,-1.43764 0.796027,0 1.437638,0.64161 1.437638,1.43764 0,0.35291 0.01321,0.39753 0.0078,0.80254 l 0.318327,0.004 c 0.0055,-0.41175 -0.0078,-0.46127 -0.0078,-0.80667 0,-0.96769 -0.788281,-1.75596 -1.755965,-1.75596 z m -5.035867,1.64848 -0.33073,9.86761 h 10.611755 l -0.413412,-9.86761 h -2.678389 v 0.46973 h 2.208134 l 0.413411,8.92762 h -9.67176 l 0.330729,-8.92762 h 2.386934 v -0.46973 z m 4.34392,1.06453 -0.455786,2.41019 1.077453,1.37407 1.508952,-0.8847 0.455269,-2.41018 z m 0.303857,0.44493 1.837097,0.34727 -0.35295,1.86604 -1.071769,0.62838 -0.765328,-0.97565 z m -3.247863,1.56012 -0.488859,2.5864 2.409672,0.45579 1.374076,-1.07797 -0.884701,-1.50844 z m 0.303341,0.44545 1.865519,0.35243 0.628385,1.07177 -0.975134,0.76584 -1.866036,-0.35295 z m 4.821927,0.5271 -1.374076,1.07745 0.8847,1.50843 2.410189,0.45579 0.488859,-2.58641 z m 0.0987,0.40669 1.866036,0.35243 -0.347266,1.83762 -1.865519,-0.35295 -0.628902,-1.07177 z m -1.74408,0.85628 -1.508434,0.88418 -0.455786,2.41071 2.586405,0.48886 0.455786,-2.41019 z m -0.09405,0.49712 0.765328,0.97566 -0.35295,1.86603 -1.837097,-0.34726 0.35295,-1.86604 z" /><g
|
||||
id="g120"
|
||||
style="stroke-width:1.79263;stroke-dasharray:none"
|
||||
transform="matrix(0.20889172,0.03949575,-0.03949575,0.20889172,18.041766,117.30402)" /></g></g><path
|
||||
id="path113" /></g><path
|
||||
id="I_HOMEBREW_STORE"
|
||||
style="color:#000000;baseline-shift:baseline;display:inline;overflow:visible;visibility:visible;vector-effect:none;fill:#ffffff;stroke:none;stroke-width:0.469874;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;stop-color:#000000"
|
||||
d="m 20.760665,143.03559 c -0.967683,0 -1.755448,0.78827 -1.755448,1.75596 0,0.43966 -0.0044,0.20079 0.0098,0.85525 l 0.401008,-0.008 c -0.0142,-0.65446 -0.0098,-0.4053 -0.0098,-0.8475 0,-0.79603 0.574952,-1.33842 1.370975,-1.33842 0.796027,0 1.33842,0.54239 1.33842,1.33842 0,0.35291 0.01321,0.39753 0.0078,0.80254 l 0.401009,0.004 c 0.0055,-0.41175 -0.0078,-0.46127 -0.0078,-0.80667 0,-0.96769 -0.788281,-1.75596 -1.755965,-1.75596 z m -5.035867,1.64848 -0.33073,9.86761 h 10.611755 l -0.413412,-9.86761 h -2.678389 v 0.6847 h 2.042769 l 0.413411,8.56382 h -9.307958 l 0.330729,-8.56382 h 2.188497 v -0.6847 z m 4.34392,1.06453 -0.455786,2.41019 1.077453,1.37407 1.508952,-0.8847 0.455269,-2.41018 z m 0.303857,0.44493 1.837097,0.34727 -0.35295,1.86604 -1.071769,0.62838 -0.765328,-0.97565 z m -3.247863,1.56012 -0.488859,2.5864 2.409672,0.45579 1.374076,-1.07797 -0.884701,-1.50844 z m 0.303341,0.44545 1.865519,0.35243 0.628385,1.07177 -0.975134,0.76584 -1.866036,-0.35295 z m 4.821927,0.5271 -1.374076,1.07745 0.8847,1.50843 2.410189,0.45579 0.488859,-2.58641 z m 0.0987,0.40669 1.866036,0.35243 -0.347266,1.83762 -1.865519,-0.35295 -0.628902,-1.07177 z m -1.74408,0.85628 -1.508434,0.88418 -0.455786,2.41071 2.586405,0.48886 0.455786,-2.41019 z m -0.09405,0.49712 0.765328,0.97566 -0.35295,1.86603 -1.837097,-0.34726 0.35295,-1.86604 z"
|
||||
sodipodi:nodetypes="csccsssccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" /><g
|
||||
id="g120"
|
||||
style="stroke-width:1.79263;stroke-dasharray:none"
|
||||
transform="matrix(0.20889172,0.03949575,-0.03949575,0.20889172,18.228855,116.18149)" /></g><path
|
||||
id="I_GEAR"
|
||||
style="fill:#ececec;fill-opacity:1;stroke-width:0.019487"
|
||||
class="st0"
|
||||
|
||||
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 212 KiB |
Reference in new issue
Block a user