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