//

    // Use this for initialization
    void Awake()
    {
        UnityEventCenter.Register <MineSelectEvent>(this, 12);
        UnityEventCenter.Register <CreateUnitEvent>(this);
        UnityEventCenter.Register <ScoreEvent>(this);
        ScoreBoard.getInstance().Init(2);
    }
Esempio n. 2
0
    public override void Attack(GuardAbs guardObj)
    {
        GoldCarrier gc = guardObj.gameObject.GetComponent <GoldCarrier>();

        if (gc == null || gos.Contains(gc.gameObject))
        {
            return;
        }

        gos.Add(gc.gameObject);
        UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip_1));
        if (guardObj.getGuardLevel() <= getAttackLevel())
        {
            //等级相同,摧毁对方(只有超载矿车)
            if (guardObj.DestrotyGameObj(this))
            {    //成功摧毁对方
                TryDestroy(this);
            }
        }
        else
        {
            //等级高于检查站,则扣钱
            int gold = gc.popGold();
            gc.setGoldAmounts(Mathf.FloorToInt(gold * tax));
        }
    }
Esempio n. 3
0
 // Use this for initialization
 void Start()
 {
     if (startAudio != null)
     {
         UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, startAudio, 1.5f));
     }
 }
Esempio n. 4
0
 /// <summary>
 /// 用户点击制造单位
 /// </summary>
 public void OnClick()
 {
     if (isMineSelected == true)
     {
         UnityEventCenter.SendMessage <unitEvent>(new unitEvent(null, null, null, IDList[unitSelected]));
     }
 }
Esempio n. 5
0
 void OnDestroy()
 {
     if (destoryAudio != null)
     {
         UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, destoryAudio, 1.5f));
     }
 }
Esempio n. 6
0
 void Awake()
 {
     instance    = this;
     audioSource = GetComponent <AudioSource>();
     UnityEventCenter.Register <AudioEvent>(this);
     AudioListener.volume = 5f;
 }
Esempio n. 7
0
    protected void buildNow()
    {
        //生成游戏单位代码

        GameObject obj = GameObject.Instantiate <GameObject>(spawnUnit, transform.position, Quaternion.identity);

        obj.gameObject.GetComponent <GameobjBase>().setOwner(gBase.getOwner());//设置控制权

        if (obj.GetComponent <Stone>() != null)
        {
            obj.GetComponent <Stone>().setSpawner(gameObject.transform.parent.gameObject);
        }

        if (isCharacter)
        {
            //只对人有效,对车无效
            Roadmovable roadmovable = obj.gameObject.GetComponent <Roadmovable>();
            if (targetObj != null)
            {
                roadmovable.setDestination(targetObj);//设置跟踪目标,优先
            }
            else if (targetPoint != Vector3.zero)
            {
                roadmovable.setDestination(targetPoint);//设置目的地
            }
        }
        obj.GetComponent <Collider>().enabled = true;
        UnityEventCenter.SendMessage <SpawnEvent>(new SpawnEvent(gameObject, obj));//发送生成单位事件
        startTimer();
    }
Esempio n. 8
0
    /// <summary>
    /// 卸金矿
    /// 重点负责调用
    /// </summary>
    /// <returns></returns>
    public int popGold()
    {
        UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip));
        int g = goldAmounts;

        goldAmounts = 0;
        return(g);
    }
Esempio n. 9
0
 /// <summary>
 /// 按照间隔制造矿车的协程
 /// </summary>
 /// <param name="arr"></param>
 /// <returns></returns>
 IEnumerator createTramcar(Spawner[] arr)
 {
     foreach (Spawner sp in arr)
     {
         UnityEventCenter.SendMessage <CreateUnitEvent>(new CreateUnitEvent(sp.spawnUnit.GetComponent <GameobjBase>().game_ID, Vector3.zero));
         yield return(new WaitForSeconds(createGap));
     }
 }
Esempio n. 10
0
 public override void Attack(GuardAbs guardObj)
 {
     if (guardObj.getGuardLevel() <= getAttackLevel() && guardObj.gameObject.layer == Layers.VEHICLE)
     {
         if (guardObj.DestrotyGameObj(this))
         {
             UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip));
             TryDestroy(this);
         }
     }
 }
