Exemple #1
0
        /// <summary>
        /// 检查组合限制
        /// </summary>
        /// <returns></returns>
        private bool CheckCombinationLimitation(CentralController newType)
        {
            foreach (Control item in this.Controls)
            {
                if (item is ucDropController)
                {
                    ucDropController  uc = (item as ucDropController);
                    CentralController existControllerType = uc.TypeInfo;

                    if (existControllerType == null)
                    {
                        continue;
                    }
                    if (newType == existControllerType)
                    {
                        continue;
                    }

                    //验证新加的控制器类型是否和已有的控制器互相兼容
                    if (CheckControllerCompatible(newType, existControllerType, 1) == false)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Exemple #2
0
/*	void OnMouseUp(){
 *              print ("i am selected:"+this.gameObject.name);
 *              if (CentralController.inst.currentSelectedChar) {
 *                      print ("last selectd:" + CentralController.inst.currentSelectedChar.name);
 *                      //hideTerrainGrid (CentralController.inst.currentSelectedChar);
 *              }
 *              CentralController.inst.currentSelectedChar = this.gameObject;
 *              showTerrainGrid (CentralController.inst.currentSelectedChar);
 *              CentralController.inst.state = 100;
 *      }*/

    void showTerrainGrid(GameObject go)
    {
        CentralController cc = CentralController.inst;
        TerrainGrid       tg = cc.getGlobalTerainGrid();

        tg.inactiveAllCells();
        Vector2 pos = CentralController.getPosFromCord(go.transform.position);

        print("ch pos:" + pos);
        int range   = this.GetComponent <Character>().max_move_distance;
        int start_x = (int)(pos.x - range);
        int x       = start_x;
        int start_y = (int)(pos.y + range);
        int y       = start_y;

        for (int k = 0; k < range * 2; k++)
        {
            for (int i = 0; i < range * 2; i++)
            {
                tg.activeCell(x, y);
                y -= 1;
            }
            y  = start_y;
            x += 1;
        }
    }
Exemple #3
0
    public void transformAsFaction(Transform t)
    {
        CentralController cc  = CentralController.inst;
        float             ang = 0;

        t.RotateAround(cc.getTerrainCenterPoint(), new Vector3(0, 1, 0), factionID * (360 / cc.FACTION_NUMBER));
    }
Exemple #4
0
    // 0: valid
    // -1: cell not valid
    // -2: not in range

    int validatePos(Character hero, int x, int y)
    {
        CentralController cc = CentralController.inst;
        TerrainGrid       tg = cc.getGlobalTerainGrid();

        // check if it out of range
        Vector2 pos    = CentralController.getPosFromCord(hero.gameObject.transform.position);
        int     dist_x = (int)pos.x - x;
        int     dist_y = (int)pos.y - y;
        //print ("dist:" + dist_x + "," + dist_y);
        int max = hero.getEffectMaxMoveDistance();

        if (dist_x > max || dist_x < -max ||
            dist_y > max || dist_y < -max)
        {
            return(-2);
        }

        // check if is shown as a valid cell


        if (!tg.IsCellValid(x, y))
        {
            return(-1);
        }


        //GameObject cell = tg.getCell (x, y);



        return(0);
    }
Exemple #5
0
    void hideTerrainGrid()
    {
        CentralController cc = CentralController.inst;
        TerrainGrid       tg = cc.getGlobalTerainGrid();

        tg.inactiveAllCells();
    }
Exemple #6
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            CentralController system = new CentralController();

            Application.Run(system);
        }
Exemple #7
0
    public Vector3 transformPosAsFaction(Vector3 t)
    {
        CentralController cc  = CentralController.inst;
        float             ang = factionID * (360 / cc.FACTION_NUMBER);

        //print ("ang:" + ang);
        //Vector3 pivot = cc.getTerrainCenterPoint () + new Vector3 (0, 1, 0) - cc.getTerrainCenterPoint () ;
        //print ("axis:" + pivot);
        //return RotatePointAroundPivot (t, cc.getTerrainCenterPoint () + new Vector3 (0, 1, 0), new Vector3(0, ang, 0));
        return(RotateRound(t, cc.getTerrainCenterPoint(), Vector3.up, ang));
    }
Exemple #8
0
        void ucController_BeforeAdd(object sender, EventArgs e)
        {
            CentralController typeInfo = (sender as ucDropController).TypeInfo;

            if (CheckBeforeAddController(typeInfo, 1) == false)
            {
                return;
            }

            this.OnBeforeAdd(sender as ucDropController, e);
        }
Exemple #9
0
    // Update is called once per frame
    void Update()
    {
        CentralController cc = CentralController.inst;

        if (cc.gameworld_ready == false)
        {
            return;
        }



        float delta = Time.deltaTime;

        if (_next)
        {
            int   current = cc.current_operating_faction;
            Image image   = images [current];
            Text  text    = _texts [current];
            image.fillAmount = 1;
            Color c = image.color;
            c.r         = 0.6f;
            c.g         = 1;
            c.b         = 0.8f;
            image.color = c;
            text.text   = 0.ToString ("0");
            next();
            _next = false;
        }


        if (cc.current_operating_faction < faction_number)
        {
            time += delta;

            Image image = images [cc.current_operating_faction];
            Text  text  = _texts [cc.current_operating_faction];
            image.fillAmount = (float)time / timeout;
            Color c = image.color;
            c.r         = 0.6f;
            c.g         = 1;
            c.b         = 0.8f;
            image.color = c;
            text.text   = ((int)(timeout - time)).ToString("0");

            //print ("time:" + time);
            if (time > timeout)
            {
                time = 0;

                next();
            }
        }
    }
Exemple #10
0
    // change turn to next player
    public void next()
    {
        CentralController cc = CentralController.inst;

        if (cc.current_operating_faction + 1 >= faction_number)
        {
            cc.current_operating_faction = 0;
        }
        else
        {
            cc.current_operating_faction += 1;
        }
    }
Exemple #11
0
    public void deployCharacters(Character[] characters)
    {
        CentralController cc        = CentralController.inst;
        Vector2           start_pos = new Vector2(8, 8);
        Vector2           cur_pos   = start_pos;
        int row_npc_number          = 8;
        int gap = 2;         // distance between npc

        cur_pos.x -= gap * row_npc_number / 2;
        cur_pos.y += gap * row_npc_number / 2;

        this.characters = characters;
        //Vector3 tc = CentralController.inst.getTerrainCenterPoint ();
        //print ("tc:" + tc);

        // put the npc on to the terrain
        int j = 0;

        for (int i = 0; i < characters.Length; i++)
        {
            Character c = characters [i];
            c.setFaction(this);
            print("current pos:" + cur_pos);

            Vector3 trans_pos = transformPosAsFaction(CentralController.getCordFromPos(cur_pos));
            print("current pos2:" + trans_pos);
            CentralController.inst._move_char(c, CentralController.getPosFromCord(trans_pos));
            //c.transform.position = cc.getCordFromPos((int)cur_pos.x, (int)cur_pos.y);
            print("pos:" + c.transform.position);
            //transformAsFaction (c.transform);

            //c.PlayDieAnimation();
            print("created character " + c.name);


            //c.anim.Play ("DamageFront");
            if (j >= row_npc_number)
            {
                cur_pos.x -= (row_npc_number - 1) * gap;
                cur_pos.y += (row_npc_number + 1) * gap;
                j          = 0;
            }
            else
            {
                cur_pos.x += gap;
                cur_pos.y -= gap;
                j         += 1;
            }
        }
    }
Exemple #12
0
    bool handleSelectChar()
    {
        if (Input.GetMouseButtonUp(0))
        {
            CentralController cc = CentralController.inst;

            RaycastHit hit = new RaycastHit();
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                print(hit.collider.gameObject);
                print(hit.transform.gameObject);
                if (hit.collider.gameObject.tag == "char")
                {
                    print("i am selected:" + hit.transform.gameObject);
                    if (CentralController.inst.currentSelectedChar)
                    {
                        print("last selectd:" + CentralController.inst.currentSelectedChar.name);
                        //hideTerrainGrid (CentralController.inst.currentSelectedChar);
                    }
                    CentralController.inst.currentSelectedChar = hit.transform.gameObject;
                    if (cc.currentSelectedChar.GetComponent <Character>().getFaction().factionID == 0)
                    {
                        showTerrainGrid(CentralController.inst.currentSelectedChar);
                    }
                    CentralController.inst.char_panel.SetActive(true);
                    CentralController.inst.updatePropertyPanel(CentralController.inst.currentSelectedChar.GetComponent <Character>());

                    cc.state       = 100;
                    stop_propagate = true;


                    // move camera center to this object
                    camera_target = hit.point;

                    /*print ("hitpoint:" + hit.point);
                     * Vector3 offset = hit.point - last_terrain_pos;
                     * offset.y = 0;
                     * offset.x /= 4;
                     * offset.z /= 4;
                     * transform.position += offset;
                     * last_terrain_pos = last_terrain_pos + offset;*/

                    return(true);
                }
            }
        }
        return(false);
    }
Exemple #13
0
    void Awake()
    {
        inst = this;

        fs = new FactionSetting[FACTION_NUMBER];
        for (int i = 0; i < FACTION_NUMBER; i++)
        {
            FactionSetting _fs = new FactionSetting();
            fs [i] = _fs;
        }
        factions = new Faction[FACTION_NUMBER];
        //colors = new Color[FACTION_NUMBER];

        print("fs" + fs.GetType().ToString());
    }
Exemple #14
0
 /// <summary>
 /// 获取不再指定范围里的型号,如果都在范围里面则返回null
 /// </summary>
 /// <param name="type1"></param>
 /// <param name="type2"></param>
 /// <param name="number">比较的次数,1是A和B比较,2是B和A比较。</param>
 /// <returns></returns>
 private bool CheckControllerCompatible(CentralController type1, CentralController type2, int number)
 {
     if (string.IsNullOrEmpty(type1.CompatibleModel))
     {
         if (number == 1)
         {
             //type1没有明确兼容的控制器,需要第二次比较,如果type2不兼容type1,则最后结果是不兼容
             return(CheckControllerCompatible(type2, type1, 2));
         }
         else
         {
             return(true);
         }
     }
     else if (type1.CompatibleModel == "none")
     {
         //2.1 - Not compatible with other central controler
         JCMsg.ShowWarningOK(Msg.CONTROLLER_NOT_COMPATIBLE);
         return(false);
     }
     else
     {
         //2.2 - is combinable
         List <string> compatibleModels = new List <string>();
         compatibleModels.AddRange(type1.CompatibleModel.Split(','));
         //兼容性逻辑应该是所有类型适用的,所以下面的判断可以去掉 20160901 by Yunxiao Lin
         //if (type2.Type == ControllerType.CentralController || type2.Type == ControllerType.ONOFF)
         //{
         if (!compatibleModels.Contains(type2.BrandCode == "H" ? type2.Model_Hitachi : type2.Model_York))
         {
             //type1不兼容type2, 有3种情况
             //1. 如果是第二次比较还是不兼容的话,则肯定是不兼容
             //2. 如果是第一次比较,type1不兼容typ2,而type2没有指定兼容的型号,则判断为不兼容。
             if (number == 2 || string.IsNullOrEmpty(type2.CompatibleModel))
             {
                 JCMsg.ShowWarningOK(Msg.CONTROLLER_NOT_COMPATIBLE_WITH(number == 1 ? type2.Model : type1.Model));
                 return(false);
             }
             //3.如果第一次比较下来type1不兼容typ2, 并且type2有明确兼容的型号,则要看type2是不是兼容type1。
             else
             {
                 return(CheckControllerCompatible(type2, type1, 2));
             }
         }
         //}
     }
     return(true);
 }
        /// <summary>
        /// Algorithm to Check combination/Combatibilty between the Controllers
        /// </summary>
        /// <param name="type1"></param>
        /// <param name="type2"></param>
        /// <param name="number"></param>
        /// <returns></returns>
        private bool CheckControllerCompatible(CentralController type1, CentralController type2, int number)
        {
            if (string.IsNullOrEmpty(type1.CompatibleModel))
            {
                if (number == 1)
                {
                    return(CheckControllerCompatible(type2, type1, 2));
                }
                else
                {
                    return(true);
                }
            }
            else if (type1.CompatibleModel == "none")
            {
                //2.1 - Not compatible with other central controler
                //JCHMessageBox.Show("ERROR: Controller Not compatible");
                //---------------- Below code added for multi-language----------//
                JCHMessageBox.Show(Langauge.Current.GetMessage("ERROR_CONTROLLER"));

                return(false);
            }
            else
            {
                //2.2 - is combinable
                List <string> compatibleModels = new List <string>();
                compatibleModels.AddRange(type1.CompatibleModel.Split(',').Select(r => r.Trim()));
                //if (type2.Type == ControllerType.CentralController || type2.Type == ControllerType.ONOFF)
                //{
                if (!compatibleModels.Contains(type2.Model))
                {
                    if (number == 2 || string.IsNullOrEmpty(type2.CompatibleModel))
                    {
                        //JCHMessageBox.Show("ERROR: Controller Not compatible with " + (number ==1 ? type2.Model : type1.Model));
                        //---------------- Below code added for multi-language----------//
                        JCHMessageBox.Show(Langauge.Current.GetMessage("ERROR_NOT_COMPATIABLE") + (number == 1 ? type2.Model : type1.Model));
                        return(false);
                    }
                    else
                    {
                        return(CheckControllerCompatible(type2, type1, 2));
                    }
                }
                //}
            }
            return(true);
        }
Exemple #16
0
        /// 后台加载Controller对象
        /// <summary>
        /// 后台加载Controller对象
        /// </summary>
        /// <param name="item"></param>
        public ucDropController AddController(Controller item, CentralController type)
        {
            ucDropController uc = new ucDropController();

            if (item != null && type != null)
            {
                uc.BindToControl_Controller(item, type);
            }
            this.Controls.Add(uc);

            uc.BeforeDrop   += new DropEventHandler(ucController_BeforeDrop);
            uc.AfterDrop    += new DropEventHandler(ucController_AfterDrop);
            uc.BeforeRemove += new EventHandler(ucController_BeforeRemove);
            uc.BeforeAdd    += new EventHandler(ucController_BeforeAdd);

            return(uc);
        }
Exemple #17
0
        /// <summary>
        /// 将Controller对象的属性绑定到控件
        /// </summary>
        /// <param name="item"></param>
        public void BindToControl_Controller(Controller item, CentralController type)
        {
            if (item == null)
            {
                return;
            }

            this.Controller = item;
            this.TypeInfo   = type;

            SetActive();

            this.SetControllerImage(type.Image);
            this.SetToolTip(type);

            this.UpdateQuantity();
        }
        /// <summary>
        /// Adding Valid controller to the CurrentProject Instance
        /// </summary>
        /// <param name="centralController"></param>
        private void AddControllerToProject(CentralController centralController)
        {
            var findcontroller = Project.CurrentProject.ControllerList.Find(x =>
                                                                            x.ControlGroupID.Equals(_group.Id) && x.Model.Equals(centralController.Model));

            if (findcontroller != null)
            {
                findcontroller.Quantity = findcontroller.Quantity + 1;
            }
            else
            {
                Controller ctrlController = new Controller(centralController);
                ctrlController.AddToControlGroup(_group.Id);
                ctrlController.Quantity = 1;
                ctrlController.AddToControlSystem(_group.ControlSystemID);
                Project.CurrentProject.ControllerList.Add(ctrlController);
            }
        }
Exemple #19
0
        private void ParseControllerType(CentralController ct, string controllerType)
        {
            switch (controllerType.Trim().ToUpper())
            {
            case "LONWORKS INTERFACE":
            case "LONWORKS ADAPTER":
                ct.Type = ControllerType.LonWorksInterface;
                break;

            case "GATEWAY TO MODBUS SYSTEMS FOR 64 IU":
            case "GATEWAY TO MODBUS SYSTEMS FOR 8 IU":
            case "MODBUS ADAPTER":
            case "MODBUS GATEWAY":
            case "MODBUS INTERFACE":
                ct.Type = ControllerType.ModBusInterface;
                break;

            case "BACNET ADAPTER":
            case "BACNET GATEWAY CONNECTABLE TO HC-A64MB":
            case "BACNET GATEWAY CONNECTABLE TO HC-A8MB":
            case "BACNET INTERFACE":
                ct.Type = ControllerType.BACNetInterface;
                break;

            case "GATEWAY TO KNX SYSTEMS FOR 16 IU":
            case "GATEWAY TO KNX SYSTEMS FOR CSNET WEB":
                ct.Type = ControllerType.KNXInterface;
                break;

            case "CENTRALIZED ON-OFF CONTROLLER":
                ct.Type = ControllerType.ONOFF;
                break;

            case "CENTRAL STATION DX SOFTWARE":
            case "CONMUTERIZED CENTRAL CONTROLLER SOFTWARE":
                ct.Type = ControllerType.Software;
                break;

            default:
                ct.Type = ControllerType.CentralController;
                break;
            }
        }
Exemple #20
0
    void OnMouseDown()
    {
        print("Terrain grid clicked111");
        if (Input.GetMouseButtonDown(0))
        {
            print("Terrain grid clicked:" + this.gameObject.name);
            CentralController cc = CentralController.inst;

            /*if (cc.state == 100) { // move character onto this cell
             *      RaycastHit hit;
             *      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             *      if (this.gameObject.GetComponent<Collider>().Raycast(ray, out hit, Mathf.Infinity)) {
             *              Vector2 pos = cc.getPosFromCord(hit.point);
             *              print ("click cell " + pos);
             *      }
             *
             * }*/
        }
    }
Exemple #21
0
    public void after_setup()
    {
        string s_kill = "";

        // prepare its kill and bekilled
        if (kill != null)
        {
            string[] ar_kill = new string[kill.Length];
            //skill = string.Join (", ", kill);
            for (int i = 0; i < kill.Length; i++)
            {
                CharacterSetting cs = CentralController.load_charsetting(kill [i]);
                cs.setup();
                Debug.Log("==>kill:" + cs.name);
                ar_kill [i] = cs.name;
            }
            s_kill = string.Join(" ", ar_kill);
        }
        desc = desc + "\n" + "克制:   " + s_kill;
    }
    public void Initialize(Supervisor sup, List <FSM.Event> previousEvents, string customInit = null)
    {
        // Set central controller
        centralController = manager.GetComponent <CentralController>();

        // Instantiate supervisor
        //supervisorio = new FSM(automaton);
        supervisorio = new FSM(sup, customInit);

        // Get initial gridosition - normally (0,0)
        position = supervisorio.currentState.GetPosition();

        // Instantiate Handlers
        animationComponent.Initialize(manager);
        interfaceComponent.Initialize(manager);
        communicationComponent.Initialize(manager);

        // Set initial position
        animationComponent.FixPosition();

        supervisorio.RunEvents(previousEvents);
    }
Exemple #23
0
        /// 获取当前控件中指定控制器类型的ucDropController控件的数量,用于验证
        /// <summary>
        /// 获取当前控件中指定控制器类型的ucDropController控件的数量,用于验证,需求更改
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public int GetControllerQty(ControllerType type)
        {
            int qty = 0;

            foreach (Control item in this.Controls)
            {
                if (item is ucDropController)
                {
                    ucDropController  uc         = (item as ucDropController);
                    Controller        controller = uc.Controller;
                    CentralController typeInfo   = uc.TypeInfo;
                    if (uc.IsActive)
                    {
                        if (uc.Controller.Type == type)
                        {
                            qty += uc.Controller.Quantity;
                        }
                    }
                }
            }
            return(qty);
        }
Exemple #24
0
        /// 获取当前控件中ucDropController控件的数量,用于验证是否超出最大数量限制
        /// <summary>
        /// 获取当前控件中ucDropController控件的数量,用于验证是否超出最大数量限制
        /// </summary>
        /// <returns></returns>
        public int GetControllerQty()
        {
            int qty = 0;

            foreach (Control item in this.Controls)
            {
                if (item is ucDropController)
                {
                    ucDropController  ucController = item as ucDropController;
                    Controller        controller   = ucController.Controller;
                    CentralController typeInfo     = ucController.TypeInfo;
                    if (controller != null)
                    {
                        //软件不参与统计 modified by Shen Junjie on 2017/12/20
                        if (typeInfo.Type != ControllerType.Software)
                        {
                            qty += controller.Quantity;
                        }
                    }
                }
            }
            return(qty);
        }
Exemple #25
0
    void showTerrainGrid(GameObject go)
    {
        CentralController cc = CentralController.inst;
        TerrainGrid       tg = cc.getGlobalTerainGrid();

        tg.inactiveAllCells();
        Vector2 pos = CentralController.getPosFromCord(go.transform.position);

        print("ch pos:" + pos);
        Character hero    = go.GetComponent <Character> ();
        int       range   = hero.getEffectMaxMoveDistance();
        int       start_x = (int)(pos.x - range);
        int       x       = start_x;
        //if (x < 0)
        //	x = 0;
        //if (x >= tg.gridWidth)
        //	x = tg.gridWidth-1;
        int start_y = (int)(pos.y - range);
        int y       = start_y;

        //if (y < 0)
        //	y = 0;
        //if (y >= tg.gridHeight)
        //	y = tg.gridHeight-1;

        for (int k = 0; k < range * 2 + 1; k++)
        {
            for (int i = 0; i < range * 2 + 1; i++)
            {
                tg.activeCell(x, y);
                y += 1;
            }
            y  = start_y;
            x += 1;
        }
    }
        /// <summary>
        /// Combinations of controllers
        /// </summary>
        /// <param name="newType"></param>
        /// <returns></returns>
        private bool CheckCombinations(CentralController newType)
        {
            foreach (var existingController in Project.CurrentProject.ControllerList)
            {
                if (existingController.ControlGroupID == _group.Id)
                {
                    if (existingController.CentralController != null)
                    {
                        CentralController existControllerType = existingController.CentralController;
                        if (newType.Model == existControllerType.Model)
                        {
                            continue;
                        }

                        if (CheckControllerCompatible(newType, existControllerType, 1) == false)
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
Exemple #27
0
        /// <summary>
        /// 检查室内机、室外机和设备总数的限制
        /// </summary>
        /// <param name="typeInfo"></param>
        /// <param name="indoorQty"></param>
        /// <param name="outdoorQty"></param>
        /// <param name="deviceQty"></param>
        /// <returns></returns>
        private bool CheckSystemQtyLimitation(CentralController typeInfo, int indoorQty, int outdoorQty, int deviceQty)
        {
            //1 - 200 devices (incl. ODU, IDU, remote controller, central controller) can be connected in 1 H-Link
            if (typeInfo.MaxDeviceNumber > 0 && deviceQty > typeInfo.MaxDeviceNumber)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_TOTAL_DEVICE_QTY(typeInfo.MaxDeviceNumber));
                return(false);
            }

            //2 - Indoor quantity limitation
            if (typeInfo.MaxIndoorUnitNumber > 0 && indoorQty > typeInfo.MaxIndoorUnitNumber)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_MAX_INDOOR_QTY(typeInfo.Model, typeInfo.MaxIndoorUnitNumber));
                return(false);
            }

            //3 - Outdoor quantity limitation
            if (typeInfo.MaxSystemNumber > 0 && outdoorQty > typeInfo.MaxSystemNumber)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_MAX_OUTDOOR_QTY(typeInfo.Model, typeInfo.MaxSystemNumber));
                return(false);
            }
            return(true);
        }
