Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/ConsolePanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_ConsolePanel_H
#define PokemonAutomation_ConsoleInfra_ConsolePanel_H
#ifndef PokemonAutomation_GameConsole_ConsolePanel_H
#define PokemonAutomation_GameConsole_ConsolePanel_H

#include "Common/Cpp/Options/BatchOption.h"
#include "CommonFramework/Panels/PanelDescriptor.h"
Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/ConsolePanelSession.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_ConsolePanelSession_H
#define PokemonAutomation_ConsoleInfra_ConsolePanelSession_H
#ifndef PokemonAutomation_GameConsole_ConsolePanelSession_H
#define PokemonAutomation_GameConsole_ConsolePanelSession_H

#include "CommonFramework/Panels/PanelSession.h"
#include "ConsoleSystemSession.h"
Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/ConsoleSystemOption.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_ConsoleSystemOption_H
#define PokemonAutomation_ConsoleInfra_ConsoleSystemOption_H
#ifndef PokemonAutomation_GameConsole_ConsoleSystemOption_H
#define PokemonAutomation_GameConsole_ConsoleSystemOption_H

#include "Common/Cpp/Containers/FixedLimitVector.h"
#include "CommonFramework/AudioPipeline/AudioOption.h"
Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/ConsoleSystemSession.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_ConsoleSystemSession_H
#define PokemonAutomation_ConsoleInfra_ConsoleSystemSession_H
#ifndef PokemonAutomation_GameConsole_ConsoleSystemSession_H
#define PokemonAutomation_GameConsole_ConsoleSystemSession_H

#include "Common/Cpp/Logging/TaggedLogger.h"
#include "Common/Cpp/UiWrapper.h"
Expand Down
90 changes: 90 additions & 0 deletions SerialPrograms/Source/GameConsole/MultiConsoleSystemOption.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/* Multi-Console System Option
*
* From: https://github.com/PokemonAutomation/
*
*/

#include "Common/Cpp/Json/JsonValue.h"
#include "Common/Cpp/Json/JsonArray.h"
#include "Common/Cpp/Json/JsonObject.h"
#include "Common/Cpp/Containers/FixedLimitVector.tpp"
#include "MultiConsoleSystemOption.h"

namespace PokemonAutomation{
namespace GameConsole{



MultiConsoleSystemOption::~MultiConsoleSystemOption(){

}
MultiConsoleSystemOption::MultiConsoleSystemOption(
size_t min_consoles,
size_t max_consoles,
size_t consoles,
std::function<std::unique_ptr<ConsoleSystemOption>()> console_factory
)
: m_min_consoles(std::max(min_consoles, (size_t)1))
, m_max_consoles(std::min(max_consoles, (size_t)MAX_CONSOLES))
, m_active_consoles(0)
, m_consoles(m_max_consoles)
{
for (size_t c = 0; c < m_max_consoles; c++){
m_consoles.emplace_back(console_factory());
}
consoles = std::max(consoles, m_min_consoles);
consoles = std::min(consoles, m_max_consoles);
m_active_consoles = consoles;
}
MultiConsoleSystemOption::MultiConsoleSystemOption(
size_t min_consoles,
size_t max_consoles,
const JsonValue& json,
std::function<std::unique_ptr<ConsoleSystemOption>()> console_factory
)
: MultiConsoleSystemOption(min_consoles, max_consoles, 0, std::move(console_factory))
{
MultiConsoleSystemOption::load_json(json);
}

JsonValue MultiConsoleSystemOption::to_json() const{
JsonObject obj;
obj["ActiveDevices"] = m_active_consoles;
{
JsonArray array;
for (const auto& item : m_consoles){
array.push_back(item->to_json());
}
obj["DeviceList"] = std::move(array);
}
return obj;
}
void MultiConsoleSystemOption::load_json(const JsonValue& json){
const JsonObject* obj = json.to_object();
if (obj == nullptr){
return;
}
obj->read_integer(
m_active_consoles,
"ActiveDevices",
m_min_consoles,
m_max_consoles
);
{
const JsonArray* array = obj->get_array("DeviceList");
if (array != nullptr){
size_t c = 0;
size_t stop = std::min(m_max_consoles, array->size());
for (; c < stop; c++){
m_consoles[c]->load_json((*array)[c]);
}
m_active_consoles = c;
}
}
}




}
}
66 changes: 66 additions & 0 deletions SerialPrograms/Source/GameConsole/MultiConsoleSystemOption.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/* Multi-Console System Option
*
* From: https://github.com/PokemonAutomation/
*
*/

