Initial Commit

This commit is contained in:
neon443
2024-05-26 19:24:17 +01:00
commit 32f03f50c3
12 changed files with 364 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CachedManifest</key>
<dict>
<key>manifestData</key>
<data>
eyJkZXBlbmRlbmNpZXMiOltdLCJkaXNwbGF5TmFtZSI6IlJORyIsInBhY2th
Z2VLaW5kIjp7InJvb3QiOnt9fSwicGxhdGZvcm1zIjpbeyJvcHRpb25zIjpb
XSwicGxhdGZvcm1OYW1lIjoiaW9zIiwidmVyc2lvbiI6IjE2LjAifV0sInBy
b2R1Y3RzIjpbeyJuYW1lIjoiUk5HIiwic2V0dGluZ3MiOlt7ImRpc3BsYXlW
ZXJzaW9uIjpbIjEuMCJdfSx7ImJ1bmRsZVZlcnNpb24iOlsiMSJdfSx7ImlP
U0FwcEluZm8iOlt7ImFjY2VudENvbG9yIjp7InByZXNldENvbG9yIjp7InBy
ZXNldENvbG9yIjp7InJhd1ZhbHVlIjoiYmx1ZSJ9fX0sImFwcENhdGVnb3J5
Ijp7InJhd1ZhbHVlIjoicHVibGljLmFwcC1jYXRlZ29yeS51dGlsaXRpZXMi
fSwiYXBwSWNvbiI6eyJwbGFjZWhvbGRlciI6eyJpY29uIjp7InJhd1ZhbHVl
IjoiY2FsY3VsYXRvciJ9fX0sImNhcGFiaWxpdGllcyI6W10sInN1cHBvcnRl
ZERldmljZUZhbWlsaWVzIjpbInBhZCIsInBob25lIl0sInN1cHBvcnRlZElu
dGVyZmFjZU9yaWVudGF0aW9ucyI6W3sicG9ydHJhaXQiOnt9fSx7ImxhbmRz
Y2FwZVJpZ2h0Ijp7fX0seyJsYW5kc2NhcGVMZWZ0Ijp7fX0seyJwb3J0cmFp
dFVwc2lkZURvd24iOnsiY29uZGl0aW9uIjp7ImRldmljZUZhbWlsaWVzIjpb
InBhZCJdfX19XX1dfV0sInRhcmdldHMiOlsiQXBwTW9kdWxlIl0sInR5cGUi
OnsiZXhlY3V0YWJsZSI6bnVsbH19XSwidGFyZ2V0TWFwIjp7IkFwcE1vZHVs
ZSI6eyJkZXBlbmRlbmNpZXMiOltdLCJleGNsdWRlIjpbXSwibmFtZSI6IkFw
cE1vZHVsZSIsInBhY2thZ2VBY2Nlc3MiOnRydWUsInBhdGgiOiIuIiwicmVz
b3VyY2VzIjpbXSwic2V0dGluZ3MiOlt7ImtpbmQiOnsiZW5hYmxlVXBjb21p
bmdGZWF0dXJlIjp7Il8wIjoiQmFyZVNsYXNoUmVnZXhMaXRlcmFscyJ9fSwi
dG9vbCI6InN3aWZ0In1dLCJ0eXBlIjoiZXhlY3V0YWJsZSJ9fSwidGFyZ2V0
cyI6W3siZGVwZW5kZW5jaWVzIjpbXSwiZXhjbHVkZSI6W10sIm5hbWUiOiJB
cHBNb2R1bGUiLCJwYWNrYWdlQWNjZXNzIjp0cnVlLCJwYXRoIjoiLiIsInJl
c291cmNlcyI6W10sInNldHRpbmdzIjpbeyJraW5kIjp7ImVuYWJsZVVwY29t
aW5nRmVhdHVyZSI6eyJfMCI6IkJhcmVTbGFzaFJlZ2V4TGl0ZXJhbHMifX0s
InRvb2wiOiJzd2lmdCJ9XSwidHlwZSI6ImV4ZWN1dGFibGUifV0sInRvb2xz
VmVyc2lvbiI6eyJfdmVyc2lvbiI6IjUuOS4wIn19
</data>
<key>manifestHash</key>
<data>
ZB/SWxlchPYcczKX1JhFcosGzSflW/fzQhD7DXE27Pk=
</data>
<key>schemaVersion</key>
<integer>4</integer>
<key>swiftPMVersionString</key>
<string>5.10.0-dev</string>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DocumentThumbnailConfiguration</key>
<dict>
<key>accentColorHash</key>
<data>
Fkd2iMDgBpnGz6RJejYS1+g8UyBitkslD+2JCBKO1Ug=
</data>
<key>appIconHash</key>
<data>
0tSlknALCSBljl1W7VDr+qgrH0o+EF6bz9i8uwgcLoc=
</data>
<key>thumbnailIsPrerendered</key>
<false/>
</dict>
</dict>
</plist>

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AppSettings</key>
<dict>
<key>appIconPlaceholderGlyphName</key>
<string>calculator</string>
<key>appSettingsVersion</key>
<integer>1</integer>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "7D3468E0-8930-45B0-9787-2F5420A82D30"
type = "1"
version = "2.0">
</Bucket>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>RNG.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>

26
ContentView.swift Normal file
View File

