local s=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local D=(game:GetService("\080\108\097\121\101\114\115")).LocalPlayer local G=s:WaitForChild("\108\105\098")local w=s:WaitForChild("\099\111\109\109\111\110")local Y=require(G:WaitForChild("\082\111\097\099\116"))local j=require(G:WaitForChild("\082\111\097\099\116\082\111\100\117\120"))local m=require(w:WaitForChild("\083\101\108\101\099\116\111\114\115"))local b=require(w:WaitForChild("\068\105\099\116\105\111\110\097\114\121"))local h=script.Parent local O=require(h:WaitForChild("\083\116\097\116\115\070\114\097\109\101"))local V=require(h:WaitForChild("\067\104\097\110\103\101\108\111\103\086\105\101\119"))local c=require(h:WaitForChild("\083\101\116\116\105\110\103\115\086\105\101\119"))local v=require(h:WaitForChild("\073\110\118\101\110\116\111\114\121\086\105\101\119"))local N=require(h:WaitForChild("\068\101\118\080\114\111\100\117\099\116\083\104\111\112\086\105\101\119"))local i=require(h:WaitForChild("\083\104\097\100\111\119\101\100\084\101\120\116\076\097\098\101\108"))local M=require(h:WaitForChild("\083\104\111\112\086\105\101\119"))local x=require(h:WaitForChild("\083\105\100\101\077\101\110\117"))local I=require(h:WaitForChild("\086\101\114\115\105\111\110\076\097\098\101\108"))local q=Y.Component:extend("\065\112\112")function q.init(D,s) end function q.didMount(s) end function q.render(s)local D={changelog=Y.createElement(V,s.props);settings=Y.createElement(c,s.props);inventory=Y.createElement(v,{clientApi=s.props.clientApi,viewportSize=s.props.viewportSize});devproducts=Y.createElement(N,{clientApi=s.props.clientApi,viewportSize=s.props.viewportSize,view=s.props.view}),shop=Y.createElement(M,{clientApi=s.props.clientApi,viewportSize=s.props.viewportSize})}return Y.createElement("\083\099\114\101\101\110\071\117\105",{Name="\103\097\109\101\071\117\105",ResetOnSpawn=false;ZIndexBehavior=Enum.ZIndexBehavior.Sibling},b.join({statframe=Y.createElement(O,s.props);sideMenu=Y.createElement(x,s.props),versionLabel=Y.createElement(I,s.props);likesLabel=Y.createElement(i,{AnchorPoint=Vector2.new(1,1);Position=UDim2.new(1,-16,1,-16),Size=UDim2.new(.33333333333333,0,.066666666666667,0),BackgroundTransparency=1;TextStrokeTransparency=0;Text="\069\110\106\111\121\105\110\103 \116\104\101 \103\097\109\101\063 \076\101\097\118\101 \097 \108\105\107\101 \240\159\145\141\033";Font=Enum.Font.GothamBlack;TextScaled=true;TextXAlignment=Enum.TextXAlignment.Right;TextYAlignment=Enum.TextYAlignment.Bottom})},D))end local function d(s,D)return{view=m.getUIView(s)}end return(j.connect(d,nil))(q)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = game:GetService("Players").LocalPlayer

local lib = ReplicatedStorage:WaitForChild("lib")
local common = ReplicatedStorage:WaitForChild("common")

local Roact = require(lib:WaitForChild("Roact"))
local RoactRodux = require(lib:WaitForChild("RoactRodux"))

local Selectors = require(common:WaitForChild("Selectors"))
local Dictionary = require(common:WaitForChild("Dictionary"))

local component = script.Parent

local StatsFrame = require(component:WaitForChild("StatsFrame"))
local ChangelogView = require(component:WaitForChild("ChangelogView"))
local SettingsView = require(component:WaitForChild("SettingsView"))
local InventoryView = require(component:WaitForChild("InventoryView"))
local DevProductShopView = require(component:WaitForChild("DevProductShopView"))
local ShadowedTextLabel = require(component:WaitForChild("ShadowedTextLabel"))
local ShopView = require(component:WaitForChild("ShopView"))
local SideMenu = require(component:WaitForChild("SideMenu"))
local VersionLabel = require(component:WaitForChild("VersionLabel"))

local App = Roact.Component:extend("App")

function App:init(props)

end

function App:didMount()

end

function App:render()

    local views = {
        changelog = Roact.createElement(ChangelogView, self.props),
        settings = Roact.createElement(SettingsView, self.props),
        inventory = Roact.createElement(InventoryView, {clientApi = self.props.clientApi, viewportSize = self.props.viewportSize}),
        devproducts = Roact.createElement(DevProductShopView, {clientApi = self.props.clientApi, viewportSize = self.props.viewportSize, view = self.props.view}),
        shop = Roact.createElement(ShopView, {clientApi = self.props.clientApi, viewportSize = self.props.viewportSize}),
    }

    return Roact.createElement("ScreenGui", {
        Name = "gameGui",
        ResetOnSpawn = false,
        ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
    }, Dictionary.join({
            statframe = Roact.createElement(StatsFrame, self.props),

            sideMenu = Roact.createElement(SideMenu, self.props),

            versionLabel = Roact.createElement(VersionLabel, self.props),

            likesLabel = Roact.createElement(ShadowedTextLabel, {
                AnchorPoint = Vector2.new(1,1),
                Position = UDim2.new(1,-16,1,-16),
                Size = UDim2.new(1/3,0,1/15,0),
                BackgroundTransparency = 1,
                TextStrokeTransparency = 0,
                Text = "Enjoying the game? Leave a like 👍!",
                Font = Enum.Font.GothamBlack,
                TextScaled = true,
                TextXAlignment = Enum.TextXAlignment.Right,
                TextYAlignment = Enum.TextYAlignment.Bottom,
            })
        }, views)
    )
end

local function mapStateToProps(state,props)
    return {
        view = Selectors.getUIView(state),
    }
end

return RoactRodux.connect(mapStateToProps,nil)(App)