Esempio n. 11
0
 public bool DestrotyGameObj(AttackAbs attackObj)
 {
     if (TryDestroy(attackObj))
     {
         UnityEventCenter.SendMessage <DestroyEvent>(new DestroyEvent(gameObject, gameObject));
         return(true);
     }
     else
     {
         return(false);
     }
 }
    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        Ray ray   = new Ray();
        Ray uiRay = new Ray();

        if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
        {
            ray   = Camera.main.ScreenPointToRay(Input.mousePosition);
            uiRay = UICamera.mainCamera.ScreenPointToRay(Input.mousePosition);
        }
        else
        {
            ray   = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
            uiRay = UICamera.mainCamera.ScreenPointToRay(Input.GetTouch(0).position);
        }



        RaycastHit hit = new RaycastHit();

        //if (Layers.CHARACTER == IDs.getLayerByID(sp.spawnUnit.GetComponent<GameobjBase>().game_ID))
        if (sp.spawnUnit.GetComponent <GameobjBase>().game_ID == IDs.getIDByName(Tags.Character.GATEWORKER))
        {//如果是人的话,检测到是搬道闸才能发送信息建造
            Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << Layers.BUILDING | 1 << Layers.RAILWAY);
            if (hit.collider == null || hit.collider.gameObject.tag != Tags.GATE)
            {
                return;
            }
        }
        else
        {
            //这里是车辆被拖动的内容,只能够拖动到待建造面板中

            //广播调用面板对应函数
            surface.BroadcastMessage("onDragCrad", gameObject, SendMessageOptions.DontRequireReceiver);

            //Physics.Raycast(uiRay, out hit,Mathf.Infinity,1<<Layers.UI);
            //if(hit.transform.gameObject.tag==Tags.CAR_SELECTOR)
            //{
            //    int id = sp.spawnUnit.GetComponent<GameobjBase>().game_ID;
            //    string name= sp.spawnUnit.GetComponent<GameobjBase>().game_name;
            //    UnityEventCenter.SendMessage<setVehicleEvent>(new setVehicleEvent(null, hit.transform.gameObject, id,name));
            //}
        }



        if (hit.collider != null)
        {//建造信息
            UnityEventCenter.SendMessage <CreateUnitEvent>(new CreateUnitEvent(sp.spawnUnit.GetComponent <GameobjBase>().game_ID, hit.point));
        }
    }
 protected override void OnPress(bool isPressed)
 {
     base.OnPress(isPressed);
     if (isPressed)
     {
         UnityEventCenter.SendMessage <ViewMoveEvent>(new ViewMoveEvent(false));
     }
     else
     {
         UnityEventCenter.SendMessage <ViewMoveEvent>(new ViewMoveEvent(true));
     }
 }
Esempio n. 14
0
    /// <summary>
    /// 加分
    /// </summary>
    /// <param name="player">加分的玩家</param>
    /// <param name="score">分</param>
    private void addScore(int player, int score)
    {
        if (scores.ContainsKey(player))
        {
            scores[player] = System.Convert.ToInt32(scores[player]) + score;
        }
        else
        {
            throw new System.Exception("- -你难道用了外挂不成,明明没有这个玩家,不不不,其实我知道的,你忘了初始化计分板了吧");
        }

        UnityEventCenter.SendMessage <ScoreEvent>(new ScoreEvent(this, player, System.Convert.ToInt32(scores[player])));//发送玩家分数更新信息
    }
Esempio n. 15
0
    // Use this for initialization
    void Start()
    {
        UnityEventCenter.Register <ScoreEvent>(this);
        barNum = ScoreBoard.getInstance().playerNum;

        for (int i = 0; i < barNum; i++)
        {
            bars.Add(NGUITools.AddChild(gameObject, barPrefab));
            bars[i].GetComponentInChildren <UISprite>().color = cs[i];
            bars[i].GetComponentInChildren <UISprite>().alpha = 0.5f;
            bars[i].GetComponent <UIScrollBar>().value        = 0;
        }
    }
