Finish typed MainActivity integration
ober
c924d235267a833e9b505bd225a494808b64d64d
--- a/templates/original-tactics-parts/MainActivity.kt.ss +++ b/templates/original-tactics-parts/MainActivity.kt.ss @@ -727,6 +727,53 @@ (let ((selected (maSpinnerSelected spinner))) (if (nullable-null? selected) fallback (maAnyToString (nullable-get selected))))) + (def (maMapIntValue (values : (Map String Int32)) (key : String)) : Int32 + (let ((value (map-ref-or-null values key))) + (if (nullable-null? value) (int32 0) (nullable-get value)))) + (def (maNewText (activity : MainActivity) (text : String) + (size : Float32) (bold : Bool)) : TextView + (let ((view (maTextView activity))) + (begin + (maTextSet view text) + (maTextSizeSet view size) + (maTextColorSet view UI_TEXT) + (if bold (maTypefaceSet view (maTypefaceBold)) (begin)) + view))) + (def (maNewInput (activity : MainActivity) (text : String) + (hint : String) (kind : Int32)) : EditText + (let ((view (maEditText activity))) + (begin + (maSingleLine view #t) + (maEditSetText view text) + (maHintSet view hint) + (maInputTypeSet view kind) + (maTextSizeSet (maEditAsText view) (float32 19.0)) + (maTextColorSet (maEditAsText view) UI_TEXT) + view))) + (def (maRow (activity : MainActivity)) : LinearLayout + (let ((layout (maLinearLayout activity))) + (begin + (maLayoutOrientationSet layout (maHorizontal)) + (maLayoutGravitySet layout (maGravityCenterVertical)) + layout))) + (def (maColumn (activity : MainActivity)) : LinearLayout + (let ((layout (maLinearLayout activity))) + (begin (maLayoutOrientationSet layout (maVertical)) layout))) + (def (maAddWeighted (layout : LinearLayout) (view : View) + (weight : Float32)) : Unit + (maLayoutAddViewParams layout view + (maWeightedLayoutParams (int32 0) (maWrapContent) weight))) + (def (maAddButtonRow (activity : MainActivity) (parent : LinearLayout) + (buttons : (List Button))) : Unit + (let ((layout (maRow activity))) + (begin + (for/fold ((ignored (int32 0))) + ((i (in-range (int32 0) (list-size buttons)))) + (begin + (maAddWeighted layout (maButtonAsView (list-ref buttons i)) + (float32 1.0)) + ignored)) + (maLayoutAddView parent (maLinearAsView layout))))) (class MainActivity () (extends Activity) (var endpointInput : EditText (modifiers private lateinit)) @@ -791,8 +838,14 @@ (mutable-list-empty JSONObject) (modifiers private)) (var alphaTruthReport : (Nullable JSONObject) (nullable-none JSONObject) (modifiers private)) (var betaTruthReport : (Nullable JSONObject) (nullable-none JSONObject) (modifiers private)) - (var shipIds : (List String) (list-of String "fed-tcc" "klingon-td7c") (modifiers private)) - (var shipChoices : (List ShipChoice) (list-of ShipChoice) (modifiers private)) + (var lastTruthKey : String "" (modifiers private)) + (var shipChoices : (List ShipChoice) + (list-of ShipChoice + (make-ShipChoice "fed-tcc" "Federation TCC" "Federation" + "embedded" (int32 0) "Federation TCC") + (make-ShipChoice "klingon-td7c" "Klingon TD7C" "Klingon" + "embedded" (int32 0) "Klingon TD7C")) + (modifiers private)) (var alphaTargetChoices : (List FireTargetChoice) (list-of FireTargetChoice) (modifiers private)) (var betaTargetChoices : (List FireTargetChoice) @@ -825,30 +878,10 @@ (def (dp (value : Int32)) : Int32 (maDp this value)) - (def (newText (text : String) (size : Float32) (bold : Bool)) : TextView - (modifiers private) - (let ((view (maTextView this))) - (begin - (maTextSet view text) - (maTextSizeSet view size) - (maTextColorSet view UI_TEXT) - (if bold (maTypefaceSet view (maTypefaceBold)) (begin)) - view))) - (def (newInput (text : String) (hint : String) (kind : Int32)) : EditText - (modifiers private) - (let ((view (maEditText this))) - (begin - (maSingleLine view #t) - (maEditSetText view text) - (maHintSet view hint) - (maInputTypeSet view kind) - (maTextSizeSet (maEditAsText view) (float32 19.0)) - (maTextColorSet (maEditAsText view) UI_TEXT) - view))) (def (numberInput (value : String) (hint : String)) : EditText - (modifiers private) (newInput value hint (maInputNumber))) + (modifiers private) (maNewInput this value hint (maInputNumber))) (def (textInput (value : String) (hint : String)) : EditText - (modifiers private) (newInput value hint (maInputText))) + (modifiers private) (maNewInput this value hint (maInputText))) (def (checkBox (label : String) (checked : Bool)) : CheckBox (modifiers private) (let ((view (maCheckBox this))) @@ -874,51 +907,28 @@ (begin (maAssetsPlay this (maSoundButton) (float32 0.38)) (invoke action)))) view))) - (def (row) : LinearLayout (modifiers private) - (let ((layout (maLinearLayout this))) - (begin - (maLayoutOrientationSet layout (maHorizontal)) - (maLayoutGravitySet layout (maGravityCenterVertical)) - layout))) - (def (column) : LinearLayout (modifiers private) - (let ((layout (maLinearLayout this))) - (begin (maLayoutOrientationSet layout (maVertical)) layout))) - (def (addWeighted (layout : LinearLayout) (view : View) - (weight : Float32)) : Unit - (modifiers private) - (maLayoutAddViewParams layout view - (maWeightedLayoutParams (int32 0) (maWrapContent) weight))) - (def (addButtonRow (parent : LinearLayout) - (buttons : (List Button))) : Unit - (modifiers private) - (let ((layout (row))) - (begin - (for/fold ((ignored (int32 0))) - ((i (in-range (int32 0) (list-size buttons)))) - (begin - (addWeighted layout (maButtonAsView (list-ref buttons i)) (float32 1.0)) - ignored)) - (maLayoutAddView parent (maLinearAsView layout))))) (def (stationPanel (title : String) (views : (List View))) : LinearLayout (modifiers private) - (let ((panel (column))) + (let ((panel (maColumn this))) (begin (maViewPadding (maLinearAsView panel) (dp (int32 8)) (dp (int32 8)) (dp (int32 8)) (dp (int32 8))) (maViewBackgroundSet (maLinearAsView panel) (maPanelBackground this UI_PANEL_DARK)) - (maLayoutAddView panel (maTextAsView (newText title (float32 18.0) #t))) + (maLayoutAddView panel + (maTextAsView (maNewText this title (float32 18.0) #t))) (for/fold ((ignored (int32 0))) ((i (in-range (int32 0) (list-size views)))) (begin (maLayoutAddView panel (list-ref views i)) ignored)) panel))) (def (buildUi) : View (modifiers private) - (let ((root (column)) (scroll (maScrollView this)) (content (column))) + (let ((root (maColumn this)) (scroll (maScrollView this)) + (content (maColumn this))) (begin (maViewBackgroundColor (maLinearAsView root) UI_BG) (maViewPadding (maLinearAsView root) (dp (int32 10)) (dp (int32 10)) (dp (int32 10)) (dp (int32 14))) - (set! status (newText "Starting" (float32 18.0) #t)) + (set! status (maNewText this "Starting" (float32 18.0) #t)) (set! endpointInput (textInput (maSelfServiceEndpoint this) "Rules endpoint")) (maEnabledSet (maEditAsView endpointInput) #f) @@ -961,8 +971,8 @@ (set! shipStatus (maShipStatus this)) (set! ssdDamage (maSsdDamage this)) (set! shipArt (maShipArt this)) - (set! battleHud (newText "No engagement" (float32 18.0) #t)) - (set! output (newText "" (float32 17.0) #f)) + (set! battleHud (maNewText this "No engagement" (float32 18.0) #t)) + (set! output (maNewText this "" (float32 17.0) #f)) (maLayoutAddView root (maTextAsView status)) (maLayoutAddView root (maTextAsView battleHud)) (maLayoutAddView content @@ -971,7 +981,7 @@ (list-of View (maSpinnerAsView alphaSpinner) (maSpinnerAsView betaSpinner))))) - (addButtonRow content + (maAddButtonRow this content (list-of Button (button "Health" (lambda () (maSelfHealth this))) (button "New Game" (lambda () (maSelfNewGame this))) @@ -979,7 +989,7 @@ (button "Auto Step" (lambda () (maSelfAutoStep this))) (button "Auto Battle" (lambda () (maSelfAutoBattle this))) (button "Stop" (lambda () (maSelfStopAuto this))))) - (addButtonRow content + (maAddButtonRow this content (list-of Button (button "Fed/Klingon" (lambda () (startPreset "fed-tcc" "klingon-td7c"))) @@ -1014,7 +1024,7 @@ (maSpinnerAsView alphaSeekingSpinner) (maEditAsView betaSeekingImpulseInput) (maSpinnerAsView betaSeekingSpinner))))) - (addButtonRow content + (maAddButtonRow this content (list-of Button (button "Actions" (lambda () (openActionConsolePanel))) (button "Verify Log" (lambda () (submitBattleLogNow "manual"))) @@ -1023,14 +1033,14 @@ (lambda () (useDisplacementDevice "alpha" (int32 2) (int32 -1)))) (button "B Disp" (lambda () (useDisplacementDevice "beta" (int32 -2) (int32 1)))))) - (addButtonRow content + (maAddButtonRow this content (list-of Button (button "Submit Orders" (lambda () (maSelfSubmitOrders this))) (button "Commit + Fire" (lambda () (maSelfCommitFire this))) (button "Fire" (lambda () (maSelfFire this))) (button "Advance" (lambda () (maSelfAdvance this))) (button "Run" (lambda () (maSelfRunCombat this))))) - (addButtonRow content + (maAddButtonRow this content (list-of Button (button "Map" (lambda () (maSelfOpenPanel this "Tactical Map" (maMapAsView tacticalMap)))) @@ -1203,8 +1213,6 @@ (begin)))))))) ignored))) (begin))) - (if (> (list-size ids) (int32 0)) - (begin (set! shipIds ids) (begin)) (begin)) (if (> (list-size choices) (int32 0)) (begin (set! shipChoices (maMutableShipListAsList choices)) @@ -1215,19 +1223,19 @@ (maSetSpinnerStrings this alphaSpinner labels) (maSetSpinnerStrings this betaSpinner labels)) (begin - (maSetSpinnerStrings this alphaSpinner shipIds) - (maSetSpinnerStrings this betaSpinner shipIds))) - (selectShipById alphaSpinner "fed-tcc") - (selectShipById betaSpinner "klingon-td7c") + (maSetSpinnerStrings this alphaSpinner + (list-of String "Federation TCC" "Klingon TD7C")) + (maSetSpinnerStrings this betaSpinner + (list-of String "Federation TCC" "Klingon TD7C")))) + (selectShip alphaSpinner "fed-tcc") + (selectShip betaSpinner "klingon-td7c") (maSelfSetStatus this (string-append "Ships loaded: " - (int32->string (list-size shipIds)))))))) + (int32->string (list-size shipChoices)))))))) (def (selectedShipId (spinner : Spinner) (fallback : String)) : String (modifiers private) (let ((index (maSpinnerSelectedPosition spinner))) (if (and (>= index (int32 0)) (< index (list-size shipChoices))) - (ShipChoice-id (list-ref shipChoices index)) - (if (and (>= index (int32 0)) (< index (list-size shipIds))) - (list-ref shipIds index) fallback)))) + (ShipChoice-id (list-ref shipChoices index)) fallback))) (def (newGame) : Unit (modifiers private) (maSelfCreateGame this (maSelfSelectedShip this alphaSpinner "fed-tcc") @@ -1689,12 +1697,12 @@ (maSpinnerMinimumHeight spinner (dp (int32 50)))) (def (actionRow (views : (Array View) (modifiers vararg))) : LinearLayout (modifiers private) - (let ((layout (row))) + (let ((layout (maRow this))) (begin (for/fold ((ignored (int32 0))) ((i (in-range (int32 0) (maViewArraySize views)))) (begin - (addWeighted layout (maViewArrayGet views i) (float32 1.0)) + (maAddWeighted layout (maViewArrayGet views i) (float32 1.0)) ignored)) layout))) (def (spinnerRow (label : String) (spinner : Spinner)) : LinearLayout @@ -1723,7 +1731,16 @@ (def (largeTextAdapter (items : (List String))) : SpinnerAdapter (modifiers private) (maStringAdapterFor this items)) (def (shipChoiceAdapter (items : (List ShipChoice))) : SpinnerAdapter - (modifiers private) (maStringAdapterFor this shipIds)) + (modifiers private) + (let ((labels (mutable-list-empty String))) + (begin + (for/fold ((ignored (int32 0))) + ((i (in-range (int32 0) (list-size items)))) + (begin + (mutable-list-add! labels + (ShipChoice-display (list-ref items i))) + ignored)) + (maStringAdapterFor this (maMutableStringListAsList labels))))) (def (configureSpinnerText (view : View) (dropdown : Bool)) : Unit (modifiers private) (let ((text (maViewAsTextOrNull view))) @@ -1894,26 +1911,20 @@ ignored)) (if (> (list-size labels) (int32 0)) (maSetSpinnerStrings this spinner labels) - (maSetSpinnerStrings this spinner shipIds)) - (selectShipById spinner preferredId)))) - (def (selectShipById (spinner : Spinner) (shipId : String)) : Unit + (maSetSpinnerStrings this spinner + (list-of String "Federation TCC" "Klingon TD7C"))) + (selectShip spinner preferredId)))) + (def (selectShip (spinner : Spinner) (shipId : String)) : Unit (modifiers private) (begin (for/fold ((ignored (int32 0))) - ((i (in-range (int32 0) - (if (> (list-size shipChoices) (int32 0)) - (list-size shipChoices) (list-size shipIds))))) + ((i (in-range (int32 0) (list-size shipChoices)))) (begin - (let ((currentId - (if (> (list-size shipChoices) (int32 0)) - (ShipChoice-id (list-ref shipChoices i)) - (list-ref shipIds i)))) + (let ((currentId (ShipChoice-id (list-ref shipChoices i)))) (if (equal? currentId shipId) (maSpinnerSelection spinner i) (begin))) ignored)) (begin))) - (def (selectShip (spinner : Spinner) (shipId : String)) : Unit - (modifiers private) (selectShipById spinner shipId)) (def (shipDisplayName (ship : JSONObject) (fallback : String)) : String (modifiers private) (let ((name (json-object-opt-string-default ship "name" ""))) @@ -1982,24 +1993,6 @@ (json-object-opt-json-object (nullable-get battle) actor))))) (begin))))) - (def (parseFireSelectionSimple (text : String)) : JSONObject - (modifiers private) - (let ((out (maJsonObject)) - (tokens (maStringSplitChar text #\space))) - (begin - (for/fold ((ignored (int32 0))) - ((i (in-range (int32 0) (list-size tokens)))) - (let ((token (string-trim (list-ref tokens i)))) - (begin - (if (string-blank? token) (begin) - (let ((parts (maStringSplitChar token #\:)) - (slots (maJsonArray))) - (begin - (maJsonArrayPutInt slots (int32 1)) - (maJsonPutArray out (list-ref parts (int32 0)) slots) - (begin)))) - ignored))) - out))) (def (setFireGroup (actor : String) (input : EditText) (group : Int32)) : Unit (modifiers private) @@ -2269,10 +2262,6 @@ (nullable-some (if (nullable-null? parsed) trimmed (int32->string (nullable-get parsed))))))))))))) - (def (mapIntValue (values : (Map String Int32)) (key : String)) : Int32 - (modifiers private) - (let ((value (map-ref-or-null values key))) - (if (nullable-null? value) (int32 0) (nullable-get value)))) (def (jsonObjectKeys (obj : JSONObject)) : (List String) (modifiers private) (let ((out (mutable-list-empty String)) (keys (maJsonKeys obj))) @@ -2527,7 +2516,7 @@ (let ((keys (maStringSetList (maMapStringIntKeys signature)))) (for/fold ((total (int32 0))) ((i (in-range (int32 0) (list-size keys)))) - (+ total (mapIntValue signature (list-ref keys i)))))) + (+ total (maMapIntValue signature (list-ref keys i)))))) (def (bestTruthMatch (shipSignature : (Map String Int32)) (candidates : JSONArray)) : (Nullable TruthMatch) (modifiers private) @@ -2551,8 +2540,8 @@ ((k (in-range (int32 0) (list-size shipKeys)))) (let ((key (list-ref shipKeys k))) - (let ((a (mapIntValue shipSignature key)) - (b (mapIntValue truth key))) + (let ((a (maMapIntValue shipSignature key)) + (b (maMapIntValue truth key))) (begin (set! overlap (+ overlap (if (< a b) a b))) (set! diff (+ diff (if (> a b) (- a b) (- b a)))) @@ -2564,7 +2553,7 @@ (begin (if (nullable-null? (map-ref-or-null shipSignature key)) - (set! diff (+ diff (mapIntValue truth key))) + (set! diff (+ diff (maMapIntValue truth key))) (begin)) ignored))) (let ((match @@ -3425,7 +3414,7 @@ (openPanel "Action Console" (buildActionConsoleView))) (def (buildActionConsoleView) : View (modifiers private) - (let ((view (newText (actionConsoleSubtitle) LABEL_TEXT_SP #f))) + (let ((view (maNewText this (actionConsoleSubtitle) LABEL_TEXT_SP #f))) (begin (maViewPadding (maTextAsView view) (dp (int32 14)) (dp (int32 14)) (dp (int32 14)) (dp (int32 14))) @@ -3444,13 +3433,13 @@ (renderBattleHud currentGame)))) (def (actionConsoleMessage (textValue : String)) : TextView (modifiers private) - (newText textValue LABEL_TEXT_SP #f)) + (maNewText this textValue LABEL_TEXT_SP #f)) (def (renderActionQueue (root : LinearLayout)) : Unit (modifiers private) (begin)) (def (actionConsoleCard (id : String) (alpha : (Nullable JSONObject)) (beta : (Nullable JSONObject))) : View (modifiers private) - (maTextAsView (newText "" (float32 18.0) #f))) + (maTextAsView (maNewText this "" (float32 18.0) #f))) (def (actionCardTop (alpha : (Nullable JSONObject)) (beta : (Nullable JSONObject))) : Int32 (modifiers private) (int32 0))