예제 #1
0
    void Start()
    {
        RaycastHit hitData;

        traceFX.SetPosition(0, transform.position);

        if (Physics.Linecast(transform.position, transform.position + transform.forward * 10000, out hitData, hitMask))
        {
            Instantiate(impactFX, hitData.point, Quaternion.LookRotation(hitData.normal));

            traceFX.SetPosition(1, hitData.point);

            DamageModule dmgmodule = hitData.transform.root.GetComponent <DamageModule> ();

            if (dmgmodule != null)
            {
                dmgmodule.TakeDamage("Generic", damage);
            }
        }
        else
        {
            traceFX.SetPosition(1, transform.position + transform.forward * 10000);
        }

        currentTraceWidth = defaultTraceWidth;
    }
예제 #2
0
        /// <summary>
        /// Recharges our Shield by the amount in our ShieldData.
        /// Clamped to the max health value.
        /// </summary>
        public void Recharge()
        {
            // Works out how much shield strength we can recharge so that our shield does not exceed it's maximum
            float amountToHeal = MathHelper.Clamp(DamageModule.Health + ShieldData.ShieldRechargePerTurn, 0, ShieldData.MaxShieldStrength);

            // Heal the shield by damaging a negative amount
            DamageModule.Damage(-ShieldData.ShieldRechargePerTurn, null);
        }
예제 #3
0
        public void AddModulesToShip(IShip ship, int numMods, CargoSynchronizer cargoSynchronizer, LocalIDManager galaxyIDManager)
        {
            for (int i = 0; i < numMods; i++)
            {
                Module m        = null;
                int    moduleID = galaxyIDManager.PopFreeID();
                byte   level    = (byte)Rand.Random.Next(1, 4);
                int    modnum   = Rand.Random.Next(1, 11);
                {
                    switch (modnum)
                    {
                    case 1:
                        m = new EnergyRegenModule(moduleID, level);
                        break;

                    case 2:
                        m = new ThrustModule(moduleID, level);
                        break;

                    case 3:
                        m = new MaxShieldModule(moduleID, level);
                        break;

                    case 4:
                        m = new ShieldRegenModule(moduleID, level);
                        break;

                    case 5:
                        m = new MaxEnergyModule(moduleID, level);
                        break;

                    case 6:
                        m = new DamageModule(moduleID, level);
                        break;

                    case 7:
                        m = new DefenseModule(moduleID, level);
                        break;

                    case 8:
                        m = new TurnRateModule(moduleID, level);
                        break;

                    case 9:
                        m = new LateralThrustModule(moduleID, level);
                        break;

                    case 10:
                        m = new TopSpeedModule(moduleID, level);
                        break;
                    }
                }
                TransactionAddStatefulCargo str = new TransactionAddStatefulCargo(ship, m, true);
                str.OnCompletion += ship.CargoAdded;
                cargoSynchronizer.RequestTransaction(str);
            }
        }
예제 #4
0
    void OnTriggerEnter(Collider col)
    {
        DamageModule dmgmodule = col.transform.root.GetComponent <DamageModule>();

        if (dmgmodule != null)
        {
            dmgmodule.TakeDamage("Generic", damage);
        }
    }
예제 #5
0
 void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag == "Enemy" && rb.velocity.magnitude > 4)
     {
         DamageModule dmod = collision.transform.root.GetComponent <DamageModule> ();
         Debug.Log(dmod);
         dmod.TakeDamage("Generic", massDamage);
         Debug.Log(dmod.currentHealth());
     }
 }
예제 #6
0
 // Use this for initialization
 void Start()
 {
     damageModule = GetComponent<DamageModule>();
     missileNavigator = GetComponent<MissileNavigator>();
 }
예제 #7
0
        public static Module InstantiateModule(CargoModuleData data)
        {
            Module retModule = null;

            int  id    = data.Id;
            byte level = data.Level;

            switch (data.ModuleType)
            {
            case ModuleTypes.EnergyRegenModule:
            {
                retModule = new EnergyRegenModule(id, level);
                break;
            }

            case ModuleTypes.MaxEnergyModule:
            {
                retModule = new MaxEnergyModule(id, level);
                break;
            }

            case ModuleTypes.MaxShieldModule:
            {
                retModule = new MaxShieldModule(id, level);
                break;
            }

            case ModuleTypes.ShieldRegenModule:
            {
                retModule = new ShieldRegenModule(id, level);
                break;
            }

            case ModuleTypes.ThrustModule:
            {
                retModule = new ThrustModule(id, level);
                break;
            }

            case ModuleTypes.DamageModule:
            {
                retModule = new DamageModule(id, level);
                break;
            }

            case ModuleTypes.DefenseModule:
            {
                retModule = new DefenseModule(id, level);
                break;
            }

            case ModuleTypes.TurnRateModule:
            {
                retModule = new TurnRateModule(id, level);
                break;
            }

            case ModuleTypes.LateralThrustModule:
            {
                retModule = new LateralThrustModule(id, level);
                break;
            }

            case ModuleTypes.TopSpeedModule:
            {
                retModule = new TopSpeedModule(id, level);
                break;
            }

            default:
                throw new NotImplementedException("Module type not implemented in MessageReader.ReadModule");
            }

            return(retModule);
        }