Esempio n. 16
0
    private void tryCancelMine()
    {
        if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
        {
            if (Input.GetMouseButtonDown(0))
            {
                if (Physics.Raycast(UICamera.mainCamera.ScreenPointToRay(Input.mousePosition), 20))//检测是否点击到NGUI
                {
                    return;
                }
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit rh;
                Physics.Raycast(ray, out rh);
                if (rh.collider == null)
                {
                    return;
                }
                MineMountain mine = rh.collider.gameObject.GetComponent <MineMountain>();
                if (mine == null)
                {//没点击到矿山
                    mineSelected = null;
                    UnityEventCenter.SendMessage <cancelMountainEvent>(new cancelMountainEvent(null, null));
                }
            }
        }
        else
        {
            if (Input.touchCount <= 0)
            {
                return;
            }
            Touch touch = Input.GetTouch(0);

            if (touch.phase == TouchPhase.Began && touch.tapCount >= 2)
            {
                Ray        ray = Camera.main.ScreenPointToRay(touch.position);
                RaycastHit rh;
                Physics.Raycast(ray, out rh);
                if (rh.collider == null)
                {
                    return;
                }
                MineMountain mine = rh.collider.gameObject.GetComponent <MineMountain>();
                if (mine == null)
                {//没点击到矿山
                    mineSelected = null;
                    UnityEventCenter.SendMessage <cancelMountainEvent>(new cancelMountainEvent(null, null));
                }
            }
        }
    }
Esempio n. 17
0
 // Use this for initialization
 void Start()
 {
     UnityEventCenter.Register <setOffEvent>(this);
     UnityEventCenter.Register <setVehicleEvent>(this);
     for (int i = 0; i < vehicleAmountUpgrd; i++)//初始化发车预选框
     {
         GameObject vehicle = NGUITools.AddChild(vehicleCardTable.gameObject, vehicleCardPrefab);
         vehicle.tag = Tags.CAR_SELECTOR;
         vehicle.transform.localScale    = new Vector3(1, 1, 1);
         vehicle.transform.localPosition = new Vector3(1, 1, 1);
         vehicle.layer = Layers.UICARD;
     }
     vehicleCardTable.Reposition();
 }
Esempio n. 18
0
    void OnTriggerEnter(Collider other)
    {
        //这里要处理所有玩家的单位,所以不去继承之前写的那个基类
        GameobjBase gBase   = other.GetComponent <GameobjBase>();
        GoldCarrier carrier = other.GetComponent <GoldCarrier>();

        if (gBase == null || carrier == null)
        {
            return;
        }
        UnityEventCenter.SendMessage <ScoreAddEvent>(new ScoreAddEvent(gameObject, gBase.getOwner(), carrier.popGold()));//发送分数增加事件
        other.gameObject.SendMessage(GameobjBase.TryDestroyFUNC);
        //Destroy(other.gameObject);
    }
Esempio n. 19
0
    public override void Attack(GuardAbs guardObj)
    {
        enemyAbs = guardObj.gameObject.GetComponent <GuardAbs>();
        if (guardObj.gameObject.layer == Layers.CHARACTER && enemyAbs != null)
        {
            if (enemyAbs.getGuardLevel() <= ATTACKLEVEL)
            {
                gunnerEnemy = guardObj.gameObject.GetComponent <GunnerAttack>();
                if (gunnerEnemy != null)
                {
                    try
                    {
                        enemyAbs.TryDestroy(myAbs);
                        myAbs.TryDestroy(myAbs);
                        UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip));
                    }
                    catch
                    {
                        guardObj.SendMessage(GameobjBase.TryDestroyFUNC);
                        gameObject.SendMessage(GameobjBase.TryDestroyFUNC);

                        //Destroy(guardObj.gameObject);
                        //Destroy(this.gameObject);
                    }
                }
                else
                {
                    try
                    {
                        enemyAbs.TryDestroy(myAbs);
                        UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip));
                    }
                    catch
                    {
                        guardObj.gameObject.SendMessage(GameobjBase.TryDestroyFUNC);

                        //Destroy(guardObj.gameObject);
                    }
                    finally
                    {
                        bulletCount--;
                        if (bulletCount == 0)
                        {
                            myAbs.TryDestroy(myAbs);
                        }
                    }
                }
            }
        }
    }
