diff --git a/mobile/run.go b/mobile/run.go index ec4c2d750..099ef0611 100644 --- a/mobile/run.go +++ b/mobile/run.go @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -// +build android ios darwin,arm darwin,arm64 - package mobile import ( @@ -30,6 +28,7 @@ type EventDispatcher interface { SetScreenScale(scale int) Render() error UpdateTouchesOnAndroid(action int, id int, x, y int) + UpdateTouchesOnIOS(phase int, ptr int, x, y int) } // Start starts the game and returns immediately. @@ -107,6 +106,10 @@ func (e *eventDispatcher) UpdateTouchesOnAndroid(action int, id int, x, y int) { } } +func (e *eventDispatcher) UpdateTouchesOnIOS(phase int, ptr int, x, y int) { + e.updateTouchesOnIOSImpl(phase, ptr, x, y) +} + func (e *eventDispatcher) updateTouches() { ts := []ui.Touch{} for id, position := range e.touches { diff --git a/mobile/touches_android.go b/mobile/touches_android.go new file mode 100644 index 000000000..50aeaf7e1 --- /dev/null +++ b/mobile/touches_android.go @@ -0,0 +1,19 @@ +// Copyright 2016 Hajime Hoshi +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mobile + +func (e *eventDispatcher) updateTouchesOnIOSImpl(phase int, ptr int, x, y int) { + panic("not reach") +} diff --git a/mobile/touches_ios.go b/mobile/touches_ios.go new file mode 100644 index 000000000..6be6b87db --- /dev/null +++ b/mobile/touches_ios.go @@ -0,0 +1,36 @@ +// Copyright 2016 Hajime Hoshi +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build ios darwin,arm darwin,arm64 + +package mobile + +// #cgo CFLAGS: -x objective-c +// #cgo LDFLAGS: -framework Foundation -framework UIKit +// +// #import +import "C" + +func (e *eventDispatcher) updateTouchesOnIOSImpl(phase int, ptr int, x, y int) { + switch phase { + case C.UITouchPhaseBegan, C.UITouchPhaseMoved, C.UITouchPhaseStationary: + e.touches[ptr] = position{x, y} + e.updateTouches() + case C.UITouchPhaseEnded, C.UITouchPhaseCancelled: + delete(e.touches, ptr) + e.updateTouches() + default: + panic("not reach") + } +}