mirror of
https://github.com/neon443/RNG_Swift.git
synced 2026-03-11 06:49:12 +00:00
added description
This commit is contained in:
@@ -1,27 +1,29 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct DiceView: View {
|
struct DiceView: View {
|
||||||
@State var generated: [Int] = []
|
@State var generated: [Int] = [0]
|
||||||
@State var displayDies: [Int] = []
|
@State var displayDies: [Int] = []
|
||||||
|
@State var multiDieMode = "plus"
|
||||||
|
@State var result = 0
|
||||||
|
@State var resultDescription = ""
|
||||||
@State var history: [Int] = []
|
@State var history: [Int] = []
|
||||||
let columns = [GridItem(.adaptive(minimum: 50, maximum: 75))]
|
let columns = [GridItem(.adaptive(minimum: 25, maximum: 75))]
|
||||||
@State var dies: Double = 1
|
@State var dies: Double = 1
|
||||||
@State var multiDieMode = "plus"
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
List {
|
List {
|
||||||
Section("Number of die") {
|
Section("Number of die") {
|
||||||
HStack {
|
HStack {
|
||||||
Text(String(Int(dies)))
|
Text(String(Int(dies)))
|
||||||
Slider(value: $dies, in: 1...10, step: 1)
|
Slider(value: $dies, in: 1...10, step: 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Section("Multi die mode") {
|
Section("Multi die mode") {
|
||||||
Picker(selection: $multiDieMode, label: Text("")) {
|
Picker(selection: $multiDieMode, label: Text("")) {
|
||||||
Image(systemName: "plus").tag("plus")
|
Image(systemName: "plus").tag("plus")
|
||||||
Image(systemName: "multiply").tag("multiply")
|
Image(systemName: "multiply").tag("multiply")
|
||||||
}.pickerStyle(SegmentedPickerStyle())
|
}.pickerStyle(SegmentedPickerStyle())
|
||||||
}
|
}
|
||||||
Section("Visual") {
|
Section("Visual") {
|
||||||
HStack {
|
HStack {
|
||||||
Spacer()
|
Spacer()
|
||||||
@@ -30,16 +32,15 @@ struct DiceView: View {
|
|||||||
.font(.subheadline)
|
.font(.subheadline)
|
||||||
} else if displayDies.count != Int(dies) {
|
} else if displayDies.count != Int(dies) {
|
||||||
Text("Press Generate")
|
Text("Press Generate")
|
||||||
.font(.subheadline)
|
.font(.title)
|
||||||
} else {
|
} else {
|
||||||
LazyVGrid(columns: columns, spacing: 10) {
|
LazyVGrid(columns: columns, spacing: 10) {
|
||||||
|
|
||||||
ForEach(0..<displayDies.count, id: \.self) { index in
|
ForEach(0..<displayDies.count, id: \.self) { index in
|
||||||
Image(systemName: "die.face.\(index > displayDies.count ? Int.random(in: 1...6) : displayDies[index])")
|
Image(systemName: "die.face.\(index > displayDies.count ? Int.random(in: 1...6) : displayDies[index])")
|
||||||
.resizable()
|
.resizable()
|
||||||
.scaledToFit()
|
.scaledToFit()
|
||||||
.frame(width: 50, height: 50)
|
.frame(width: 50, height: 50)
|
||||||
if index != displayDies.count {
|
if index != displayDies.count-1 {
|
||||||
Image(systemName: multiDieMode)
|
Image(systemName: multiDieMode)
|
||||||
.resizable()
|
.resizable()
|
||||||
.scaledToFit()
|
.scaledToFit()
|
||||||
@@ -51,25 +52,48 @@ struct DiceView: View {
|
|||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Section("Result") {
|
|
||||||
Button("Generate") {
|
Button("Generate") {
|
||||||
generated = rngN6DieArr(dies: Int(dies))
|
generated = rngN6DieArr(dies: Int(dies))
|
||||||
displayDies = generated
|
displayDies = generated
|
||||||
|
result = arrCombine(arr: generated, combineMode: multiDieMode)
|
||||||
|
resultDescription = describeResult(inp: displayDies, combineMode: multiDieMode)
|
||||||
}
|
}
|
||||||
Text(String(arrCombine(arr: generated, combineMode: multiDieMode)))
|
Text(String(result))
|
||||||
.bold()
|
.bold()
|
||||||
.font(.largeTitle)
|
.font(.largeTitle)
|
||||||
}
|
Text(resultDescription)
|
||||||
Button("Test1") {
|
Button("Test") {
|
||||||
generated = [1, 2]
|
|
||||||
multiDieMode = "plus"
|
|
||||||
}
|
|
||||||
Button("Test2") {
|
|
||||||
generated = [1, 2]
|
|
||||||
multiDieMode = "multiply"
|
multiDieMode = "multiply"
|
||||||
|
generated = [2,3]
|
||||||
|
displayDies = generated
|
||||||
|
dies = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.animation(.spring, value: displayDies)
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func describeResult(inp: [Int], combineMode: String) -> String {
|
||||||
|
var len = inp.count-1
|
||||||
|
var result = ""
|
||||||
|
var symbol = ""
|
||||||
|
if inp.isEmpty {
|
||||||
|
return "0"
|
||||||
|
} else {
|
||||||
|
if combineMode == "plus" {
|
||||||
|
symbol = " + "
|
||||||
|
} else if combineMode == "multiply" {
|
||||||
|
symbol = " x "
|
||||||
|
}
|
||||||
|
for i in 0...len {
|
||||||
|
if i == len {
|
||||||
|
result += String(inp[i])
|
||||||
|
} else {
|
||||||
|
result += String(inp[i]) + symbol
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result += " = " + String(arrCombine(arr: inp, combineMode: combineMode))
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,10 @@ func rngN6DieArr(dies: Int) -> [Int] {
|
|||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
func rngCDie(dies: Int, min: Int, max: Int) -> Int {
|
func rngNCDie(dies: Int, min: Int, max: Int) -> [Int] {
|
||||||
|
var output: [Int] = []
|
||||||
return 0
|
for _ in 1...dies {
|
||||||
|
output.append(rngCDie(min: min, max: max))
|
||||||
|
}
|
||||||
|
return output
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user