private void Awake() { World.Calculate(); Controlable.Calculate(); FreeWay.Calculate(); Car.Calculate(); }
// Update is called once per frame void Update() { Ray my_ray = my_camera.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(my_ray.origin, 20 * my_ray.direction); RaycastHit info_on_hit; if (Physics.Raycast(my_ray, out info_on_hit)) { Controlable my_object = info_on_hit.transform.GetComponent<Controlable>(); if (currently_selected_object) { if (my_object != currently_selected_object) { currently_selected_object.deselect(); my_object.isSelected(); currently_selected_object = my_object; } } else { my_object.isSelected(); currently_selected_object = my_object; } my_object.isSelected = true; my_object.move_up(); } }
private static void Casulties(float victoryScore, Controlable target) { foreach (Unit unit in target.Units) { float UnitCount = unit.UnitCount; UnitCount -= UnitCount * victoryScore; unit.UnitCount = Convert.ToInt32(Math.Floor(UnitCount)); } }
//Action public void Attack(Controlable target) { //tjekker om positionen er 1 tile væk if ((Position.X == target.Position.X + 1 || Position.X == target.Position.X - 1 || Position.X == target.Position.X) && (Position.Y == target.Position.Y + 1 || Position.Y == target.Position.Y - 1 || Position.Y == target.Position.Y)) { // tjek hvis den ikke er diagonal og ikke sig selv if (target.Position.X != Position.X ^ target.Position.Y != Position.Y) { Game.Combat(this, target, Worldspace); } } }
public static CombatOutcome Combat(WorldspaceUnit attacker, Controlable defender, Worldspace worldspace) { int attackerDmg = 0; int defenderDmg = 0; for (int i = 0; i < attacker.Units.Count; i++) { attackerDmg += attacker.Units[i].Damage; } for (int i = 0; i < defender.Units.Count; i++) { defenderDmg += defender.Units[i].Damage; } if (attackerDmg > defenderDmg) { worldspace.Space[defender.Position.X, defender.Position.Y].TopLayer = new EmptySpace(); if (defender.GetType() == typeof(WorldspaceUnit)) { defender.Owner.ActiveUnits.Remove((WorldspaceUnit)defender); } else { defender.Owner.ActiveStructures.Remove((WorldspaceStructure)defender); } Casulties(defenderDmg / attackerDmg, attacker); return(CombatOutcome.Victory); } else if (attackerDmg < defenderDmg) { worldspace.Space[attacker.Position.X, attacker.Position.Y].TopLayer = new EmptySpace(); attacker.Owner.ActiveUnits.Remove(attacker); Casulties(attackerDmg / defenderDmg, defender); return(CombatOutcome.Defeat); } else { worldspace.Space[defender.Position.X, defender.Position.Y].TopLayer = new EmptySpace(); worldspace.Space[attacker.Position.X, attacker.Position.Y].TopLayer = new EmptySpace(); if (defender.GetType() == typeof(WorldspaceUnit)) { defender.Owner.ActiveUnits.Remove((WorldspaceUnit)defender); } else { defender.Owner.ActiveStructures.Remove((WorldspaceStructure)defender); } attacker.Owner.ActiveUnits.Remove(attacker); return(CombatOutcome.Draw); } }
static ISolidWeapon CreateSubWeapon() { ISolidWeapon solidweapon = new Controlable( SubDefaultLifeTime, new PhysicsState(), DefaultBodyFlags, SubDefaultShape, new ShipMovementInfo(DefaultMovementInfo), new ShipState(SubDefaultState), new ControlableSounds(), new WeaponsLogic(TargetingInfo.All, new EffectCollection(SubDefaultEffectCollection))); return(solidweapon); }
static ISolidWeapon CreateWeapon() { ISolidWeapon w = new Controlable( DefaultLifeTime, new PhysicsState(), DefaultBodyFlags, DefaultShape, new ShipMovementInfo(DefaultMovementInfo), new ShipState(DefaultState), new ControlableSounds(), new WeaponsLogic(TargetingInfo.All, new EffectCollection(DefaultEffectCollection))); w.ControlHandler = new DefaultControlHandler(); w.AddControler(null, new MissileControler(TargetingInfo.FromRequireAll(TargetingTypes.Enemy | TargetingTypes.Ship))); return(w); }
static ISolidWeapon[] CreateWeapons() { Coefficients coe = TimeWarp.Coefficients; int count = 4; ISolidWeapon[] weapons = new ISolidWeapon[count]; for (int pos = 0; pos < count; ++pos) { float radius = 5 + 5 * pos; weapons[pos] = new Controlable( DefaultLifeTimes[pos], MassInertia.FromSolidCylinder(.1f, radius), new PhysicsState(), DefaultBodyFlags, new ICollidableBodyPart[] { new RigidBodyPart(ALVector2D.Zero, (Polygon2D)Polygon2D.FromNumberofSidesAndRadius(8, radius), coe) }, new ShipMovementInfo(DefaultMovementInfo), new ShipState(DefaultState[pos]), new ControlableSounds("EnergyChargeUp", null), new WeaponsLogic(TargetingInfo.All, new EffectCollection(DefaultEffectCollections[pos]))); } return(weapons); }
void Update() { if (my_obj && ((Input.acceleration.x > 2 || Input.acceleration.x < -2) || (Input.acceleration.y > 2 || Input.acceleration.y < -2) || (Input.acceleration.z > 2 || Input.acceleration.z < -2))) { my_obj.transform.localScale += new Vector3(1, 1, 1); } if (my_obj && my_gyro != Input.gyro) { my_obj.transform.rotation = my_gyro.attitude; print(my_obj.transform.rotation); } my_gyro = Input.gyro; if (Input.touchCount > 0) { if (tapped) { countdown -= Time.deltaTime; } if (Input.touchCount == 2) { Touch touch1 = Input.GetTouch(0); Touch touch2 = Input.GetTouch(1); Vector2 touchOnePrevPos = touch1.position - touch1.deltaPosition; Vector2 touchTwoPrevPos = touch2.position - touch2.deltaPosition; float prevTouchDeltaMag = (touchOnePrevPos - touchTwoPrevPos).magnitude; float touchDeltaMag = (touch1.position - touch2.position).magnitude; float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag; float pinchAmount = deltaMagnitudeDiff * 0.2f * Time.deltaTime; if (deltaMagnitudeDiff > 2 || deltaMagnitudeDiff < -2) { if (my_obj) { my_obj.transform.localScale -= new Vector3(pinchAmount, pinchAmount, pinchAmount); } if (!my_obj) { Vector3 focalPoint = Vector3.zero; Vector3 direction = my_camera.transform.position - focalPoint; float newDistance = direction.magnitude / deltaMagnitudeDiff; my_camera.transform.position = newDistance * direction.normalized; } } else { Vector2 diff = touch2.position - touch1.position; var angle = Mathf.Rad2Deg * (Mathf.Atan2(diff.y, diff.x)); previousTouch2 = touch2; if (my_obj) { var initialobj_orie = my_obj.transform.rotation; my_obj.transform.rotation = initialobj_orie * Quaternion.AngleAxis(angle - initialobj_angle, my_obj.transform.forward); initialobj_angle = angle; } else { var initialcam_orie = my_camera.transform.rotation; my_camera.transform.rotation = initialcam_orie * Quaternion.AngleAxis(angle - initialcam_angle, my_camera.transform.forward); initialcam_angle = angle; } } } if (Input.GetTouch(0).phase == TouchPhase.Began) { tapped = true; tapIsUp = false; } if (Input.touchCount == 1) { Touch current_touch = Input.GetTouch(0); Ray my_ray = Camera.main.ScreenPointToRay(current_touch.position); RaycastHit info; if (countdown > 0) { if (Physics.Raycast(my_ray, out info)) { Controlable object_hit = info.transform.GetComponent <Controlable>(); if (object_hit) { if (my_obj) { my_obj.deselect(); my_obj = null; } object_hit.select(object_hit); my_obj = object_hit; } else { if (my_obj) { my_obj.deselect(); my_obj = null; } } } else { if (my_obj) { my_obj.deselect(); my_obj = null; } } } else { if (my_obj) { Vector3 cameraPos = my_camera.transform.position; my_obj.dragObject(my_ray, cameraPos); } if (!my_obj) { my_camera.transform.position += cameraSpeed * my_camera.transform.right * current_touch.deltaPosition.x + cameraSpeed * my_camera.transform.up * current_touch.deltaPosition.y; } } } if (Input.touchCount == 3 && my_obj) { Instantiate(my_obj, new Vector3(my_obj.transform.position.x * 2.0F, 0, 0), Quaternion.identity); my_obj = null; } if (Input.GetTouch(0).phase == TouchPhase.Ended) { tapped = false; countdown = 0.3f; } } }
internal void select(Controlable tempObJ) { go_red(); my_obj = tempObJ; }
/// <summary> /// A method to remove a controlable from the list of controlables the player is pushing input to. /// </summary> /// <param name="controlable">The controlable to remove.</param> public void removeControlable(Controlable controlable) { controlables.Remove(controlable); }
/// <summary> /// A method to add a Controlable to the player, that Controlable will receive input state from the player as long as the player is being updated. /// </summary> /// <param name="controlable">A object that implements the Controlable interface.</param> public void addControlable(Controlable controlable) { controlables.Add(controlable); }
internal void deselect() { go_white(); my_obj = null; }
// Start is called before the first frame update void Start() { my_obj = GetComponent <Controlable>(); }
// Start is called before the first frame update void Start() { des_Destionation = transform.position; my_renderer = GetComponent <Renderer>(); my_obj = GetComponent <Controlable>(); }