diff --git a/packages/client/src/assets/img/fight-icon.png b/packages/client/src/assets/img/fight-icon.png
new file mode 100644
index 00000000..c83f71ee
Binary files /dev/null and b/packages/client/src/assets/img/fight-icon.png differ
diff --git a/packages/client/src/mud/supportedChains.ts b/packages/client/src/mud/supportedChains.ts
index 5aa85647..11e32cc8 100644
--- a/packages/client/src/mud/supportedChains.ts
+++ b/packages/client/src/mud/supportedChains.ts
@@ -13,8 +13,8 @@
import { MUDChain, latticeTestnet, mudFoundry } from "@latticexyz/common/chains";
import { sepolia, arbitrumGoerli } from 'viem/chains'
-arbitrumGoerli.rpcUrls.default.http = ['https://arbitrum-goerli.infura.io/v3/5ca372516740427e97512d4dfefd9c47'];
-arbitrumGoerli.rpcUrls.default.webSocket = [ 'wss://arbitrum-goerli.infura.io/ws/v3/5ca372516740427e97512d4dfefd9c47'];
+arbitrumGoerli.rpcUrls.default.http = ['https://arbitrum-goerli.publicnode.com'];
+arbitrumGoerli.rpcUrls.default.webSocket = [ 'wss://arbitrum-goerli.publicnode.com'];
const testnet = {
name: "Mississippi testnet",
diff --git a/packages/client/src/pages/ffa/index.tsx b/packages/client/src/pages/ffa/index.tsx
index 7ab070f2..3a95e8ac 100644
--- a/packages/client/src/pages/ffa/index.tsx
+++ b/packages/client/src/pages/ffa/index.tsx
@@ -1,20 +1,82 @@
-import React from 'react';
+import React, { useState } from 'react';
import './styles.scss';
import Header from './header';
import UserInfo from './userInfo';
+import fightIcon from '@/assets/img/fight-icon.png';
const FFA = () => {
+
+ const [tab, setTab] = useState('home');
+
+
return (
-
Home
- Battle
+ {
+ setTab('home')
+ }}
+ >Home
+ {
+ setTab('battle')
+ }}
+ >Battle
-
-
+ {
+ tab === 'home' && <>
+
+
+ >
+ }
+
+ {
+ tab === 'battle' &&
+
+
Leaderboard
+
+
+ -
+
1
+ Bob
+ 0x34..35
+ V2
+ D6
+
+

+
+
+
+
+
12
+
Tom
+
0x34..35
+
V2
+
D6
+
+
+
+
+
+
My Battle Logs
+
+ -
+
I challenged XX Victory
+
+
+ -
+
XX challenged me Lose
+
+
+
+
+
+ }
);
diff --git a/packages/client/src/pages/ffa/styles.scss b/packages/client/src/pages/ffa/styles.scss
index 74f8e7e1..cd4becc3 100644
--- a/packages/client/src/pages/ffa/styles.scss
+++ b/packages/client/src/pages/ffa/styles.scss
@@ -28,22 +28,73 @@
.switch-item {
padding: 10px 12px;
- //border: 4px solid;
cursor: pointer;
border-bottom: 4px solid #BC8C61;
- &:not(:first-child) {
- //border-left-width: 2px;
+ &.active {
+
+ color: #FFF5E9;
+ background: #BC8C61;
}
+ }
+ }
- &:not(:last-child) {
- //border-right-width: 2px;
+ .ffa-battle-wrapper {
+ display: flex;
+ justify-content: space-between;
+ h3 {
+ margin-bottom: 10px;
+ }
+
+ .left-content {
+ width: 570px;
+
+ .leaderboard-list {
+ flex: 1;
+ li {
+ margin-bottom: 6px;
+ }
}
- &.active {
+ .leaderboard-wrapper {
+ display: flex;
+ flex-direction: column;
+ padding: 60px 92px 50px;
+ height: 380px;
+ background: url("../../assets/img/user_bg.png") no-repeat center/100% 100%;
+ }
- color: #FFF5E9;
- background: #BC8C61;
+ .rank-row {
+ display: grid;
+ grid-template-columns: 1fr 4fr 6fr 2fr 2fr 1fr;
+ }
+
+ .fight-icon {
+ img {
+ width: 19px;
+ height: 19px;
+ cursor: pointer;
+ }
+ }
+
+ .my-rank-info {
+ padding-top: 6px;
+ border-top: 2px solid;
+ }
+ }
+
+ .right-content {
+ width: 580px;
+
+ .ffa-logs-wrapper {
+ font-size: 12px;
+ color: #fff;
+
+ li {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 6px;
+ }
}
}
}
diff --git a/packages/client/src/pages/home/StaticInfo.tsx b/packages/client/src/pages/home/StaticInfo.tsx
index 3a084d83..5092d3ac 100644
--- a/packages/client/src/pages/home/StaticInfo.tsx
+++ b/packages/client/src/pages/home/StaticInfo.tsx
@@ -1,8 +1,6 @@
import React, { useState } from 'react';
-import { Swiper, SwiperSlide } from 'swiper/react';
import { Mousewheel } from 'swiper/modules';
import SwiperCore from 'swiper';
-import 'swiper/css';
import './staticInfo.scss';
import FAQ from '@/config/faq';
diff --git a/packages/contracts/foundry.toml b/packages/contracts/foundry.toml
index 58497e60..fc126ce7 100644
--- a/packages/contracts/foundry.toml
+++ b/packages/contracts/foundry.toml
@@ -27,7 +27,7 @@ eth_rpc_url = "https://follower.testnet-chain.linfra.xyz"
[profile.arb-testnet]
-eth_rpc_url = "https://arbitrum-goerli.infura.io/v3/5ca372516740427e97512d4dfefd9c47"
+eth_rpc_url = "https://arbitrum-goerli.publicnode.com"
optimizer = true
optimizer_runs = 3000
diff --git a/packages/contracts/package.json b/packages/contracts/package.json
index e54202c1..75be0ad1 100644
--- a/packages/contracts/package.json
+++ b/packages/contracts/package.json
@@ -11,6 +11,8 @@
"deploy:local": "pnpm run build && mud deploy",
"deploy:testnet": "pnpm run build && mud deploy --profile=lattice-testnet",
"deploy:lidamao": "pnpm run build && mud deploy --profile=Mississippi-testnet",
+ "deploy:redstone": "pnpm run build && mud deploy --profile=REDSTONE-HOLESKY",
+ "deploy:arb": "pnpm run build && mud deploy --profile=arb-testnet",
"dev": "pnpm mud dev-contracts --rpc http://127.0.0.1:8545",
"lint": "pnpm run prettier && pnpm run solhint",
diff --git a/packages/contracts/script/GameConfigInit.sol b/packages/contracts/script/GameConfigInit.sol
index f7308443..7524de17 100644
--- a/packages/contracts/script/GameConfigInit.sol
+++ b/packages/contracts/script/GameConfigInit.sol
@@ -7,9 +7,8 @@ import { GameConfig, GameConfigData } from "../src/codegen/index.sol";
import { GAME_CONFIG_KEY } from "../src/Constants.sol";
library GameConfigInit {
- function initGameConfig(IWorld _world) internal {
+ function initGameConfig() internal {
console.log(" ========= initGameConfig");
- bytes32 merkleRoot = 0x5df91eca63323dbb115087ef262075c5bcea99b8eaf95f520efb8d48ff447499;
// bytes32 merkleRoot = 0xa969691ad8c2e97e3d516e08f5b10ee4decd5f278a5f03ac4fa3532be181c854;
GameConfig.setBattleId(GAME_CONFIG_KEY,1);
// GameConfig.set(
@@ -29,12 +28,12 @@ library GameConfigInit {
}
- function setInitPosition(IWorld _world) internal {
+ function setInitPosition() internal {
GameConfig.setOriginX(GAME_CONFIG_KEY, 4);
GameConfig.setOriginY(GAME_CONFIG_KEY, 4);
}
- function getPosition(IWorld _world) internal view returns (uint256, uint256) {
+ function getPosition() internal view returns (uint256, uint256) {
uint256 x = GameConfig.getOriginX(GAME_CONFIG_KEY);
uint256 y = GameConfig.getOriginY(GAME_CONFIG_KEY);
return (x, y);
diff --git a/packages/contracts/script/PostDeploy.s.sol b/packages/contracts/script/PostDeploy.s.sol
index bb1fca9b..d96bb559 100644
--- a/packages/contracts/script/PostDeploy.s.sol
+++ b/packages/contracts/script/PostDeploy.s.sol
@@ -19,9 +19,9 @@ contract PostDeploy is Script {
console.log(" ========== PostDeploy ========== ");
- address muser = 0xBC9129Dc0487fc2E169941C75aABC539f208fb01;
- address mloot = 0x6e989C01a3e3A94C973A62280a72EC335598490e;
- address mplugin = 0xF6168876932289D073567f347121A267095f3DD6;
+ address muser = 0x2428109A9e775E4406fe079132F216dc77117333;
+ address mloot = 0x4A16f2658De79278Bce592258e7e38aB4c222787;
+ address mplugin = 0xcE34c3d4373A094d6e22ab15f0b0C36c771663cb;
bytes32 merkleRoot = 0x5df91eca63323dbb115087ef262075c5bcea99b8eaf95f520efb8d48ff447499;
IWorld(worldAddress).Init(muser, mloot, mplugin,merkleRoot);
diff --git a/packages/contracts/worlds.json b/packages/contracts/worlds.json
index e0ccf642..1f7af2c8 100644
--- a/packages/contracts/worlds.json
+++ b/packages/contracts/worlds.json
@@ -1,18 +1,18 @@
{
"17001": {
- "address": "0x050499eBdbBBc1216011dE07A48b5182c983Ae74",
- "blockNumber": 1069273
+ "address": "0x11f943bd1e3e37eb82216c01dc0a8d537cf4d31a",
+ "blockNumber": 1505273
},
"31337": {
- "address": "0x6e9474e9c83676b9a71133ff96db43e7aa0a4342"
+ "address": "0x7bd472fc101d3a7caf3064b7c5788965cb34685f"
},
"33784": {
"address": "0x6e9474e9c83676b9a71133ff96db43e7aa0a4342",
"blockNumber": 273
},
"421613": {
- "address": "0x2Bc1034975c3df48D6f3026802f372677844b85d",
- "blockNumber": 46508363
+ "address": "0x060f3f0915999fa84886f6e993cd95c4b2046b43",
+ "blockNumber": 58857166
},
"11155111": {
"address": "0xec7F8CF3B3640b1C5E8fD3c208776aad056D4fc3",