public void Start()
        {
            AttackSpeed  = 1f; Random.Range(1f, 2f);
            AttackDamage = 2f; // Random.Range(1.7f,2.5f);
            if (Game.IsSinglePlayer())
            {
                uid = UidGenerator.GetNewUid();
            }

            PlayerData = Registry.Player [PlayerData.uid].GetComponent <PlayerData> ();

            GetComponentInChildren <Renderer>().material.color = PlayerData.color;
        }
        public virtual void Spawn()
        {
            var shipUid    = UidGenerator.GetNewUid();
            var island     = Registry.Islands[gameObject.GetComponent <IslandData>().Uid];
            var islandData = island.GetComponent <IslandData>();

            // 1) create ship by type
            var go = GameObjectFactory.CreateShip(shipUid, islandData.ShipType, islandData.PlayerData.playerType);

            // 2) append ship at island
            go.transform.Translate(island.transform.position);
            go.transform.parent = island.transform;

            // 3) set ship data
            var shipData = go.AddComponent <ShipData>();

            shipData.shipType   = islandData.ShipType;
            shipData.uid        = shipUid;
            shipData.PlayerData = islandData.PlayerData;

            // 4) colorize @see http://answers.unity3d.com/questions/483419/changing-color-of-children-of-instantiated-prefab.html
            //go.GetComponentInChildren<Renderer>().material.color = Island.PlayerData.color - new Color(0.5f,0.5f,0.5f);

            // 5) life data
            var lifeData = go.AddComponent <LifeData>();

            lifeData.CurrentHp = lifeData.MaxHp = 10;

            // 6) host fires attacks
            go.AddComponent <Assault>();
            go.AddComponent <Defence>();

            // 7) reset spawn timer
            ResetSpawnTimer();

            // Debug.Log("spawn [uid=" + shipUid + "|type=" + shipData.shipType + "] at [uid=" + islandData.uid + "|type=" + islandData.islandType  + "] for player [" + shipData.playerUid + "]");
        }
示例#3
0
        public override void Spawn()
        {
            // check if spawning event already triggered
            if (_fsm.ActiveStateName.Equals("Spawning Ship"))
            {
                return;
            }

            // 1) block spawnings until network event did actually spawn the ship
            _fsm.SendEvent("Spawn");

            // 2) broadcast spawn event
            var json = PackageFactory.CreateSpawnMessage(
                new[] { new JObject
                        {
                            { "island_uid", Island.Uid },
                            { "uid", UidGenerator.GetNewUid() }
                        } });

            SocketHandler.EmitNow("spawn-unit", json);

            // 3 schedule event
            Spawn(json);
        }