@@ -0,0 +1,26 @@
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
NavigationSplitView {
List {
NavigationLink {
DiceView()
.navigationTitle("Dice")
} label: {
HStack {
Text("Dice")
Spacer()
Image(systemName: "die.face.6.fill")
}
}
}
.navigationTitle("RNG")
.navigationBarTitleDisplayMode(.inline)
} detail: {
Image(systemName: "dice.fill")
}
}
}
}

72
DiceView.swift Normal file
View File

@@ -0,0 +1,72 @@
import SwiftUI
struct DiceView: View {
@State var generated: [Int] = []
@State var displayDies: [Int] = []
@State var history: [Int] = []
let columns = [GridItem(.adaptive(minimum: 50, maximum: 75))]
@State var dies: Double = 1
@State var multiDieMode = "plus"
var body: some View {
VStack {
List {
Section("Number of die") {
HStack {
Text(String(Int(dies)))
Slider(value: $dies, in: 1...10, step: 1)
}
}
Section("Multi die mode") {
Picker(selection: $multiDieMode, label: Text("")) {
Image(systemName: "plus").tag("plus")
Image(systemName: "multiply").tag("multiply")
}.pickerStyle(SegmentedPickerStyle())
}
Section("Visual") {
HStack {
Spacer()
if displayDies.isEmpty {
LazyVGrid(columns: columns, spacing: 10) {
ForEach(0..<displayDies.count, id: \.self) { index in
Image(systemName: "die.face.\(index > displayDies.count ? Int.random(in: 1...6) : displayDies[index])")
.resizable()
.scaledToFit()
.frame(width: 50, height: 50)
Image(systemName: multiDieMode)
.resizable()
.scaledToFit()
.frame(width: 25)
}
}.padding()
} else {
Text("Results are visualised here when you press the generate button")
}
Spacer()
}
}
Section("Result") {
Button("Generate") {
generated = rngN6DieArr(dies: Int(dies))
displayDies = generated
}
Text(String(arrCombine(arr: generated, combineMode: multiDieMode)))
.bold()
.font(.largeTitle)
}
Button("Test1") {
generated = [1, 2]
multiDieMode = "plus"
}
Button("Test2") {
generated = [1, 2]
multiDieMode = "multiply"
}
}
}
}
}
#Preview {
DiceView()
}

76
MyApp.swift Normal file
View File

@@ -0,0 +1,76 @@
import SwiftUI
@main
struct RNGApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
// array combiner, adds up all ints in an array
func totalIntArr(arr: [Int]) -> Int {
var total = 0
for num in arr {
total += num
}
return total
}
// array combiner, adds up all doubles in an array
func totalDoubleArr(arr: [Double]) -> Double {
var total: Double = 0
for num in arr {
total += num
}
return total
}
// array combiner, adds or multiplies all ints in an array
func arrCombine(arr: [Int], combineMode: String) -> Int {
var output = 0
if combineMode == "plus" {
for num in arr {
output += num
}
} else if combineMode == "multiply" {
output = 1
for num in arr {
output *= num
}
} else {
print("invalid combineMode '\(combineMode)'. must be 'plus' or 'multiply', returning 0")
return 0
}
return output
}
func rng(min: Int, max: Int, step: Int) -> Int {
let range = (max - min) / step + 1
var rng = Int.random(in: 0..<range)
rng = min + rng * step
return rng
}
func rng6Die() -> Int {
return Int.random(in: 1...6)
}
func rngCDie(min: Int, max: Int) -> Int {
return Int.random(in: min...max)
}
func rngN6DieArr(dies: Int) -> [Int] {
var output: [Int] = []
for _ in 1...dies {
output.append(rng6Die())
}
return output
}
func rngCDie(dies: Int, min: Int, max: Int) -> Int {
return 0
}

47
Package.swift Normal file
View File

@@ -0,0 +1,47 @@
// swift-tools-version: 5.9
// WARNING:
// This file is automatically generated.
// Do not edit it by hand because the contents will be replaced.
import PackageDescription
import AppleProductTypes
let package = Package(
name: "RNG",
platforms: [
.iOS("16.0")
],
products: [
.iOSApplication(
name: "RNG",
targets: ["AppModule"],
bundleIdentifier: "com.neon443.RNG",
teamIdentifier: "8626DL2GW3",
displayVersion: "1.0",
bundleVersion: "1",
appIcon: .placeholder(icon: .calculator),
accentColor: .presetColor(.blue),
supportedDeviceFamilies: [
.pad,
.phone
],
supportedInterfaceOrientations: [
.portrait,
.landscapeRight,
.landscapeLeft,
.portraitUpsideDown(.when(deviceFamilies: [.pad]))
],
appCategory: .utilities
)
],
targets: [
.executableTarget(
name: "AppModule",
path: ".",
swiftSettings: [
.enableUpcomingFeature("BareSlashRegexLiterals")
]
)
]
)

37
RNGView.swift Normal file
View File

@@ -0,0 +1,37 @@
import SwiftUI
struct CustomRNGView: View {
@State var rangeL: String = ""
@State var rangeH: String = ""
@State var show = false
var body: some View {
Text("Unimplemented")
Form {
HStack {
TextField("From", text: $rangeL)
.keyboardType(.numberPad)
Divider()
TextField("To", text: $rangeH)
.keyboardType(.numberPad)
}
HStack {
Text("Any number")
Divider()
HStack {
Text("From: ")
Text(rangeL)
Spacer()
}
HStack {
Text("To: ")
Text(rangeH)
Spacer()
}
}
}
}
}
#Preview {
CustomRNGView()
}