#ifndef PokemonAutomation_ConsoleInfra_MultiConsoleSystemOption_H
#define PokemonAutomation_ConsoleInfra_MultiConsoleSystemOption_H

#include <functional>
#include "Common/Cpp/Containers/FixedLimitVector.h"
#include "ConsoleSystemOption.h"

namespace PokemonAutomation{
namespace GameConsole{


class MultiConsoleSystemOption{
public:
static const size_t MAX_CONSOLES = 4;

public:
virtual ~MultiConsoleSystemOption();
MultiConsoleSystemOption(
size_t min_consoles,
size_t max_consoles,
size_t consoles,
std::function<std::unique_ptr<ConsoleSystemOption>()> console_factory
);
MultiConsoleSystemOption(
size_t min_consoles,
size_t max_consoles,
const JsonValue& json,
std::function<std::unique_ptr<ConsoleSystemOption>()> console_factory
);

void resize(size_t count){
m_active_consoles = count;
}

public:
size_t min_consoles() const{ return m_min_consoles; }
size_t max_consoles() const{ return m_max_consoles; }

size_t active_consoles() const{ return m_active_consoles; }
ConsoleSystemOption& operator[](size_t index){ return *m_consoles[index]; }


public:
virtual JsonValue to_json() const;
virtual void load_json(const JsonValue& json);


private:
const size_t m_min_consoles;
const size_t m_max_consoles;
size_t m_active_consoles;
FixedLimitVector<std::unique_ptr<ConsoleSystemOption>> m_consoles;
};




}
}
#endif
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/Panels/BoxDraw.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_BoxDraw_H
#define PokemonAutomation_ConsoleInfra_BoxDraw_H
#ifndef PokemonAutomation_GameConsole_BoxDraw_H
#define PokemonAutomation_GameConsole_BoxDraw_H

#include "CommonFramework/Options/NestedBoxDrawOption.h"
#include "GameConsole/ConsolePanel.h"
Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/Panels/VirtualConsole.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_VirtualConsole_H
#define PokemonAutomation_ConsoleInfra_VirtualConsole_H
#ifndef PokemonAutomation_GameConsole_VirtualConsole_H
#define PokemonAutomation_GameConsole_VirtualConsole_H

#include "GameConsole/ConsolePanel.h"

Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/UI/CommandRowWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_CommandRowWidget_H
#define PokemonAutomation_ConsoleInfra_CommandRowWidget_H
#ifndef PokemonAutomation_GameConsole_CommandRowWidget_H
#define PokemonAutomation_GameConsole_CommandRowWidget_H

#include <QHBoxLayout>
#include <QLabel>
Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/UI/ConsolePanelWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_ConsolePanelWidget_H
#define PokemonAutomation_ConsoleInfra_ConsolePanelWidget_H
#ifndef PokemonAutomation_GameConsole_ConsolePanelWidget_H
#define PokemonAutomation_GameConsole_ConsolePanelWidget_H

#include <QWidget>
#include <QVBoxLayout>
Expand Down
4 changes: 2 additions & 2 deletions SerialPrograms/Source/GameConsole/UI/ConsoleSystemWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*
*/

#ifndef PokemonAutomation_ConsoleInfra_ConsoleSystemWidget_H
#define PokemonAutomation_ConsoleInfra_ConsoleSystemWidget_H
#ifndef PokemonAutomation_GameConsole_ConsoleSystemWidget_H
#define PokemonAutomation_GameConsole_ConsoleSystemWidget_H

#include <QVBoxLayout>
#include <QWidget>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ MultiSwitchProgramSession::MultiSwitchProgramSession(const MultiSwitchProgramDes
, m_sanitizer("MultiSwitchProgramSession")
{
// WriteSpinLock lg(m_lock, PA_CURRENT_FUNCTION);
m_instance->update_active_consoles(m_system_option.count());
m_instance->update_active_consoles(m_system_option.active_consoles());
m_system.add_listener(*this);
}

Expand Down

This file was deleted.

Loading