Exemple #28
0
    //
    // main entry for test
    //
    FactionSetting loadFactionSettingFromUser(int userid)
    {
        //int char_number = 36;
        //CharacterSetting[] cs = new CharacterSetting[4];

        /*cs[0] = new CharacterSetting("黄忠", "Ethan");
         * string name = "Huangzhong";
         * //UnityEditor.MonoScript go = Instantiate (Resources.Load<UnityEditor.MonoScript>("NPC/" + name ));
         * //CharacterSetting go = Instantiate (Resources.Load<CharacterSetting>("NPC/" + name ));
         *
         * //string someString = "huangzhong";
         * //System.Type myType = someString.GetType();
         * //dynamic go = myType.GetConstructor (System.Type.EmptyTypes).Invoke (null);
         * print("===>333"+ go.GetType());
         */

        /*
         *
         * cs [0].clonable = true;
         * cs [0].movability = 20;
         * cs [0].attack = 10;
         * cs [0].knowledge = 1;
         * cs [0].maxhp = 100;
         * cs [0].maxmp = 100;
         *
         * cs[1] = new CharacterSetting("RedSamurai");
         * cs [1].clonable = true;
         * cs [1].movability = 10;
         * cs [1].attack = 10;
         * cs [1].knowledge = 10;
         * cs [1].maxhp = 60;
         * cs [1].maxmp = 60;
         *
         * cs[2] = new CharacterSetting("Kyle");
         * cs [2].clonable = true;
         * cs [2].movability = 10;
         * cs [2].attack = 10;
         * cs [2].knowledge = 10;
         * cs [2].maxhp = 60;
         * cs [2].maxmp = 60;
         *
         * cs[3] = new CharacterSetting("Troll");
         * cs [3].clonable = true;
         * cs [3].movability = 10;
         * cs [3].attack = 10;
         * cs [3].knowledge = 10;
         * cs [3].maxhp = 60;
         * cs [3].maxmp = 60;
         *
         * FactionSetting fs = new FactionSetting ();
         * fs.userid = userid;
         * for (int i = 0; i < char_number; i++) {
         *      fs.add_character (cs[Random.Range(0, cs.Length)]);
         * }*/

        string[]       chars = { "Huangzhong", "Zhaoyun", "Lvbu", "Caocao", "Sunquan", "Liubei", "Zhugeliang" };
        FactionSetting fs    = new FactionSetting();

        fs.userid = userid;
        for (int i = 0; i < chars.Length; i++)
        {
            CharacterSetting cs = CentralController.load_charsetting(chars [i]);
            cs.setup();
            cs.after_setup();
            print("==cs.name:" + cs.GetType());
            fs.add_character(cs);
        }



        return(fs);
    }
