# SlantedGameToolz


SlantedGameToolz is a collection of tools designed to be used in games made with typescript. UI components are rendered with react. 
 

- These tools can be used in iOS and Android apps when built with [**Capacitor**](https://capacitorjs.com/)
- These tools can be used in PC and Mac apps when built with [**Electron**](https://www.electronjs.org/)


## Tools  

- dice
- weighted dice
- percentage
- React components

<br/> 

# Components

### ImportExportLocalStorage
- define `defaultData`

use the save manager
``` 
  <ImportExportLocalStorage defaultData={defaultData} />
```

access data stored in local storage
``` typescript 
const saveGameData2 = getDataFromLocalStorage(defaultData);
``` 

OR

``` typescript 
const isLoading = useIsLoadingLocalStorage();
const { setIsLoading, handleResetGame } =
		useImportExportLocalStorageActions();
const { saveLocalStorageData, clearLocalStorageData, saveGameData } =
		useLocalSaveData(defaultData);
```

### LocalizationSelect

saves the selected language in localstorage under key `lagCode`

- add `.png` images to `/public/flags/`
- required files `en.png, de.png, es.png, zh.png, ja.png, ko.png, fr.png, ru.png, it.png, pt.png, hi.png`
  

![LocalizationSelect](/public/marketingImages/LocalizationSelect.png)

```typescript 
import { LocalizationSelect } from "slanted-gamedev-toolz";

function App() {
	return (
	  <LocalizationSelect />
	);
}
export default App;
```

### HexBtn
todo
### SquareTileButton
todo

# ImportExportLocalStorage
todo

# Functions

## Dice Utils
 - `rollDice()` A fair dice roll.
 - `rollLowWeightedDice()` An unfair fair dice roll that is more likely to roll low.
 - `rollLowWeightedDice()` An unfair fair dice roll that is more likely to roll high.

## Array Utils
 - `removeObjectsWithSameName()` Removes objects from the first array if their `name` property matches any object's `name` in the second array.
 - `randomArrayItem()` Returns a random item from the provided array.

## Number Utils
- `numberWithCommas()` Formats a number with comma separators and optional suffixes for large values. Ex. 1,000,000(M)
- `isNumberTooLarge()` Checks if a number exceeds JavaScript's `Number.MAX_SAFE_INTEGER`.

#### Example Usage

```typescript 
import { rollDice } from "slanted-gamedev-toolz";

 const outcome = rollDice(6); // roll 6 sided dice
 console.log(`outcome:`, outcome)
```

| Parameter | Type | Description                     |
| - | - | - |
| diceSides | number | sides on the dice |

| Returns  | Type | Description                 |
| - |- | - |
|   | number | the result of the dice roll |

</br></br>

# Developer Instructions
To Publish:
- set version in package.json > `"version": "1.0.36"`
- run `npm publish`

You want to contribute to SlantedGameToolz?
- Install the repo dependencies
- Render components
  - storybook `yarn storybook`
  - or
  - Vite app `yarn dev`
- Make code changes
- Submit PR


From the root of the repo, open a terminal then run:

```
$ yarn install
```

</br></br>

### How to publish to NPM
- `npm login` (if fails do this first)
- `yarn build`
- bump version in package.json (ex: "version": "1.0.24") 
- `npm publish`



https://www.npmjs.com/package/slanted-gamedev-toolz

https://github.com/theslantedroom/SlantedGameDevToolz
### Examples

- [Idle Trillionaire](https://www.idletrillionaire.com/)
- [Turn Based Boxing](https://www.hbcboxing.online/)