Esempio n. 20
0
    // Use this for initialization
    void Awake()
    {//这里不能改动,一定只能在Awake函数里
     //  UnityEventCenter.Register<DestroyEvent>(this);
        UnityEventCenter.Register <SpawnEvent>(this);
        //  UnityEventCenter.Register<ScoreEvent>(this);
        UnityEventCenter.Register <MineMoutainSpawnerEvent>(this);
        rm = GetComponent <AIDetector>();

        GameObject[] gos = GameObject.FindGameObjectsWithTag(Tags.RAILWAY_POINT);

        foreach (GameObject x in gos)
        {
            rps.Add(x.GetComponent <RoadPoint>());
        }
    }
Esempio n. 21
0
 void Start()
 {
     UnityEventCenter.Register <MineSelectEvent>(this);
     UnityEventCenter.Register <cancelMountainEvent>(this);
     sp                  = new List <Spawner>();
     picList             = new List <string>();
     IDList              = new List <int>();
     producer            = this.transform.Find("producer").GetComponent <UISprite>();
     button              = this.transform.Find("producer").GetComponent <UIButton>();
     cdsprite            = this.transform.Find("forCD").GetComponent <UISprite>();
     cdsprite.fillAmount = 0.0f;
     CDTime              = new List <float>();
     isMineSelected      = false;
     button.normalSprite = null;
 }
Esempio n. 22
0
    /// <summary>
    /// 游戏结束判定,返回1为胜利,0为未结束,-1为失败
    /// </summary>
    /// <param name="score"></param>
    /// <returns></returns>
    public int isWin(playerInformation player)
    {
        switch (gameType)
        {
        case ARRIVAL_VERSUS:
        {
            if (player.score >= missionScore)
            {
                //发送游戏结束消息
                UnityEventCenter.SendMessage <GameOverEvent>(new GameOverEvent(player.playerNum, ScoreBoard.getInstance().getScoreData()));
            }
            return(0);
        }

        default: return(-1000);
        }
    }
Esempio n. 23
0
    public override void OnWorldUnitCollisionStart(Collider obj)
    {
        if (obj.gameObject != targetGate)
        {
            return;
        }


        if (obj.tag == Tags.GATE)
        {
            targetGate.GetComponent <MetroGate>().GateChange(transform.position);
            if (targetGate.GetComponent <MetroGate>().getCanChange())
            {
                UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip));
            }
        }
    }
Esempio n. 24
0
 void Awake()
 {
     //注册生成单位事件
     //TODO: 未完成
     UnityEventCenter.Register <SpawnEvent>(this);
 }
Esempio n. 25
0
 void OnDisable()
 {
     UnityEventCenter.UnRegister <setOffEvent>(this);
     UnityEventCenter.UnRegister <setVehicleEvent>(this);
 }
Esempio n. 26
0
 public override void Arrive()
 {
     SendMessage(Builder.BUILDFUNC);
     UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip));
     base.Arrive();
 }
Esempio n. 27
0
 private ScoreBoard()
 {
     UnityEventCenter.Register <ScoreAddEvent>(this);
 }
Esempio n. 28
0
 public UILabel reminder;//用户提醒器
 // Use this for initialization
 void Start()
 {
     UnityEventCenter.Register <waitClickEvent>(this);
     UnityEventCenter.Register <cancelClickEvent>(this);
 }
Esempio n. 29
0
 void OnDisable()
 {
     UnityEventCenter.UnRegister <waitClickEvent>(this);
     UnityEventCenter.UnRegister <cancelClickEvent>(this);
 }
Esempio n. 30
0
 void OnDisable()
 {
     UnityEventCenter.UnRegister <ScoreEvent>(this);
     UnityEventCenter.UnRegister <cancelMountainEvent>(this);
 }