Exemple #29
0
 public void Initialize(GameObject manager)
 {
     centralController = manager.GetComponent <CentralController>();
 }
Exemple #30
0
        /// <summary>
        /// 在添加controller之前做检查
        /// </summary>
        /// <param name="typeInfo">controller类型</param>
        /// <param name="addNumber">增加的数量</param>
        /// <returns></returns>
        private bool CheckBeforeAddController(CentralController typeInfo, int addNumber)
        {
            ControllerLayoutType type = glProject.ControllerLayoutType;
            int controllerQty         = GetControllerQty();
            int outdoorQty            = GetOutdoorQty();
            int indoorQty             = GetIndoorQty();
            int ccControllerQty       = GetControllerQty(ControllerType.CentralController);
            int onoffQty = GetControllerQty(ControllerType.ONOFF);
            int unitQty  = outdoorQty + indoorQty;

            //累加上需要新增的数量
            controllerQty += addNumber;
            switch (typeInfo.Type)
            {
            case ControllerType.ONOFF:
                onoffQty += addNumber;
                break;

            case ControllerType.Software:     //软件不统计数量,但是因为会同时增加一个实体controller,所以需要加上
            case ControllerType.CentralController:
                ccControllerQty += addNumber;
                break;
            }

            int deviceQty = controllerQty + unitQty;  //TODO: 此处还需要加上remote controller的数量

            ////检查产品类型是否匹配
            //if (CheckProductType(ucDropOutdoor1.GetProductTypes(), typeInfo.ProductType) == false)
            //{
            //    return false;
            //}

            //区分exchanger 和system 选中的Controller on 20170830 by xyj
            if (CheckSystemAndExchanger(ucDropOutdoor1.GetOutdoorAndExchanger(), typeInfo.ProductType) == false)
            {
                return(false);
            }

            //区分exchanger类型对应的Controller 类型是否相同on 20170904 by xyj
            if (CheckExchangerIsMatch(ucDropOutdoor1.GetExchangerTypesList(), typeInfo.ProductType) == false)
            {
                return(false);
            }

            //EU暂时忽略设备数及Hlink限制   add on 20180621 by Vince
            if (_mainRegion == "EU_E" || _mainRegion == "EU_S" || _mainRegion == "EU_W")
            {
                return(true);
            }

            //检查设备数量是否符合拖动的controller的限制
            if (CheckSystemQtyLimitation(typeInfo, indoorQty, outdoorQty, deviceQty + addNumber) == false)
            {
                return(false);
            }

            //检查设备数量是否在H-Link的限制范围之内
            bool isHLinkII = !(typeInfo.Protocol.Trim().ToUpper() == "H-LINK" || HasHLinkI());

            if (CheckHLinkLimiation(isHLinkII, indoorQty, outdoorQty, deviceQty + addNumber) == false)
            {
                return(false);
            }

            ////1 - Can be connected upto 8 Central Controllers in 1 H-Link
            //if (typeInfo.Type == ControllerType.CentralController && ccControllerQty > Model.ConstValue.HLINKII_MAX_CC_QTY)
            //{
            //    JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CENTRAL_CONTROLLER_QTY(Model.ConstValue.HLINKII_MAX_CC_QTY));
            //    return false;
            //}



            //1 - Can be connected upto 8 Central Controllers in 1 H-Link
            if (typeInfo.MaxControllerNumber > 0 && ccControllerQty > typeInfo.MaxControllerNumber)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CENTRAL_CONTROLLER_QTY(ControllerConstValue.HLINKII_MAX_CC_QTY));
                return(false);
            }

            //2 - combination limitation
            CheckCombinationLimitation(typeInfo);

            //3 - check quantity of this model
            if (typeInfo.MaxSameModel > 0 && GetControllerQty(typeInfo.Model) + addNumber > typeInfo.MaxSameModel)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CONTROLLER_QTY(typeInfo.MaxSameModel));
                return(false);
            }

            //4 - check quantity of this type
            if (typeInfo.MaxSameType > 0 && GetControllerQty(typeInfo.Type) + addNumber > typeInfo.MaxSameType)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CONTROLLER_QTY(typeInfo.MaxSameType));
                return(false);
            }

            //5 - BACNet Interface Can be connected upto 4 Central Controllers
            if (typeInfo.Type == ControllerType.BACNetInterface && ccControllerQty > ControllerConstValue.BACNET_MAX_CC_QTY)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_BACNET_CC_QTY(ControllerConstValue.BACNET_MAX_CC_QTY));
            }

            //6 - For Web based Cotnrol, max 176 units (ODU + IDU) can be connected.
            if (typeInfo.MaxUnitNumber > 0 && unitQty > typeInfo.MaxUnitNumber)
            {
                //TODO: 此处需要翻译
                JCMsg.ShowWarningOK(Msg.CONTROLLER_UNIT_QTY(typeInfo.Model, typeInfo.MaxUnitNumber));
            }


            return(true);
        }