# Peer2PlayGenericNonStakingContract

The  Peer2PlayGenericNonStakingContract is a modular and extensible platform for simulation games.&#x20;

It allows:

1. Protocol admins to manage games and token standards dynamically.
2. Game owners to deploy token contracts, register players, and manage game-specific functionalities.
3. Players to register, participate, and interact with game assets.

The platform supports multiple token standards, efficient game management, and seamless integration of on-chain and off-chain data.

***

#### **2. Imports Used & Their Significance**

1. **`@openzeppelin/contracts/access/Ownable.sol`**:
   * Provides ownership functionality for access control using `onlyOwner`.
2. **`@openzeppelin/contracts/utils/Pausable.sol`**:
   * Enables pausing and unpausing of contract operations during emergencies.

***

#### **3. State Variables**

1. **`games`**:
   * Stores game-specific data using the `Game` struct.
2. **`tokenStandardFactories`**:
   * Maps token standards to their respective factory contracts.
3. **`gameCounter`**:
   * Auto-incrementing counter for assigning unique game IDs.

***

#### **4. Functions & Their Significance**

#### **Protocol Admin Functions**

1. **`addTokenStandard`**: Registers a new token standard with its factory.
2. **`addGame`**: Adds a new game with metadata and fee configuration.
3. **`pauseGame`**: Temporarily halts operations for a game.
4. **`unpauseGame`**: Resumes operations for a paused game.
5. **`removeGame`**: Deregisters a game from the platform.

***

#### **Game Owner Functions**

1. **`updateGameFee`**: Updates the fee percentage for a game.
2. **`deployTokenContract`**: Deploys a token contract using a registered factory.

***

#### **Player Functions**

1. **`registerOnGame`**: Allows players to register for a specific game.
