cukunity 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitmodules +0 -0
- data/.rspec +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +60 -0
- data/LICENSE.txt +20 -0
- data/README.md +214 -0
- data/Rakefile +51 -0
- data/Unity/Assets/Demo/Art/Buttons/down.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/down.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/left.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/left.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/ok.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/ok.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/options.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/options.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/play.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/play.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/quit.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/quit.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/retry.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/retry.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/right.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/right.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons/up.png +0 -0
- data/Unity/Assets/Demo/Art/Buttons/up.png.meta +28 -0
- data/Unity/Assets/Demo/Art/Buttons.meta +2 -0
- data/Unity/Assets/Demo/Art/clear.png +0 -0
- data/Unity/Assets/Demo/Art/clear.png.meta +28 -0
- data/Unity/Assets/Demo/Art/options.png +0 -0
- data/Unity/Assets/Demo/Art/options.png.meta +28 -0
- data/Unity/Assets/Demo/Art/sokoban.png +0 -0
- data/Unity/Assets/Demo/Art/sokoban.png.meta +28 -0
- data/Unity/Assets/Demo/Art.meta +2 -0
- data/Unity/Assets/Demo/Cubes/CrateCube.mat +0 -0
- data/Unity/Assets/Demo/Cubes/CrateCube.mat.meta +2 -0
- data/Unity/Assets/Demo/Cubes/CrateCube.prefab +0 -0
- data/Unity/Assets/Demo/Cubes/CrateCube.prefab.meta +2 -0
- data/Unity/Assets/Demo/Cubes/FloorCube.mat +0 -0
- data/Unity/Assets/Demo/Cubes/FloorCube.mat.meta +2 -0
- data/Unity/Assets/Demo/Cubes/FloorCube.prefab +0 -0
- data/Unity/Assets/Demo/Cubes/FloorCube.prefab.meta +2 -0
- data/Unity/Assets/Demo/Cubes/GoalCube.mat +0 -0
- data/Unity/Assets/Demo/Cubes/GoalCube.mat.meta +2 -0
- data/Unity/Assets/Demo/Cubes/GoalCube.prefab +0 -0
- data/Unity/Assets/Demo/Cubes/GoalCube.prefab.meta +2 -0
- data/Unity/Assets/Demo/Cubes/PlayerCube.mat +0 -0
- data/Unity/Assets/Demo/Cubes/PlayerCube.mat.meta +2 -0
- data/Unity/Assets/Demo/Cubes/PlayerCube.prefab +0 -0
- data/Unity/Assets/Demo/Cubes/PlayerCube.prefab.meta +2 -0
- data/Unity/Assets/Demo/Cubes/WallCube.mat +0 -0
- data/Unity/Assets/Demo/Cubes/WallCube.mat.meta +2 -0
- data/Unity/Assets/Demo/Cubes/WallCube.prefab +0 -0
- data/Unity/Assets/Demo/Cubes/WallCube.prefab.meta +2 -0
- data/Unity/Assets/Demo/Cubes.meta +2 -0
- data/Unity/Assets/Demo/Resources/MainMenu.prefab +0 -0
- data/Unity/Assets/Demo/Resources/MainMenu.prefab.meta +2 -0
- data/Unity/Assets/Demo/Resources/OptionsMenu.prefab +0 -0
- data/Unity/Assets/Demo/Resources/OptionsMenu.prefab.meta +2 -0
- data/Unity/Assets/Demo/Resources.meta +2 -0
- data/Unity/Assets/Demo/Scripts/CameraController.js +18 -0
- data/Unity/Assets/Demo/Scripts/CameraController.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/EnterPlayerName.js +21 -0
- data/Unity/Assets/Demo/Scripts/EnterPlayerName.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/GameLeftButton.js +18 -0
- data/Unity/Assets/Demo/Scripts/GameLeftButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/GameQuitButton.js +6 -0
- data/Unity/Assets/Demo/Scripts/GameQuitButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/GameRetryButton.js +7 -0
- data/Unity/Assets/Demo/Scripts/GameRetryButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/GameRightButton.js +18 -0
- data/Unity/Assets/Demo/Scripts/GameRightButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/GameUpButton.js +18 -0
- data/Unity/Assets/Demo/Scripts/GameUpButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/OnTouchGUIElementDown.js +34 -0
- data/Unity/Assets/Demo/Scripts/OnTouchGUIElementDown.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/PlayerData.js +3 -0
- data/Unity/Assets/Demo/Scripts/PlayerData.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/SokobanController.js +240 -0
- data/Unity/Assets/Demo/Scripts/SokobanController.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/TakeScreenShot.js +26 -0
- data/Unity/Assets/Demo/Scripts/TakeScreenShot.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/TitleOptionsButton.js +8 -0
- data/Unity/Assets/Demo/Scripts/TitleOptionsButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/TitleOptionsOkButton.js +8 -0
- data/Unity/Assets/Demo/Scripts/TitleOptionsOkButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/TitlePlayButton.js +6 -0
- data/Unity/Assets/Demo/Scripts/TitlePlayButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/TitleQuitButton.js +7 -0
- data/Unity/Assets/Demo/Scripts/TitleQuitButton.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/UpdateMovesLabel.js +26 -0
- data/Unity/Assets/Demo/Scripts/UpdateMovesLabel.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts/UpdatePlayerName.js +14 -0
- data/Unity/Assets/Demo/Scripts/UpdatePlayerName.js.meta +2 -0
- data/Unity/Assets/Demo/Scripts.meta +2 -0
- data/Unity/Assets/Demo/demo_game.unity +0 -0
- data/Unity/Assets/Demo/demo_game.unity.meta +2 -0
- data/Unity/Assets/Demo/demo_title.unity +0 -0
- data/Unity/Assets/Demo/demo_title.unity.meta +2 -0
- data/Unity/Assets/Demo.meta +2 -0
- data/Unity/Assets/Plugins/CukunityInstance.prefab +0 -0
- data/Unity/Assets/Plugins/CukunityInstance.prefab.meta +2 -0
- data/Unity/Assets/Plugins/CukunityServer.cs +871 -0
- data/Unity/Assets/Plugins/CukunityServer.cs.meta +2 -0
- data/Unity/Assets/Plugins/JsonFx.Json.dll +0 -0
- data/Unity/Assets/Plugins/JsonFx.Json.dll.meta +2 -0
- data/Unity/Assets/Plugins/iOS/CukunityServer.mm +242 -0
- data/Unity/Assets/Plugins/iOS/CukunityServer.mm.meta +2 -0
- data/Unity/Assets/Plugins/iOS.meta +2 -0
- data/Unity/Assets/Plugins.meta +2 -0
- data/Unity/Library/AudioManager.asset +0 -0
- data/Unity/Library/BuildSettings.asset +0 -0
- data/Unity/Library/DynamicsManager.asset +0 -0
- data/Unity/Library/EditorBuildSettings.asset +0 -0
- data/Unity/Library/EditorSettings.asset +0 -0
- data/Unity/Library/EditorUserBuildSettings.asset +0 -0
- data/Unity/Library/EditorUserSettings.asset +0 -0
- data/Unity/Library/InputManager.asset +0 -0
- data/Unity/Library/InspectorExpandedItems.asset +0 -0
- data/Unity/Library/MonoManager.asset +0 -0
- data/Unity/Library/NetworkManager.asset +0 -0
- data/Unity/Library/ProjectSettings.asset +0 -0
- data/Unity/Library/QualitySettings.asset +0 -0
- data/Unity/Library/TagManager.asset +0 -0
- data/Unity/Library/TimeManager.asset +0 -0
- data/Unity/ProjectSettings/AudioManager.asset +0 -0
- data/Unity/ProjectSettings/DynamicsManager.asset +0 -0
- data/Unity/ProjectSettings/EditorBuildSettings.asset +0 -0
- data/Unity/ProjectSettings/EditorSettings.asset +0 -0
- data/Unity/ProjectSettings/InputManager.asset +0 -0
- data/Unity/ProjectSettings/NavMeshLayers.asset +0 -0
- data/Unity/ProjectSettings/NetworkManager.asset +0 -0
- data/Unity/ProjectSettings/ProjectSettings.asset +0 -0
- data/Unity/ProjectSettings/QualitySettings.asset +0 -0
- data/Unity/ProjectSettings/TagManager.asset +0 -0
- data/Unity/ProjectSettings/TimeManager.asset +0 -0
- data/VERSION +1 -0
- data/bin/cukunity +7 -0
- data/cukunity.gemspec +298 -0
- data/features/get_scene_command.feature +39 -0
- data/features/i18n/ja/sokoban_clear.feature +109 -0
- data/features/install.feature +23 -0
- data/features/keyboard_input.feature +26 -0
- data/features/load_level_command.feature +36 -0
- data/features/run.feature +33 -0
- data/features/select_visible.feature +29 -0
- data/features/support/env.rb +11 -0
- data/features/touch_input.feature +96 -0
- data/lib/cukunity/cli/argument_parser.rb +103 -0
- data/lib/cukunity/cli/bootstrap_command.rb +39 -0
- data/lib/cukunity/cli/doctor_command.rb +150 -0
- data/lib/cukunity/cli/features_command.rb +35 -0
- data/lib/cukunity/cli/main.rb +18 -0
- data/lib/cukunity/cli/options.rb +8 -0
- data/lib/cukunity/cli.rb +11 -0
- data/lib/cukunity/cucumber/step_definitions/get_scene_command_steps.rb +37 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/get_scene_command_steps.rb +37 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/install_steps.rb +25 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/keyboard_input_steps.rb +17 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/load_level_command_steps.rb +17 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/run_steps.rb +25 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/select_visible_steps.rb +9 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja/touch_input_steps.rb +19 -0
- data/lib/cukunity/cucumber/step_definitions/i18n/ja.rb +9 -0
- data/lib/cukunity/cucumber/step_definitions/install_steps.rb +33 -0
- data/lib/cukunity/cucumber/step_definitions/keyboard_input_steps.rb +13 -0
- data/lib/cukunity/cucumber/step_definitions/load_level_command_steps.rb +17 -0
- data/lib/cukunity/cucumber/step_definitions/run_steps.rb +32 -0
- data/lib/cukunity/cucumber/step_definitions/select_visible_steps.rb +15 -0
- data/lib/cukunity/cucumber/step_definitions/touch_input_steps.rb +18 -0
- data/lib/cukunity/cucumber/support/platform_helpers.rb +105 -0
- data/lib/cukunity/cucumber/support/spec_helpers.rb +21 -0
- data/lib/cukunity/cucumber/support/transforms.rb +5 -0
- data/lib/cukunity/cucumber/support/unity_helpers.rb +35 -0
- data/lib/cukunity/cucumber.rb +28 -0
- data/lib/cukunity/drivers/android/app.rb +43 -0
- data/lib/cukunity/drivers/android/appkiller/.gitignore +9 -0
- data/lib/cukunity/drivers/android/appkiller/AndroidManifest.xml +17 -0
- data/lib/cukunity/drivers/android/appkiller/ant.properties +17 -0
- data/lib/cukunity/drivers/android/appkiller/build.xml +85 -0
- data/lib/cukunity/drivers/android/appkiller/proguard.cfg +40 -0
- data/lib/cukunity/drivers/android/appkiller/project.properties +11 -0
- data/lib/cukunity/drivers/android/appkiller/res/layout/main.xml +13 -0
- data/lib/cukunity/drivers/android/appkiller/res/values/strings.xml +4 -0
- data/lib/cukunity/drivers/android/appkiller/src/cukunity/appkiller/AppKiller.java +29 -0
- data/lib/cukunity/drivers/android/keyboard_input.rb +149 -0
- data/lib/cukunity/drivers/android/keycodes.rb +531 -0
- data/lib/cukunity/drivers/android/monkey_client.rb +65 -0
- data/lib/cukunity/drivers/android/process.rb +103 -0
- data/lib/cukunity/drivers/android/touch_input.rb +24 -0
- data/lib/cukunity/drivers/android/tunnel_client_methods.rb +22 -0
- data/lib/cukunity/drivers/android/unity_client.rb +27 -0
- data/lib/cukunity/drivers/android/utils.rb +50 -0
- data/lib/cukunity/drivers/android.rb +9 -0
- data/lib/cukunity/drivers/iOS/app.rb +32 -0
- data/lib/cukunity/drivers/iOS/keyboard_input.rb +104 -0
- data/lib/cukunity/drivers/iOS/process.rb +42 -0
- data/lib/cukunity/drivers/iOS/touch_input.rb +18 -0
- data/lib/cukunity/drivers/iOS/tunnel_client_methods.rb +27 -0
- data/lib/cukunity/drivers/iOS/uiautomation.rb +97 -0
- data/lib/cukunity/drivers/iOS/uiautomation_master.rb +152 -0
- data/lib/cukunity/drivers/iOS/uiautomation_slave.js +238 -0
- data/lib/cukunity/drivers/iOS/uiautomation_slave.rb +41 -0
- data/lib/cukunity/drivers/iOS/unity_client.rb +27 -0
- data/lib/cukunity/drivers/iOS/utils.rb +46 -0
- data/lib/cukunity/drivers/iOS.rb +9 -0
- data/lib/cukunity/exceptions.rb +24 -0
- data/lib/cukunity/keyboard_input_methods.rb +35 -0
- data/lib/cukunity/request_line_response_client_methods.rb +80 -0
- data/lib/cukunity/tasks/cucumber.rake +22 -0
- data/lib/cukunity/touch_input_methods.rb +19 -0
- data/lib/cukunity/unity/client_methods.rb +46 -0
- data/lib/cukunity/unity/command_facade.rb +67 -0
- data/lib/cukunity/unity/component.rb +39 -0
- data/lib/cukunity/unity/gameobject.rb +53 -0
- data/lib/cukunity/unity/hint.rb +27 -0
- data/lib/cukunity/unity/json_container.rb +48 -0
- data/lib/cukunity/unity/level.rb +6 -0
- data/lib/cukunity/unity/scene.rb +18 -0
- data/lib/cukunity/unity/screen.rb +45 -0
- data/lib/cukunity/unity/screen_hint_methods.rb +61 -0
- data/lib/cukunity/unity/text_hint_methods.rb +17 -0
- data/lib/cukunity/unity.rb +11 -0
- data/lib/cukunity/utils.rb +56 -0
- data/lib/cukunity.rb +19 -0
- metadata +411 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
fileFormatVersion: 1
|
2
|
+
guid: b4ab1a976dd34467e83eeedde66c11ea
|
3
|
+
TextureImporter:
|
4
|
+
importerVersion: 2
|
5
|
+
maxTextureSize: 1024
|
6
|
+
textureFormat: -3
|
7
|
+
grayscaleToAlpha: 0
|
8
|
+
npotScale: 1
|
9
|
+
generateCubemap: 0
|
10
|
+
isReadable: 0
|
11
|
+
textureType: 5
|
12
|
+
mipmaps:
|
13
|
+
generation: 0
|
14
|
+
correctGamma: 0
|
15
|
+
border: 0
|
16
|
+
filter: 0
|
17
|
+
fadeout: 0
|
18
|
+
fadeoutStart: 1
|
19
|
+
fadeoutEnd: 3
|
20
|
+
bumpmap:
|
21
|
+
generation: 0
|
22
|
+
bumpyness: 0.25
|
23
|
+
filter: 0
|
24
|
+
textureSettings:
|
25
|
+
filterMode: 0
|
26
|
+
anisoLevel: 1
|
27
|
+
mipmapBias: -1
|
28
|
+
wrapMode: 0
|
Binary file
|
@@ -0,0 +1,28 @@
|
|
1
|
+
fileFormatVersion: 1
|
2
|
+
guid: 9ea3e345f0dd647ffac034543bdc1a18
|
3
|
+
TextureImporter:
|
4
|
+
importerVersion: 2
|
5
|
+
maxTextureSize: 1024
|
6
|
+
textureFormat: -3
|
7
|
+
grayscaleToAlpha: 0
|
8
|
+
npotScale: 0
|
9
|
+
generateCubemap: 0
|
10
|
+
isReadable: 0
|
11
|
+
textureType: 2
|
12
|
+
mipmaps:
|
13
|
+
generation: 0
|
14
|
+
correctGamma: 0
|
15
|
+
border: 0
|
16
|
+
filter: 0
|
17
|
+
fadeout: 0
|
18
|
+
fadeoutStart: 1
|
19
|
+
fadeoutEnd: 3
|
20
|
+
bumpmap:
|
21
|
+
generation: 0
|
22
|
+
bumpyness: 0.25
|
23
|
+
filter: 0
|
24
|
+
textureSettings:
|
25
|
+
filterMode: 0
|
26
|
+
anisoLevel: 1
|
27
|
+
mipmapBias: -1
|
28
|
+
wrapMode: 1
|
Binary file
|
@@ -0,0 +1,28 @@
|
|
1
|
+
fileFormatVersion: 1
|
2
|
+
guid: 9ea7beff16a1a4da6add0be85103a872
|
3
|
+
TextureImporter:
|
4
|
+
importerVersion: 2
|
5
|
+
maxTextureSize: 1024
|
6
|
+
textureFormat: -3
|
7
|
+
grayscaleToAlpha: 0
|
8
|
+
npotScale: 0
|
9
|
+
generateCubemap: 0
|
10
|
+
isReadable: 0
|
11
|
+
textureType: 2
|
12
|
+
mipmaps:
|
13
|
+
generation: 0
|
14
|
+
correctGamma: 0
|
15
|
+
border: 0
|
16
|
+
filter: 0
|
17
|
+
fadeout: 0
|
18
|
+
fadeoutStart: 1
|
19
|
+
fadeoutEnd: 3
|
20
|
+
bumpmap:
|
21
|
+
generation: 0
|
22
|
+
bumpyness: 0.25
|
23
|
+
filter: 0
|
24
|
+
textureSettings:
|
25
|
+
filterMode: 0
|
26
|
+
anisoLevel: 1
|
27
|
+
mipmapBias: -1
|
28
|
+
wrapMode: 1
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
function Start()
|
2
|
+
{
|
3
|
+
InterpolateCamera(1.0);
|
4
|
+
}
|
5
|
+
|
6
|
+
function Update() {
|
7
|
+
InterpolateCamera(Time.deltaTime);
|
8
|
+
}
|
9
|
+
|
10
|
+
private function InterpolateCamera(t : float)
|
11
|
+
{
|
12
|
+
var target : Transform = GameObject.FindWithTag("Player").transform;
|
13
|
+
var angleToReach:float = Mathf.LerpAngle(transform.eulerAngles.y,target.eulerAngles.y-180,4*t);
|
14
|
+
var currentRotation:Quaternion = Quaternion.Euler(0,angleToReach,0);
|
15
|
+
transform.position = target.position+Vector3(0,9,0);
|
16
|
+
transform.position -= currentRotation*Vector3.forward*4;
|
17
|
+
transform.LookAt(target.position+Vector3(0,3,0));
|
18
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#pragma strict
|
2
|
+
|
3
|
+
function OnMouseDown()
|
4
|
+
{
|
5
|
+
ReadPlayerName();
|
6
|
+
}
|
7
|
+
|
8
|
+
function ReadPlayerName()
|
9
|
+
{
|
10
|
+
var keyboard : iPhoneKeyboard;
|
11
|
+
keyboard = iPhoneKeyboard.Open(PlayerData.nickname);
|
12
|
+
if (keyboard != null)
|
13
|
+
{
|
14
|
+
while (keyboard.done == false)
|
15
|
+
{
|
16
|
+
yield WaitForEndOfFrame();
|
17
|
+
}
|
18
|
+
PlayerData.nickname = keyboard.text;
|
19
|
+
keyboard = null;
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#pragma strict
|
2
|
+
|
3
|
+
private var sokoban : SokobanController;
|
4
|
+
|
5
|
+
function Awake()
|
6
|
+
{
|
7
|
+
sokoban = GameObject.Find("Sokoban").GetComponent(SokobanController);
|
8
|
+
}
|
9
|
+
|
10
|
+
function OnMouseDown()
|
11
|
+
{
|
12
|
+
sokoban.isTouchingLeft = true;
|
13
|
+
}
|
14
|
+
|
15
|
+
function OnMouseUp()
|
16
|
+
{
|
17
|
+
sokoban.isTouchingLeft = false;
|
18
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#pragma strict
|
2
|
+
|
3
|
+
private var sokoban : SokobanController;
|
4
|
+
|
5
|
+
function Awake()
|
6
|
+
{
|
7
|
+
sokoban = GameObject.Find("Sokoban").GetComponent(SokobanController);
|
8
|
+
}
|
9
|
+
|
10
|
+
function OnMouseDown()
|
11
|
+
{
|
12
|
+
sokoban.isTouchingRight = true;
|
13
|
+
}
|
14
|
+
|
15
|
+
function OnMouseUp()
|
16
|
+
{
|
17
|
+
sokoban.isTouchingRight = false;
|
18
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#pragma strict
|
2
|
+
|
3
|
+
private var sokoban : SokobanController;
|
4
|
+
|
5
|
+
function Awake()
|
6
|
+
{
|
7
|
+
sokoban = GameObject.Find("Sokoban").GetComponent(SokobanController);
|
8
|
+
}
|
9
|
+
|
10
|
+
function OnMouseDown()
|
11
|
+
{
|
12
|
+
sokoban.isTouchingUp = true;
|
13
|
+
}
|
14
|
+
|
15
|
+
function OnMouseUp()
|
16
|
+
{
|
17
|
+
sokoban.isTouchingUp = false;
|
18
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#pragma strict
|
2
|
+
|
3
|
+
var phases : TouchPhase[] = [TouchPhase.Began];
|
4
|
+
|
5
|
+
private var _guiElement : GUIElement;
|
6
|
+
|
7
|
+
function Awake()
|
8
|
+
{
|
9
|
+
_guiElement = gameObject.GetComponent(GUIElement);
|
10
|
+
}
|
11
|
+
|
12
|
+
function Update()
|
13
|
+
{
|
14
|
+
for (var touch : Touch in Input.touches)
|
15
|
+
{
|
16
|
+
for (var phase : TouchPhase in phases)
|
17
|
+
{
|
18
|
+
if (touch.phase == phase)
|
19
|
+
{
|
20
|
+
if (_guiElement.HitTest(touch.position, Camera.main))
|
21
|
+
{
|
22
|
+
if ((phase == TouchPhase.Ended) || (phase == TouchPhase.Canceled))
|
23
|
+
{
|
24
|
+
gameObject.SendMessage("OnMouseUp");
|
25
|
+
}
|
26
|
+
else
|
27
|
+
{
|
28
|
+
gameObject.SendMessage("OnMouseDown");
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
@@ -0,0 +1,240 @@
|
|
1
|
+
//
|
2
|
+
// source code adapted from:
|
3
|
+
//
|
4
|
+
// http://www.emanueleferonato.com/2011/03/09/3d-sokoban-prototype-with-unity/
|
5
|
+
//
|
6
|
+
private var initialLevels=[[1,1,1,1,0,0,0,0],[1,0,0,1,1,1,1,1],[1,0,2,0,0,3,0,1],[1,0,3,0,0,2,4,1],[1,1,1,0,0,1,1,1],[0,0,1,1,1,1,0,0]];
|
7
|
+
private var blocks : Transform;
|
8
|
+
|
9
|
+
private var levels = [[0]];
|
10
|
+
var moves : int = 0;
|
11
|
+
var wallCube : Transform;
|
12
|
+
var floorCube : Transform;
|
13
|
+
var goalCube: Transform;
|
14
|
+
var crateCube: Transform;
|
15
|
+
var playerCube:Transform;
|
16
|
+
private var isMoving:boolean;
|
17
|
+
private var isRotating:boolean;
|
18
|
+
private var rotationDir:int;
|
19
|
+
private var movingSteps:int;
|
20
|
+
private var dRow:int;
|
21
|
+
private var dCol:int;
|
22
|
+
private var playerRow:int;
|
23
|
+
private var playerCol:int;
|
24
|
+
private var movingCrate:String;
|
25
|
+
private var gameClearTexture : GUITexture;
|
26
|
+
function Awake () {
|
27
|
+
gameClearTexture = GameObject.Find("GameClear").GetComponent(GUITexture);
|
28
|
+
var blocksObj : GameObject = GameObject.Find("Blocks");
|
29
|
+
if (blocksObj == null) {
|
30
|
+
blocksObj = new GameObject("Blocks");
|
31
|
+
}
|
32
|
+
blocks = blocksObj.transform;
|
33
|
+
moves=0;
|
34
|
+
isMoving=false;
|
35
|
+
isRotating=false;
|
36
|
+
var crate:GameObject;
|
37
|
+
levels = initialLevels.Clone();
|
38
|
+
for (var i = 0; i < levels.length; i++) {
|
39
|
+
levels[i] = new int[initialLevels[i].Length];
|
40
|
+
for (var j = 0; j < levels[i].length; j++) {
|
41
|
+
levels[i][j] = initialLevels[i][j];
|
42
|
+
switch (levels[i][j]) {
|
43
|
+
case 0:
|
44
|
+
Instantiate(floorCube, Vector3 (i, -0.6, j), Quaternion.identity).parent = blocks;
|
45
|
+
break;
|
46
|
+
case 1:
|
47
|
+
Instantiate(floorCube, Vector3 (i, -0.6, j), Quaternion.identity).parent = blocks;
|
48
|
+
Instantiate(wallCube, Vector3 (i, 0, j), Quaternion.identity).parent = blocks;
|
49
|
+
break;
|
50
|
+
case 2:
|
51
|
+
Instantiate(goalCube, Vector3 (i, -0.6, j), Quaternion.identity).parent = blocks;
|
52
|
+
break;
|
53
|
+
case 3:
|
54
|
+
Instantiate(floorCube, Vector3 (i, -0.6, j), Quaternion.identity).parent = blocks;
|
55
|
+
var crateCube=Instantiate(crateCube, Vector3 (i, 0, j), Quaternion.identity);
|
56
|
+
crateCube.name="crate_"+i+"_"+j;
|
57
|
+
crateCube.parent = blocks;
|
58
|
+
break;
|
59
|
+
case 4:
|
60
|
+
Instantiate(floorCube, Vector3 (i, -0.6, j), Quaternion.identity).parent = blocks;
|
61
|
+
Instantiate(playerCube, Vector3 (i,0, j), Quaternion.identity).parent = blocks;
|
62
|
+
playerRow=i;
|
63
|
+
playerCol=j;
|
64
|
+
break;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
IsGameClear();
|
69
|
+
}
|
70
|
+
|
71
|
+
@System.NonSerialized
|
72
|
+
var isTouchingLeft : boolean = false;
|
73
|
+
@System.NonSerialized
|
74
|
+
var isTouchingRight : boolean = false;
|
75
|
+
@System.NonSerialized
|
76
|
+
var isTouchingUp : boolean = false;
|
77
|
+
|
78
|
+
private function IsGameClear() : boolean
|
79
|
+
{
|
80
|
+
for (var i = 0; i < levels.length; ++i)
|
81
|
+
{
|
82
|
+
for (var j = 0; j < levels[i].length; ++j)
|
83
|
+
{
|
84
|
+
// there is no crate in the goal cube?
|
85
|
+
if ((initialLevels[i][j] == 2) && (levels[i][j] != 5))
|
86
|
+
{
|
87
|
+
return false;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
}
|
91
|
+
return true;
|
92
|
+
}
|
93
|
+
|
94
|
+
private function IsPressingLeft() : boolean
|
95
|
+
{
|
96
|
+
if (Input.GetKeyDown(KeyCode.LeftArrow))
|
97
|
+
{
|
98
|
+
return true;
|
99
|
+
}
|
100
|
+
if (isTouchingLeft)
|
101
|
+
{
|
102
|
+
isTouchingLeft = false;
|
103
|
+
return true;
|
104
|
+
}
|
105
|
+
return false;
|
106
|
+
}
|
107
|
+
|
108
|
+
private function IsPressingRight() : boolean
|
109
|
+
{
|
110
|
+
if (Input.GetKeyDown(KeyCode.RightArrow))
|
111
|
+
{
|
112
|
+
return true;
|
113
|
+
}
|
114
|
+
if (isTouchingRight)
|
115
|
+
{
|
116
|
+
isTouchingRight = false;
|
117
|
+
return true;
|
118
|
+
}
|
119
|
+
return false;
|
120
|
+
}
|
121
|
+
|
122
|
+
private function IsPressingUp() : boolean
|
123
|
+
{
|
124
|
+
if (Input.GetKeyDown(KeyCode.UpArrow))
|
125
|
+
{
|
126
|
+
return true;
|
127
|
+
}
|
128
|
+
if (isTouchingUp)
|
129
|
+
{
|
130
|
+
isTouchingUp = false;
|
131
|
+
return true;
|
132
|
+
}
|
133
|
+
return false;
|
134
|
+
}
|
135
|
+
|
136
|
+
function Update() {
|
137
|
+
var gameClear : boolean = IsGameClear();
|
138
|
+
gameClearTexture.enabled = gameClear;
|
139
|
+
if (gameClear)
|
140
|
+
{
|
141
|
+
return;
|
142
|
+
}
|
143
|
+
var thePlayer:GameObject=GameObject.FindWithTag("Player");
|
144
|
+
if(!isMoving && !isRotating){
|
145
|
+
if (IsPressingUp()) {
|
146
|
+
switch(Mathf.Round(thePlayer.transform.eulerAngles.y)){
|
147
|
+
case 0 :
|
148
|
+
dRow=0;
|
149
|
+
dCol=-1;
|
150
|
+
break;
|
151
|
+
case 90 :
|
152
|
+
dRow=-1;
|
153
|
+
dCol=0;
|
154
|
+
break;
|
155
|
+
case 180 :
|
156
|
+
dRow=0;
|
157
|
+
dCol=1;
|
158
|
+
break;
|
159
|
+
case 270 :
|
160
|
+
dRow=1;
|
161
|
+
dCol=0;
|
162
|
+
break;
|
163
|
+
}
|
164
|
+
if (levels[playerRow+dRow][playerCol+dCol]==0 ||levels[playerRow+dRow][playerCol+dCol]==2){
|
165
|
+
++moves;
|
166
|
+
isMoving=true;
|
167
|
+
movingSteps=0;
|
168
|
+
}
|
169
|
+
else{
|
170
|
+
if (levels[playerRow+dRow][playerCol+dCol]==3||levels[playerRow+dRow][playerCol+dCol]==5) {
|
171
|
+
if (levels[playerRow+2*dRow][playerCol+2*dCol]==0||levels[playerRow+2*dRow][playerCol+2*dCol]==2) {
|
172
|
+
++moves;
|
173
|
+
movingCrate="crate_"+(playerRow+dRow)+"_"+(playerCol+dCol);
|
174
|
+
isMoving=true;
|
175
|
+
movingSteps=0;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
else{
|
181
|
+
if(IsPressingRight()){
|
182
|
+
isRotating=true;
|
183
|
+
rotationDir=5;
|
184
|
+
}
|
185
|
+
else{
|
186
|
+
if(IsPressingLeft()){
|
187
|
+
isRotating=true;
|
188
|
+
rotationDir=-5;
|
189
|
+
}
|
190
|
+
}
|
191
|
+
}
|
192
|
+
}
|
193
|
+
if(isMoving==true){
|
194
|
+
thePlayer.transform.Translate(Vector3.forward *-0.1);
|
195
|
+
if(movingCrate){
|
196
|
+
var theCrate:GameObject=GameObject.Find(movingCrate);
|
197
|
+
switch(Mathf.Round(thePlayer.transform.eulerAngles.y)){
|
198
|
+
case 0 :
|
199
|
+
theCrate.transform.Translate(Vector3.forward *-0.1);
|
200
|
+
break;
|
201
|
+
case 90 :
|
202
|
+
theCrate.transform.Translate(Vector3.right *-0.1);
|
203
|
+
break;
|
204
|
+
case 180 :
|
205
|
+
theCrate.transform.Translate(Vector3.forward *0.1);
|
206
|
+
break;
|
207
|
+
case 270 :
|
208
|
+
theCrate.transform.Translate(Vector3.right *0.1);
|
209
|
+
break;
|
210
|
+
}
|
211
|
+
}
|
212
|
+
movingSteps++;
|
213
|
+
if(movingSteps==10){
|
214
|
+
isMoving=false;
|
215
|
+
levels[playerRow+dRow][playerCol+dCol]+=4;
|
216
|
+
levels[playerRow][playerCol]-=4;
|
217
|
+
if(movingCrate){
|
218
|
+
levels[playerRow+2*dRow][playerCol+2*dCol]+=3;
|
219
|
+
levels[playerRow+dRow][playerCol+dCol]-=3;
|
220
|
+
theCrate.name="crate_"+(playerRow+2*dRow)+"_"+(playerCol+2*dCol);
|
221
|
+
movingCrate="";
|
222
|
+
}
|
223
|
+
playerRow+=dRow;
|
224
|
+
playerCol+=dCol;
|
225
|
+
|
226
|
+
}
|
227
|
+
}
|
228
|
+
if(isRotating==true){
|
229
|
+
thePlayer.transform.Rotate(0,rotationDir,0);
|
230
|
+
if(Mathf.Round(thePlayer.transform.eulerAngles.y)%90==0){
|
231
|
+
isRotating=false;
|
232
|
+
}
|
233
|
+
}
|
234
|
+
}
|
235
|
+
function Retry()
|
236
|
+
{
|
237
|
+
blocks.gameObject.name = "_Blocks";
|
238
|
+
Destroy(blocks.gameObject);
|
239
|
+
Awake();
|
240
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import System;
|
2
|
+
import System.IO;
|
3
|
+
|
4
|
+
function Update()
|
5
|
+
{
|
6
|
+
if (Input.GetKeyDown ("k"))
|
7
|
+
{
|
8
|
+
var resWidth : int = Screen.width;
|
9
|
+
var resHeight : int = Screen.height;
|
10
|
+
var rt = new RenderTexture(resWidth, resHeight, 24);
|
11
|
+
camera.targetTexture = rt;
|
12
|
+
var screenShot = new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false);
|
13
|
+
camera.Render();
|
14
|
+
RenderTexture.active = rt;
|
15
|
+
screenShot.ReadPixels(Rect(0, 0, resWidth, resHeight), 0, 0);
|
16
|
+
RenderTexture.active = null; // JC: added to avoid errors
|
17
|
+
camera.targetTexture = null;
|
18
|
+
Destroy(rt);
|
19
|
+
var bytes = screenShot.EncodeToPNG();
|
20
|
+
var dir : String = Path.Combine(Application.persistentDataPath, "screenshots");
|
21
|
+
var output = Path.Combine(dir, "screen" + DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss") + ".png");
|
22
|
+
Directory.CreateDirectory(dir);
|
23
|
+
Debug.Log("Saving screenshot: " + output);
|
24
|
+
File.WriteAllBytes(output, bytes);
|
25
|
+
}
|
26
|
+
}
|