Skip to content

Commit f182a16

Browse files
committed
feat: replace SimpleDrawer with EmptyDrawer for improved drawer structure
1 parent 7b16e70 commit f182a16

File tree

7 files changed

+29
-17
lines changed

7 files changed

+29
-17
lines changed

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/core/ColorfulProperties.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ open class ColorfulProperties @JvmOverloads constructor(
1616
* The paint.
1717
* */
1818
val paint: Paint = Paint(Paint.ANTI_ALIAS_FLAG),
19-
) : SimpleDrawer.SimpleProperties() {
19+
) : EmptyDrawer.SimpleProperties() {
2020

2121
init {
2222
paint.color = colors.primary

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/core/SimpleDrawer.kt renamed to virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/core/EmptyDrawer.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.yoimerdr.android.virtualjoystick.control.Control
1212
*
1313
* @property properties The properties associated with this control drawer.
1414
*/
15-
open class SimpleDrawer(
15+
open class EmptyDrawer(
1616
override val properties: DrawerProperties,
1717
) : ConfigurableDrawer {
1818

@@ -64,7 +64,17 @@ open class SimpleDrawer(
6464
*
6565
* Subclasses can override this method to perform initial setup.
6666
*/
67-
protected open fun configure() {}
67+
protected open fun onConfigured() {}
68+
69+
/**
70+
* Called once to configure the drawer.
71+
* */
72+
fun configure() {
73+
if (!mConfigured) {
74+
onConfigured()
75+
mConfigured = true
76+
}
77+
}
6878

6979
/**
7080
* Invalidates the drawer, resetting the recorded values.
@@ -108,11 +118,6 @@ open class SimpleDrawer(
108118

109119
@CallSuper
110120
override fun draw(canvas: Canvas, control: Control) {
111-
if (!mConfigured) {
112-
configure()
113-
mConfigured = true
114-
}
115-
116121
val direction = getDirection(control)
117122

118123
if (!isValid(control)) {

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/drawable/DrawableDrawer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import com.yoimerdr.android.virtualjoystick.api.drawable.DrawableBitCache
1414
import com.yoimerdr.android.virtualjoystick.api.log.LoggerSupplier.withLogger
1515
import com.yoimerdr.android.virtualjoystick.control.Control
1616
import com.yoimerdr.android.virtualjoystick.drawer.core.ControlDrawer
17-
import com.yoimerdr.android.virtualjoystick.drawer.core.SimpleDrawer
17+
import com.yoimerdr.android.virtualjoystick.drawer.core.EmptyDrawer
1818
import com.yoimerdr.android.virtualjoystick.drawer.core.ColorfulProperties
1919
import com.yoimerdr.android.virtualjoystick.extensions.greaterThan
2020
import com.yoimerdr.android.virtualjoystick.geometry.Circle
@@ -30,7 +30,7 @@ open class DrawableDrawer(
3030
* The drawable drawer properties.
3131
*/
3232
override val properties: DrawableProperties,
33-
) : SimpleDrawer(properties) {
33+
) : EmptyDrawer(properties) {
3434

3535
private var mCache: DrawableBitCache? = null
3636

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/shapes/arc/ArcDrawer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import com.yoimerdr.android.virtualjoystick.theme.ColorsScheme
1717
import androidx.core.graphics.withSave
1818
import com.yoimerdr.android.virtualjoystick.drawer.core.ControlDrawer
1919
import com.yoimerdr.android.virtualjoystick.drawer.core.ColorfulProperties
20-
import com.yoimerdr.android.virtualjoystick.drawer.core.SimpleDrawer
20+
import com.yoimerdr.android.virtualjoystick.drawer.core.EmptyDrawer
2121

2222
/**
2323
* A [ControlDrawer] that draws an arc.
@@ -27,7 +27,7 @@ open class ArcDrawer(
2727
* The arc drawer properties.
2828
*/
2929
override val properties: ArcProperties,
30-
) : SimpleDrawer() {
30+
) : EmptyDrawer() {
3131

3232
/**
3333
* @param colors The colors for the drawer.

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/shapes/circle/CircleDrawer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import androidx.annotation.ColorInt
77
import com.yoimerdr.android.virtualjoystick.control.Control
88
import com.yoimerdr.android.virtualjoystick.drawer.core.ControlDrawer
99
import com.yoimerdr.android.virtualjoystick.drawer.core.DrawerRadius
10-
import com.yoimerdr.android.virtualjoystick.drawer.core.SimpleDrawer
10+
import com.yoimerdr.android.virtualjoystick.drawer.core.EmptyDrawer
1111
import com.yoimerdr.android.virtualjoystick.drawer.core.ColorfulProperties
1212
import com.yoimerdr.android.virtualjoystick.geometry.Circle
1313
import com.yoimerdr.android.virtualjoystick.geometry.position.ImmutablePosition
@@ -18,7 +18,7 @@ import com.yoimerdr.android.virtualjoystick.theme.ColorsScheme
1818
* */
1919
open class CircleDrawer(
2020
override val properties: CircleProperties,
21-
) : SimpleDrawer() {
21+
) : EmptyDrawer() {
2222

2323
/**
2424
* @param colors The colors for the drawer.

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/drawer/shapes/path/PathDrawer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import androidx.annotation.ColorInt
77
import androidx.annotation.IntRange
88
import com.yoimerdr.android.virtualjoystick.control.Control
99
import com.yoimerdr.android.virtualjoystick.control.Control.Direction.Companion.quadrant
10-
import com.yoimerdr.android.virtualjoystick.drawer.core.SimpleDrawer
10+
import com.yoimerdr.android.virtualjoystick.drawer.core.EmptyDrawer
1111
import com.yoimerdr.android.virtualjoystick.drawer.core.ColorfulProperties
1212
import com.yoimerdr.android.virtualjoystick.theme.ColorsScheme
1313

@@ -16,7 +16,7 @@ import com.yoimerdr.android.virtualjoystick.theme.ColorsScheme
1616
* */
1717
abstract class PathDrawer(
1818
override val properties: PathProperties,
19-
) : SimpleDrawer() {
19+
) : EmptyDrawer() {
2020

2121
protected val path = Path()
2222

virtualjoystick/src/main/java/com/yoimerdr/android/virtualjoystick/views/JoystickView.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.yoimerdr.android.virtualjoystick.api.log.LoggerSupplier.withLogger
2929
import com.yoimerdr.android.virtualjoystick.control.Control.Direction.Companion.direction
3030
import com.yoimerdr.android.virtualjoystick.drawer.core.ConfigurableDrawer
3131
import com.yoimerdr.android.virtualjoystick.drawer.core.ColorfulProperties
32+
import com.yoimerdr.android.virtualjoystick.drawer.core.EmptyDrawer
3233
import com.yoimerdr.android.virtualjoystick.geometry.Circle
3334
import com.yoimerdr.android.virtualjoystick.extensions.firstOrdinal
3435
import kotlin.math.min
@@ -241,6 +242,8 @@ class JoystickView @JvmOverloads constructor(
241242
.invalidRadius(invalidRadius)
242243
.build()
243244

245+
val drawer = mControl.drawer as? EmptyDrawer
246+
drawer?.configure()
244247

245248
background = try {
246249
getCompatDrawable(backgroundRes)
@@ -461,7 +464,7 @@ class JoystickView @JvmOverloads constructor(
461464
mControl.setPosition(touchPosition)
462465
} catch (e: LowerNumberException) {
463466
withLogger("JoystickView") {
464-
error(e,)
467+
error(e)
465468
}
466469
return false
467470
}
@@ -631,6 +634,8 @@ class JoystickView @JvmOverloads constructor(
631634
*/
632635
fun setControlDrawer(drawer: ControlDrawer) {
633636
mControl.drawer = drawer
637+
if (drawer is EmptyDrawer)
638+
drawer.configure()
634639
invalidate()
635640
}
636641

@@ -647,6 +652,8 @@ class JoystickView @JvmOverloads constructor(
647652
setPosition(mControl.position)
648653
invalidate()
649654
}
655+
val drawer = this.drawer as? EmptyDrawer
656+
drawer?.configure()
650657
}
651658
}
652659

0 commit comments

Comments
 (0)