mirror of
https://github.com/hanzoai/ProjectTinySamples.git
synced 2026-09-24 00:01:34 +00:00
79 lines
2.4 KiB
C#
79 lines
2.4 KiB
C#
using Unity.Entities;
|
|
using Unity.Mathematics;
|
|
using Unity.Tiny.Input;
|
|
using Unity.Transforms;
|
|
using Unity.Tiny;
|
|
|
|
namespace Unity.Spaceship
|
|
{
|
|
public class RestartSystem : SystemBase
|
|
{
|
|
private EntityQuery m_AsteroidsQuery;
|
|
private EntityQuery m_MissileQuery;
|
|
|
|
protected override void OnCreate()
|
|
{
|
|
base.OnCreate();
|
|
|
|
RequireSingletonForUpdate<GameState>();
|
|
RequireSingletonForUpdate<HudShowState>();
|
|
RequireSingletonForUpdate<Player>();
|
|
|
|
m_AsteroidsQuery = GetEntityQuery(new ComponentType[]
|
|
{
|
|
ComponentType.ReadOnly<Asteroid>(), ComponentType.ReadOnly<SpriteRenderer>()
|
|
});
|
|
|
|
m_MissileQuery = GetEntityQuery(new ComponentType[]
|
|
{
|
|
ComponentType.ReadOnly<Missile>(), ComponentType.ReadOnly<SpriteRenderer>()
|
|
});
|
|
}
|
|
|
|
protected override void OnUpdate()
|
|
{
|
|
var gameState = GetSingleton<GameState>();
|
|
var input = World.GetExistingSystem<InputSystem>();
|
|
var playerEntity = GetSingletonEntity<Player>();
|
|
|
|
if (gameState.Value == GameStates.Start
|
|
&& IsPressingToStart(input))
|
|
{
|
|
// remove all stuff
|
|
EntityManager.DestroyEntity(m_AsteroidsQuery);
|
|
EntityManager.DestroyEntity(m_MissileQuery);
|
|
|
|
// put the ship back in the center
|
|
EntityManager.SetComponentData(playerEntity, new Translation
|
|
{
|
|
Value = float3.zero
|
|
});
|
|
EntityManager.SetComponentData(playerEntity, new Rotation
|
|
{
|
|
Value = quaternion.identity
|
|
});
|
|
|
|
AudioUtils.PlaySound(EntityManager, AudioTypes.ExtraShip);
|
|
|
|
gameState.Value = GameStates.InGame;
|
|
SetSingleton(gameState);
|
|
}
|
|
}
|
|
|
|
private static bool IsPressingToStart(InputSystem input)
|
|
{
|
|
var isTouchSupported = input.IsTouchSupported();
|
|
|
|
if (isTouchSupported
|
|
&& input.TouchCount() > 0
|
|
&& input.GetTouch(0).phase == TouchState.Began)
|
|
return true;
|
|
else if (!isTouchSupported
|
|
&& input.GetKeyDown(KeyCode.Space))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|