diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6f8811d4..91ce703b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -66,6 +66,11 @@
android:launchMode="singleTop"
android:theme="@style/PokerAnalyticsTheme.MenuDialog" />
+
+
if (Date().after(endDate)) {
this.showEndOfUseMessage()
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt
index da5ea31c..c4b04fda 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt
@@ -4,6 +4,7 @@ import android.animation.ValueAnimator
import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
+import android.graphics.Bitmap
import android.os.Bundle
import android.os.Handler
import android.view.*
@@ -17,6 +18,7 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.handhistory.Position
+import net.pokeranalytics.android.model.handhistory.Street
import net.pokeranalytics.android.model.realm.Player
import net.pokeranalytics.android.model.realm.handhistory.Action
import net.pokeranalytics.android.model.realm.handhistory.Card
@@ -30,6 +32,9 @@ import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheet
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.modules.datalist.DataListActivity
import net.pokeranalytics.android.ui.modules.handhistory.model.*
+import net.pokeranalytics.android.ui.modules.handhistory.replayer.HandStep
+import net.pokeranalytics.android.ui.modules.handhistory.replayer.ReplayerConfiguration
+import net.pokeranalytics.android.ui.modules.handhistory.replayer.TableCanvas
import net.pokeranalytics.android.ui.modules.handhistory.views.KeyboardListener
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager
@@ -680,6 +685,20 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL
private fun videoExport() {
+ val config = ReplayerConfiguration(this.model.handHistory)
+
+ val bitmap = Bitmap.createBitmap(480, 480, Bitmap.Config.ARGB_8888)
+ val tc = TableCanvas(bitmap)
+
+ // draw initial table
+ TableCanvas.initializeTable(config, tc, requireContext())
+
+ HandStep.build(this.model.handHistory).forEach {
+ it.draw(config, tc, requireContext())
+ }
+
+
+
// Timber.d("**** Start video test")
//
// val width = 480
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt
index a2a33d2e..4798c821 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt
@@ -30,7 +30,7 @@ interface ActionListListener : PlayerSetupCreationListener {
/***
* ActionList is the class that governs the poker rules and let the user create a HandHistory
*/
-class ActionList(var listener: ActionListListener) : ArrayList(), ActionManager {
+class ActionList(var listener: ActionListListener? = null) : ArrayList(), ActionManager {
private lateinit var handHistory: HandHistory
@@ -190,7 +190,7 @@ class ActionList(var listener: ActionListListener) : ArrayList()
*/
private fun fireListener() {
if (this.sizeChanged) {
- this.listener.actionCountChanged()
+ this.listener?.actionCountChanged()
this.sizeChanged = false
}
}
@@ -347,7 +347,7 @@ class ActionList(var listener: ActionListListener) : ArrayList()
}
if (activePositions.isNotEmpty()) {
- this.listener.actionCountChanged()
+ this.listener?.actionCountChanged()
}
}
@@ -417,7 +417,7 @@ class ActionList(var listener: ActionListListener) : ArrayList()
if (nextStreet != null && this.firstOrNull { it.street == nextStreet } == null) {
if (nextStreet == Street.SUMMARY) {
- this.listener.actionCountChanged() // force recreation of builder rows
+ this.listener?.actionCountChanged() // force recreation of builder rows
} else {
createStreet(nextStreet)
}
@@ -506,7 +506,7 @@ class ActionList(var listener: ActionListListener) : ArrayList()
playerSetup.stack = stack
if (created) {
- this.listener.playerSetupCreated()
+ this.listener?.playerSetupCreated()
}
}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt
index 64540b3d..1c06b0b4 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt
@@ -1,5 +1,7 @@
package net.pokeranalytics.android.ui.modules.handhistory.model
+import android.content.Context
+import android.graphics.Canvas
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.handhistory.Position
import net.pokeranalytics.android.model.handhistory.Street
@@ -7,6 +9,9 @@ import net.pokeranalytics.android.model.realm.handhistory.Action
import net.pokeranalytics.android.model.realm.handhistory.HandHistory
import net.pokeranalytics.android.model.realm.handhistory.toReadRow
import net.pokeranalytics.android.ui.modules.handhistory.HandRowType
+import net.pokeranalytics.android.ui.modules.handhistory.replayer.HandStep
+import net.pokeranalytics.android.ui.modules.handhistory.replayer.ReplayerConfiguration
+import net.pokeranalytics.android.ui.modules.handhistory.replayer.TableCanvas
import kotlin.math.max
/***
@@ -33,7 +38,7 @@ class ComputedAction(var manager: ActionManager,
var action: Action,
var totalPotSize: Double = 0.0,
var position: Position
-) : HandHistoryRow, PositionalRow {
+) : HandHistoryRow, PositionalRow, HandStep {
/***
* The remaining stack before acting
@@ -303,4 +308,8 @@ class ComputedAction(var manager: ActionManager,
override val positionIndex: Int
get() { return this.action.position }
+ override fun draw(configuration: ReplayerConfiguration, canvas: Canvas, context: Context) {
+ TableCanvas.drawAction(this, configuration, canvas, context)
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ChipCanvas.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ChipCanvas.kt
new file mode 100644
index 00000000..93575206
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ChipCanvas.kt
@@ -0,0 +1,7 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.graphics.Canvas
+
+class ChipCanvas : Canvas() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/HandStep.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/HandStep.kt
new file mode 100644
index 00000000..e0c46429
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/HandStep.kt
@@ -0,0 +1,34 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.content.Context
+import android.graphics.Canvas
+import net.pokeranalytics.android.model.handhistory.Street
+import net.pokeranalytics.android.model.realm.handhistory.HandHistory
+import net.pokeranalytics.android.ui.modules.handhistory.model.ActionList
+
+interface HandStep {
+
+ fun draw(configuration: ReplayerConfiguration, canvas: Canvas, context: Context)
+
+ companion object {
+
+ fun build(handHistory: HandHistory): List {
+
+ val actionList = ActionList()
+ actionList.load(handHistory)
+
+ val steps = mutableListOf()
+ Street.values().forEach { street ->
+ steps.add(street)
+
+ val streetActions = actionList.filter { it.street == street }
+ for (action in streetActions) {
+ steps.add(action)
+ }
+ }
+ return steps
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/PlayerCanvas.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/PlayerCanvas.kt
new file mode 100644
index 00000000..a1d39fc6
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/PlayerCanvas.kt
@@ -0,0 +1,33 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.graphics.Canvas
+import net.pokeranalytics.android.model.realm.Player
+import net.pokeranalytics.android.model.realm.handhistory.Card
+
+class PlayerCanvas : Canvas() {
+
+ fun setPlayer(player: Player) {
+
+ }
+
+ fun setRemainingStack(stack: Double) {
+
+ }
+
+ fun setPicture(file: String) {
+
+ }
+
+ fun setCards(cards: List) {
+
+ }
+
+ fun showCards(show: Boolean) {
+
+ }
+
+ fun fold() {
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt
new file mode 100644
index 00000000..6df0dde2
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt
@@ -0,0 +1,13 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import net.pokeranalytics.android.model.realm.handhistory.HandHistory
+
+class ReplayerConfiguration(var handHistory: HandHistory) {
+
+ val speed: Double = 1.0
+
+ val showVillainHands: Boolean = true
+
+}
+
+
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerFragment.kt
new file mode 100644
index 00000000..e344db4b
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerFragment.kt
@@ -0,0 +1,56 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.ui.fragment.components.BaseFragment
+
+class ReplayerFragment : BaseFragment() {
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ super.onCreateView(inflater, container, savedInstanceState)
+ return inflater.inflate(R.layout.fragment_replayer, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initData()
+ initUI()
+ }
+
+ private fun initData() {
+
+ }
+
+ private fun initUI() {
+
+ }
+
+ fun play() {
+
+ }
+
+ fun resume() {
+
+ }
+
+ fun nextAction() {
+
+ }
+
+ fun previousAction() {
+
+ }
+
+ fun nextHand() {
+
+ }
+
+ fun previousHand() {
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerView.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerView.kt
new file mode 100644
index 00000000..410fc1ae
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerView.kt
@@ -0,0 +1,26 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.content.Context
+import android.graphics.Canvas
+import android.util.AttributeSet
+import android.view.View
+import timber.log.Timber
+
+class ReplayerView(context: Context, attrs: AttributeSet) : View(context, attrs) {
+
+ lateinit var replayerConfiguration: ReplayerConfiguration
+
+ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
+ Timber.d("ReplayerView > onMeasure")
+ }
+
+ override fun onDraw(canvas: Canvas?) {
+ Timber.d("ReplayerView > onDraw")
+
+ canvas?.let {
+// TableCanvas.draw(this.replayerConfiguration, it, context)
+ }
+
+ }
+
+}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableCanvas.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableCanvas.kt
new file mode 100644
index 00000000..44923a03
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableCanvas.kt
@@ -0,0 +1,51 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.content.Context
+import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.RectF
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.model.handhistory.Street
+import net.pokeranalytics.android.model.realm.handhistory.HandHistory
+import net.pokeranalytics.android.ui.modules.handhistory.model.ComputedAction
+
+class TableCanvas(bitmap: Bitmap) : Canvas(bitmap) {
+
+ companion object {
+ const val STROKE_WIDTH = 20.0f
+
+ fun initializeTable(config: ReplayerConfiguration, canvas: Canvas, context: Context) {
+
+ }
+
+ fun drawStreet(street: Street, config: ReplayerConfiguration, canvas: Canvas, context: Context) {
+
+ }
+
+ fun drawAction(action: ComputedAction, config: ReplayerConfiguration, canvas: Canvas, context: Context) {
+
+ }
+
+ ////////
+ fun setPot(pot: Double, totalPot: Double) {
+
+ }
+
+ }
+
+ fun load(context: Context) {
+ // create canvasses
+
+ val paint = Paint()
+ paint.color = context.getColor(R.color.green)
+ paint.style = Paint.Style.STROKE
+ paint.strokeWidth = STROKE_WIDTH
+ paint.isAntiAlias = true
+
+ val rect = RectF(10f, 10f, 10f, 10.0f)
+ drawRoundRect(rect, 8f, 8f, paint)
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TestActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TestActivity.kt
new file mode 100644
index 00000000..24b367ac
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TestActivity.kt
@@ -0,0 +1,35 @@
+package net.pokeranalytics.android.ui.modules.handhistory.replayer
+
+import android.graphics.Bitmap
+import android.os.Bundle
+import kotlinx.android.synthetic.main.activity_test.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.ui.activity.components.BaseActivity
+
+class TestActivity : BaseActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_test)
+
+ initUI()
+ }
+
+ fun initUI() {
+
+ }
+
+ override fun onStart() {
+ super.onStart()
+ val bm = Bitmap.createBitmap(
+ this.container.width,
+ this.container.height,
+ Bitmap.Config.ARGB_8888)
+
+ val tc = TableCanvas(bm)
+ tc.load(this)
+
+ this.image_view.setImageBitmap(bm)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml
new file mode 100644
index 00000000..a00fa0c5
--- /dev/null
+++ b/app/src/main/res/layout/activity_test.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_replayer.xml b/app/src/main/res/layout/fragment_replayer.xml
new file mode 100644
index 00000000..385acd4c
--- /dev/null
+++ b/app/src/main/res/layout/fragment_replayer.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file