forked from dolphin-emu/dolphin
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright 2018 Dolphin Emulator Project
 | 
						|
// Licensed under GPLv2+
 | 
						|
// Refer to the license.txt file included.
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <memory>
 | 
						|
#include <vector>
 | 
						|
 | 
						|
#include <QDialog>
 | 
						|
#include <QString>
 | 
						|
 | 
						|
#include "Common/CommonTypes.h"
 | 
						|
 | 
						|
class ARCodeWidget;
 | 
						|
class QComboBox;
 | 
						|
class QDialogButtonBox;
 | 
						|
class QLineEdit;
 | 
						|
class QPushButton;
 | 
						|
class QRadioButton;
 | 
						|
class QSplitter;
 | 
						|
class QTabWidget;
 | 
						|
class QTableWidget;
 | 
						|
class QTableWidgetItem;
 | 
						|
class QLabel;
 | 
						|
 | 
						|
namespace UICommon
 | 
						|
{
 | 
						|
class GameFile;
 | 
						|
}
 | 
						|
 | 
						|
namespace Core
 | 
						|
{
 | 
						|
enum class State;
 | 
						|
}
 | 
						|
 | 
						|
enum class CompareType : int
 | 
						|
{
 | 
						|
  Equal = 0,
 | 
						|
  NotEqual = 1,
 | 
						|
  Less = 2,
 | 
						|
  LessEqual = 3,
 | 
						|
  More = 4,
 | 
						|
  MoreEqual = 5
 | 
						|
};
 | 
						|
 | 
						|
enum class DataType : int
 | 
						|
{
 | 
						|
  Byte = 0,
 | 
						|
  Short = 1,
 | 
						|
  Int = 2,
 | 
						|
  Float = 3,
 | 
						|
  Double = 4,
 | 
						|
  String = 5
 | 
						|
};
 | 
						|
 | 
						|
struct Result
 | 
						|
{
 | 
						|
  u32 address;
 | 
						|
  DataType type;
 | 
						|
  QString name;
 | 
						|
  bool locked = false;
 | 
						|
  u32 locked_value;
 | 
						|
};
 | 
						|
 | 
						|
class CheatsManager : public QDialog
 | 
						|
{
 | 
						|
  Q_OBJECT
 | 
						|
public:
 | 
						|
  explicit CheatsManager(QWidget* parent = nullptr);
 | 
						|
 | 
						|
private:
 | 
						|
  QWidget* CreateCheatSearch();
 | 
						|
  void CreateWidgets();
 | 
						|
  void ConnectWidgets();
 | 
						|
  void OnStateChanged(Core::State state);
 | 
						|
 | 
						|
  size_t GetTypeSize() const;
 | 
						|
  bool MatchesSearch(u32 addr) const;
 | 
						|
 | 
						|
  void Reset();
 | 
						|
  void NewSearch();
 | 
						|
  void NextSearch();
 | 
						|
  void Update();
 | 
						|
  void GenerateARCode();
 | 
						|
 | 
						|
  void OnWatchContextMenu();
 | 
						|
  void OnMatchContextMenu();
 | 
						|
  void OnWatchItemChanged(QTableWidgetItem* item);
 | 
						|
 | 
						|
  std::vector<Result> m_results;
 | 
						|
  std::vector<Result> m_watch;
 | 
						|
  std::shared_ptr<const UICommon::GameFile> m_game_file;
 | 
						|
  QDialogButtonBox* m_button_box;
 | 
						|
  QTabWidget* m_tab_widget = nullptr;
 | 
						|
 | 
						|
  QWidget* m_cheat_search;
 | 
						|
  ARCodeWidget* m_ar_code = nullptr;
 | 
						|
 | 
						|
  QLabel* m_result_label;
 | 
						|
  QTableWidget* m_match_table;
 | 
						|
  QTableWidget* m_watch_table;
 | 
						|
  QSplitter* m_option_splitter;
 | 
						|
  QSplitter* m_table_splitter;
 | 
						|
  QComboBox* m_match_length;
 | 
						|
  QComboBox* m_match_operation;
 | 
						|
  QLineEdit* m_match_value;
 | 
						|
  QPushButton* m_match_new;
 | 
						|
  QPushButton* m_match_next;
 | 
						|
  QPushButton* m_match_refresh;
 | 
						|
  QPushButton* m_match_reset;
 | 
						|
 | 
						|
  QRadioButton* m_match_decimal;
 | 
						|
  QRadioButton* m_match_hexadecimal;
 | 
						|
  QRadioButton* m_match_octal;
 | 
						|
  bool m_updating = false;
 | 
						|
};
 |