Exemplo n.º 1
0
            public Task <string> GetName()
            {
                if (!ObjName.Empty())
                {
                    return(Task.FromResult(ObjName));
                }

                string name = NamesStore.GetByIndex(Object.Name.Index);

                if (!name.Empty() && (Object.Name.Number > 0 && Object.Name.Index != Object.Name.Number))
                {
                    name += "_" + Object.Name.Number;
                }

                int pos = name.LastIndexOf('/');

                if (pos == -1)
                {
                    ObjName = name;
                    return(Task.FromResult(ObjName));
                }

                ObjName = name.Substring(pos + 1);
                return(Task.FromResult(ObjName));
            }
Exemplo n.º 2
0
        /// <summary>
        /// 针对导出重写查询
        /// </summary>
        /// <param name="st"></param>
        /// <returns></returns>
        protected override MDataTable Select(GridConfig.SelectType st)
        {
            MDataTable dt;

            if (st.ToString() == "Export")
            {
                if (ObjName.Substring(0, 3).ToLower() == "vs_")
                {
                    string spName = ObjName.Substring(3);
                    string conn   = CrossDb.GetConn(ObjName);
                    dt = Select_SP(spName, conn);
                }
                else if (Query <string>("isCompany") == "1")
                {
                    string spName = "sp_SelectCompany";
                    string conn   = CrossDb.GetConn(ObjName);
                    dt = SelectList_SP(spName, conn);
                }
                else
                {
                    dt = base.Select(st);
                }
            }
            else
            {
                dt = base.Select(st);
            }
            return(dt);
        }
Exemplo n.º 3
0
        protected override bool Execute(CodeActivityContext context)
        {
            object obj    = ID.Get(context);
            int?   IntId  = null;
            string StrId  = null;
            Guid?  GuidId = null;

            if (obj == null)
            {
                Error.Set(context, "Не определен Идентификатор объекта");
                return(false);
            }
            try
            {
                if (ObjectType == enumObjectTypeForName.HierLev1 ||
                    ObjectType == enumObjectTypeForName.HierLev2 ||
                    ObjectType == enumObjectTypeForName.HierLev3 ||
                    ObjectType == enumObjectTypeForName.PS ||
                    ObjectType == enumObjectTypeForName.Section ||
                    ObjectType == enumObjectTypeForName.TI)
                {
                    IntId = Convert.ToInt32(obj);
                }
                if (ObjectType == enumObjectTypeForName.Balance_PS ||
                    ObjectType == enumObjectTypeForName.Balance_HierLev0 ||
                    ObjectType == enumObjectTypeForName.Balance_HierLev3 ||
                    ObjectType == enumObjectTypeForName.User ||
                    ObjectType == enumObjectTypeForName.Formula)
                {
                    StrId = Convert.ToString(obj);
                }
            }
            catch
            {
                Error.Set(context, "Ошибка преобразования идентификатора объекта");
                return(false);
            }

            TObjectName res = null;

            try
            {
                res = ARM_Service.ALARM_GetObjectName(ObjectType, IntId, StrId, GuidId, PathDelim);
            }
            catch (Exception ex)
            {
                Error.Set(context, ex.Message);
            }

            if (res != null)
            {
                ObjName.Set(context, res.Name);
                ObjPath.Set(context, res.Path);
                Error.Set(context, res.Error);
            }

            return(string.IsNullOrEmpty(Error.Get(context)));
        }
Exemplo n.º 4
0
 /// <summary>
 /// 重写查询事件
 /// </summary>
 public override void GetList()
 {
     if (ObjName.Substring(0, 3).ToLower() == "vs_")
     {
         string spName = ObjName.Substring(3);
         string conn   = CrossDb.GetConn(ObjName);
         jsonResult = Select_SP(spName, conn).ToJson(true, false, true);
     }
     else if (Query <string>("isCompany") == "1")
     {
         string spName = "sp_SelectCompany";
         string conn   = CrossDb.GetConn(ObjName);
         jsonResult = SelectList_SP(spName, conn).ToJson(true, false, true);
     }
     else
     {
         base.GetList();
     }
 }
Exemplo n.º 5
0
 public override int GetHashCode()
 {
     return(ObjID.GetHashCode() + ObjName.GetHashCode());
 }
Exemplo n.º 6
0
        /// <summary>
        /// 入力した内容を解析するアルゴリズム
        /// </summary>
        public void FormulaAnalysis()
        {
            //Define Parameters
            ToKen   token;
            TknKind bef_tok_kind = TknKind.None;

            loopInfo = 0;
            //DV2_Drawing dv2d_FA = new DV2_Drawing();
            string objName         = "";
            string objAnalysisData = "";
            string objCommandData  = "";

            string[] storageData;
            int      dataGridView_index = 0;
            int      objFinder_index    = 0;

            System.DateTime currentTime = new System.DateTime();
            currentTime = System.DateTime.Now;
            #region Boolean Flags
            bool pointDef_flg = false;
            bool pointGet_flg = false;
            bool pointSol_flg = false;
            bool objPlus_flg  = false;
            bool rotation_flg = false;
            bool setPoint_flg = false;
            bool clear_flg    = false;
            bool cleartar_flg = false;
            #endregion

            //Debug
            //LogOutput("Resources.Graph_line  :> " + Properties.Resources.Graph_line);
            LogOutput("Formula Analysis Strat at ->   *******  " + currentTime + "  *******");
            //LogOutput("Settings.GraphicInstruction  :> " + DV2.Net_Graphics_Application.Properties.Settings.Default.GraphicInstruction);
            //LogOutput(dataStorage.Text.Length);

            if (dataStorage.Text.Length != 0)
            {
                LogOutput(String.Format("{0, -15}", "Text") + String.Format("{0, -15}", "Kind") + String.Format("{0, -15}", "numVal"));
                LogOutput("---------------------------------------------");

                #region コマンド内容はチャ-の単位として循環処理
                for (char txtChar = ' '; loopInfo < dataStorage.Text.Length;)
                {
                    txtChar = dataStorage.Text[loopInfo];
                    token   = nextTkn(txtChar);
                    LogOutput(">>>token.kind iS -> " + String.Format("{0, -15}", token.kind));
                    //LogOutput(">>bef_tok_kind iS -> " + String.Format("{0, -15}", bef_tok_kind));

                    #region コマンド終わり判断
                    if (token.kind == TknKind.END_line)
                    {
                        break;
                    }
                    #endregion

                    #region Command "Assign" Route
                    if (token.kind == TknKind.Assign)
                    {
                        //例:対象を定義する obj1 = line(0,0,20,10)
                        if (bef_tok_kind == TknKind.Ident)
                        {
                            //dataStorage
                            storageData = Regex.Split(dataStorage.Text, "=", RegexOptions.IgnoreCase);
                            //LogOutput("TknKind.Ident+TknKind.Assign Length ->" + storageData.Length);
                            //入力した命令を保存する
                            if (storageData.Length == 2)
                            {
                                if (ObjectFinder(storageData[0].Replace(" ", "")) == -1)
                                {
                                    ObjName.Add(storageData[0].Replace(" ", ""));
                                    ObjCommand.Add(storageData[1].Replace(" ", ""));
                                }
                                else
                                {
                                    objName = storageData[0].Replace(" ", "");
                                    ObjCommand[ObjectFinder(storageData[0].Replace(" ", ""))] = storageData[1].Replace(" ", "");
                                }
                                //データ監視器--データ導入
                                dataGridView_index = this.dataGridView_monitor.Rows.Add();
                                this.dataGridView_monitor.Rows[dataGridView_index].Cells[0].Value = storageData[0].Replace(" ", "");
                                this.dataGridView_monitor.Rows[dataGridView_index].Cells[1].Value = storageData[1].Replace(" ", "");
                            }
                            else
                            {
                                codeOutput("Error @FormulaAnalysis @341");
                                break;
                            }
                        }
                    }
                    #endregion

                    #region Command "Show" Route
                    if (token.kind == TknKind.Ident)
                    {
                        //表示命令を判別する
                        if (bef_tok_kind == TknKind.Show)
                        {
                            //tabControl_Graphics.SelectTab(1);
                            //表示したい対象名が存在するかどうかを判断する
                            if (ObjectFinder(token.text) != -1)
                            {
                                objFinder_index = ObjectFinder(token.text);
                            }
                            else
                            {
                                tobeRead.SpeakAsync("表示される " + token.text + " 対象は不存在,もう一度確認してください。");
                                codeOutput("表示される " + token.text + " 対象は不存在,もう一度確認してください。");
                                return;
                            }

                            //表示したい対象名が存在する場合は,その同じ順番配列データの有効性を判断する
                            if (ObjName[objFinder_index] != null && ObjAnalysis[objFinder_index] != null)
                            {
                                //LogOutput(ObjCommand[objFinder_index]);
                                //LogOutput(ObjAnalysis[objFinder_index]);
                                //分析結果を転送する
                                ParameterChecker(ObjAnalysis[objFinder_index], objFinder_index);
                                picBox.Refresh();
                            }

                            else
                            {
                                tobeRead.SpeakAsync("表示される " + token.text + " 対象は不存在,もう一度確認してください。");
                                codeOutput("表示される " + token.text + " 対象は不存在,もう一度確認してください。");
                            }

                            if (!ROTATIONFLAG)
                            {
                                LogOutput("ROTATIONFLAG is " + ROTATIONFLAG);
                                debug_Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
                                picBox.Refresh();
                                ROTATIONFLAG = true;
                            }
                            MakeObjectBraille();
                        }
                    }
                    #endregion

                    #region Command "Point Define" Route
                    if (token.kind == TknKind.Point)
                    {
                        //変数pをPoint型として宣言
                        if (bef_tok_kind == TknKind.Colon)
                        {
                            //Ex:"var p : Point" -> "p = Point(0,0)"  -- このコマンドは点pを原点に初期値(0,0)に設定する
                            storageData = Regex.Split(dataStorage.Text, ":", RegexOptions.IgnoreCase);
                            if (ObjectFinder(storageData[0].Replace(" ", "")) == -1)
                            {
                                ObjName.Add(storageData[0].Replace(" ", ""));
                                ObjCommand.Add(storageData[1].Replace(" ", ""));
                            }
                            else
                            {
                                objName = storageData[0].Replace(" ", "");
                                ObjCommand[ObjectFinder(storageData[0].Replace(" ", ""))] = storageData[1].Replace(" ", "");
                            }

                            //データ監視器--データ導入
                            dataGridView_index = this.dataGridView_monitor.Rows.Add();
                            this.dataGridView_monitor.Rows[dataGridView_index].Cells[0].Value = storageData[0];
                            this.dataGridView_monitor.Rows[dataGridView_index].Cells[1].Value = storageData[1].Replace(" ", "");
                            //pointDef_flgフラグをtrueに設定する
                            pointDef_flg = true;
                        }
                    }
                    #endregion

                    #region Command "Get P" Route
                    if (token.kind == TknKind.Ident)
                    {
                        //To get the finger point on the object
                        //Ex:get p on obj1
                        if (bef_tok_kind == TknKind.Get)
                        {
                            //pointGet_flgフラグをtrueに設定する
                            pointGet_flg = true;
                        }
                    }
                    #endregion

                    #region Command "Slove" Route
                    if (token.kind == TknKind.Ident)
                    {
                        //Slove the math program
                        //Ex:solve c by contact(obj1,obj2,p)
                        if (bef_tok_kind == TknKind.Solve)
                        {
                            //pointSol_flgフラグをtrueに設定する
                            pointSol_flg = true;
                        }
                    }
                    #endregion

                    #region Command "Object Plus" Route
                    if (token.kind == TknKind.Ident)
                    {
                        //Ex:obj3=obj1+obj2
                        if (bef_tok_kind == TknKind.Plus)
                        {
                            //objPlus_flgフラグをtrueに設定する
                            objPlus_flg = true;
                        }
                    }
                    #endregion

                    #region Command "Clear Object" Route
                    if (token.kind == TknKind.Ident)
                    {
                        //Ex:clear obj
                        if (bef_tok_kind == TknKind.Clear)
                        {
                            LogOutput("Clear The graphObj");
                            //cleartar_flgフラグをtrueに設定する
                            cleartar_flg = true;
                        }
                    }
                    #endregion

                    #region Command "Clear ALL" Route
                    if (token.kind == TknKind.Clear)
                    {
                        //Ex:clear
                        if (dataStorage.Text.Length != 0 && dataStorage.Text.ToLower() == "clear")
                        {
                            LogOutput("Clear ALL The graphObj");
                            //clear_flgフラグをtrueに設定する
                            clear_flg = true;
                        }
                    }
                    #endregion

                    #region Command "Set" Route
                    if (token.kind == TknKind.Set)
                    {
                        //Setting the parameters
                    }
                    #endregion

                    #region Command "Rotate" Route
                    if (token.kind == TknKind.Lparen)
                    {
                        if (bef_tok_kind == TknKind.Rotation)
                        {
                            //画像を回転する
                            rotation_flg = true;
                        }
                    }
                    #endregion

                    #region Command "SetPoint" Route
                    if (token.kind == TknKind.SetPoint)
                    {
                        //相対位置処理入口
                        setPoint_flg = true;
                    }
                    #endregion

                    bef_tok_kind     = token.kind;
                    objAnalysisData += token.kind + "|";
                    objCommandData  += token.text + "|";
                    //LogOutput(String.Format("{0, -15}", token.text) + String.Format("{0, -15}", token.kind) + String.Format("{0, -15}", token.dblVal));
                }
                #endregion

                #region  書き処理
                //Modify old data
                if (ObjAnalysis.Count == ObjName.Count && objName != "" && ObjectFinder(objName) != -1)
                {
                    bool assignFlag = false;
                    int  loop_i;

                    //分析結果を保存する
                    //正規表現関数
                    for (loop_i = 0; loop_i < Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase).Length; loop_i++)
                    {
                        if (Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase)[loop_i] == "Assign")
                        {
                            assignFlag = true;
                            break;
                        }
                    }

                    if (assignFlag)
                    {
                        objAnalysisData = string.Join("|", Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase).Skip(loop_i + 1).ToArray());
                        ObjAnalysis[ObjectFinder(objName)] = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                        this.dataGridView_monitor.Rows[dataGridView_index].Cells[2].Value = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                    }
                    else
                    {
                        ObjAnalysis[ObjectFinder(objName)] = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                        this.dataGridView_monitor.Rows[dataGridView_index].Cells[2].Value = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                    }

                    //Ex:"obj1|=|line|(|1|,|2|,|20.0|,|25.5|)|" -> "obj1|=|line|(|1|,|2|,|20.0|,|25.5|)"
                    ObjCommand[ObjectFinder(objName)] = objCommandData.Substring(0, objCommandData.Length - 1);
                    LogOutput("Modify Debug Point");
                }
                #endregion

                #region 解析結果
                //New data appended!
                if (ObjAnalysis.Count < ObjName.Count)
                {
                    bool assignFlag = false;
                    int  loop_i;

                    //分析結果を保存する
                    //正規表現関数
                    for (loop_i = 0; loop_i < Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase).Length; loop_i++)
                    {
                        if (Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase)[loop_i] == "Assign")
                        {
                            assignFlag = true;
                            break;
                        }
                    }

                    if (assignFlag)
                    {
                        objAnalysisData = String.Join("|", Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase).Skip(loop_i + 1).ToArray());
                        ObjAnalysis.Add(objAnalysisData.Substring(0, objAnalysisData.Length - 1));
                        this.dataGridView_monitor.Rows[dataGridView_index].Cells[2].Value = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                    }
                    else
                    {
                        ObjAnalysis.Add(objAnalysisData.Substring(0, objAnalysisData.Length - 1));
                        this.dataGridView_monitor.Rows[dataGridView_index].Cells[2].Value = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                    }

                    if (ObjCommand.Count == ObjName.Count)
                    {
                        //Ex:"obj1|=|line|(|1|,|2|,|20.0|,|25.5|)|" -> "obj1|=|line|(|1|,|2|,|20.0|,|25.5|)"
                        ObjCommand.RemoveAt(ObjCommand.Count - 1);
                        ObjCommand.Add(objCommandData.Substring(0, objCommandData.Length - 1));
                    }
                }
                #endregion
            }

            else
            {
                codeOutput("Error @FormulaAnalysis MSG: Please Input Data!");
            }

            //此処から処理するのデータは自動保存されていない。
            if (dataStorage.Text.Length != 0 && ObjName.Count != 0)
            {
                //未完成
                //予定機能は対象名の重複データをチェックする
                //DuplicateChecking();
            }

            #region PointDefine Route
            if (pointDef_flg)
            {
                if (Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase)[0].ToLower() == "var")
                {
                    string[] temp = Regex.Split(ObjCommand[ObjCommand.Count - 1].ToString(), @"\|", RegexOptions.IgnoreCase);
                    //Data Remove
                    ObjName.RemoveAt(ObjName.Count - 1);
                    ObjCommand.RemoveAt(ObjCommand.Count - 1);
                    ObjAnalysis.RemoveAt(ObjAnalysis.Count - 1);

                    //New Data Append
                    ObjName.Add(temp[1]);
                    ObjCommand.Add("Point|(|0|,|0|)");
                    ObjAnalysis.Add("Point|Lparen|IntNum|Comma|IntNum|Rparen");
                    //データ監視器 Rewirte
                    this.dataGridView_monitor.Rows[dataGridView_index].Cells[0].Value = temp[1];
                    this.dataGridView_monitor.Rows[dataGridView_index].Cells[1].Value = "point(0,0)";
                    this.dataGridView_monitor.Rows[dataGridView_index].Cells[2].Value = "Point|Lparen|IntNum|Comma|IntNum|Rparen";
                }
            }
            #endregion

            #region PointGet Route
            if (pointGet_flg)
            {
                //get P on obj1
                //objCommandData	"get|p|on|obj1|"
                //objAnalysisData	"Get|Ident|On|Ident|"
                objCommandData  = objCommandData.Substring(0, objCommandData.Length - 1);
                objAnalysisData = objAnalysisData.Substring(0, objAnalysisData.Length - 1);

                if (Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase).Count() == 4)
                {
                    GetPointOnObject(objCommandData, objAnalysisData);
                }
                else
                {
                    //Error
                    LogOutput("Error @FormulaAnalysis PointGet Route");
                    tobeRead.SpeakAsync("入力ミスが発生していた。");
                }
            }
            #endregion

            #region The Solve Route
            if (pointSol_flg)
            {
                //solve c by contact(obj1,ojb2,p)
                //objCommandData	"solve|c|by|contact|(|obj1|,|ojb2|,|p|)|"
                //objAnalysisData	"Solve|Ident|Ident|Contact|Lparen|Ident|Comma|Ident|Comma|Ident|Rparen|"
                objCommandData  = objCommandData.Substring(0, objCommandData.Length - 1);
                objAnalysisData = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                string[] tmpCommData  = Regex.Split(objCommandData, @"\|", RegexOptions.IgnoreCase);
                string[] tmpAnaData   = Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase);
                int      identCounter = 0;
                bool     contact_flag = false;

                foreach (var temp in tmpAnaData)
                {
                    if (temp == "Ident")
                    {
                        identCounter++;
                    }
                    if (temp == "Contact")
                    {
                        contact_flag = true;
                    }
                }
                if (contact_flag == true && identCounter == 5)
                {
                    TheSolveMode(objCommandData, tmpCommData, objAnalysisData, tmpAnaData);
                }
            }
            #endregion

            #region objPlus Route
            if (objPlus_flg)
            {
                //obj3=obj1+obj2
                //objCommandData	"obj3|=|obj1|+|obj2|"
                //objAnalysisData	"Ident|Plus|Ident|"
                objCommandData  = objCommandData.Substring(0, objCommandData.Length - 1);
                objAnalysisData = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                AssignRemover(ref objCommandData);
                string[] tmpCommData = Regex.Split(objCommandData, @"\|", RegexOptions.IgnoreCase);
                string[] tmpAnaData  = Regex.Split(objAnalysisData, @"\|", RegexOptions.IgnoreCase);

                if (objAnalysisData != "Ident|Plus|Ident")
                {
                    //Error Route
                    return;
                }

                for (int i = 0; i < tmpAnaData.Length; i++)
                {
                    if (tmpAnaData[i] == "Ident")
                    {
                        if (ObjectFinder(tmpCommData[i]) == -1)
                        {
                            tobeRead.SpeakAsync(ObjectFinder(tmpCommData[i]) + "対象は定義されていません!");
                            codeOutput(ObjectFinder(tmpCommData[i]) + "対象は定義されていません!");
                        }
                    }
                }
            }
            #endregion

            #region Rotation Route
            if (rotation_flg)
            {
                //rotation -30
                //objCommandData	"rotation|(|obj1|,|30|)|"
                //objAnalysisData	"Rotation|Lparen|Ident|Comma|IntNum|Rparen|"
                objCommandData  = objCommandData.Substring(0, objCommandData.Length - 1);
                objAnalysisData = objAnalysisData.Substring(0, objAnalysisData.Length - 1);

                Rotation(objCommandData, objAnalysisData);
            }
            #endregion

            #region setPoint Route
            if (setPoint_flg)
            {
                //obj1:setpoint(LEFT,obj2,Right,10,0)
                //objCommandData	"obj1|:|setpoint|(|LEFT|,|obj2|,|Right|,|10|,|0|)|"
                //objAnalysisData	"Ident|Colon|SetPoint|Lparen|Left|Comma|Ident|Comma|Right|Comma|IntNum|Comma|IntNum|Rparen|"
                objCommandData  = objCommandData.Substring(0, objCommandData.Length - 1);
                objAnalysisData = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                LogOutput("objCommandData     " + objCommandData);
                LogOutput("objAnalysisData    " + objAnalysisData);

                TheSetPointMode(objCommandData, objAnalysisData);
            }
            #endregion

            #region Clear Route
            if (clear_flg)
            {
                LogOutput("clear_flg" + clear_flg);
                graphObj.Dispose();
                debug_Image.Dispose();
                graphObj     = PreparePaper();
                picBox.Image = (Image)debug_Image;
                picBox.Refresh();

                ObjDisplayed.Clear();
                DotDataInitialization(ref forDisDots);
                DotDataInitialization(ref allDotData);
                Dv2Instance.SetDots(forDisDots, BlinkInterval);

                if (!ROTATIONFLAG)
                {
                    LogOutput("ROTATIONFLAG is " + ROTATIONFLAG);
                    debug_Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
                    picBox.Refresh();
                    ROTATIONFLAG = true;
                }
            }

            if (cleartar_flg)
            {
                //clear objA
                //objCommandData   clear|objA
                //objAnalysisData  Clear|Ident
                objCommandData  = objCommandData.Substring(0, objCommandData.Length - 1);
                objAnalysisData = objAnalysisData.Substring(0, objAnalysisData.Length - 1);
                LogOutput("objCommandData     " + objCommandData);
                LogOutput("objAnalysisData    " + objAnalysisData);

                if (ObjDisplayed.Count == 1 || ObjDisplayed.Count == 0)
                {
                    graphObj.Dispose();
                    debug_Image.Dispose();
                    graphObj     = PreparePaper();
                    picBox.Image = (Image)debug_Image;
                    picBox.Refresh();

                    ObjDisplayed.Clear();
                    DotDataInitialization(ref forDisDots);
                    DotDataInitialization(ref allDotData);
                    Dv2Instance.SetDots(forDisDots, BlinkInterval);
                }

                else
                {
                    //Processing
                    if (!ClearTargetAndCheck(objCommandData, objAnalysisData))
                    {
                        //処理失敗の流れ
                    }
                }
            }
            #endregion

            LogOutput("---------------------------------------------");
            LogOutput("Formula Analysis End at ->   *******  " + System.DateTime.Now + "  *******");
            if (ROTATIONFLAG)
            {
                LogOutput("ROTATIONFLAG is " + ROTATIONFLAG);
                debug_Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
                ROTATIONFLAG = false;
            }
        }
Exemplo n.º 7
0
    }                                                                                                       // End of BuidTile Function

    //----------------------------------------------------------------------------------------//

    IEnumerator BuildPrefabs(XmlNode ObjectsGroup)
    {
        int height             = int.Parse(ObjectsGroup.ParentNode.Attributes["height"].Value);
        int tilewidth          = int.Parse(ObjectsGroup.ParentNode.Attributes["tilewidth"].Value);
        int tileheight         = int.Parse(ObjectsGroup.ParentNode.Attributes["tileheight"].Value);
        GameObject ObjGroup    = new GameObject(ObjectsGroup.Attributes["name"].Value);
        Transform GrpTransform = ObjGroup.transform;

        GrpTransform.parent = MapTransform;

        //if (ObjectsGroup.Attributes["type"] != null)
        //    Debug.Log("Obj Null Type: "+ ObjectsGroup.Attributes["type"].Value);           // Get complete Obj Layer Props.

        foreach (XmlNode ObjInfo in ObjectsGroup.ChildNodes)
        {
            string ObjName;

            if (ObjInfo.Attributes["type"] != null)
            {
                ObjName = ObjInfo.Attributes["type"].Value.ToLower();                       // Check type match
            }
            else if (ObjInfo.Attributes["name"] != null)
            {
                ObjName = ObjInfo.Attributes["name"].Value.ToLower();                       // else take it's name as type
            }
            else
            {
                continue;                                                                   // else discard object
            }
            if (Resources.Load("Prefabs/" + ObjName, typeof(GameObject)))
            {
                GameObject ObjPrefab = (GameObject)Instantiate(Resources.Load("Prefabs/" + ObjName, typeof(GameObject)));

                Transform ObjTransform = ObjPrefab.transform;
                ObjTransform.position = new Vector3(
                    (float.Parse(ObjInfo.Attributes["x"].Value) / tilewidth) + (ObjTransform.localScale.x * .5f),         // X
                    height - (float.Parse(ObjInfo.Attributes["y"].Value) / tileheight - ObjTransform.localScale.y * .5f), // Y
                    MapTransform.position.z);                                                                             // Z

                if (ObjInfo.Attributes["gid"] == null)                                                                    //  If not a gid it's a Trigger Volume (Great)
                {
                    ObjTransform.localScale = new Vector3(float.Parse(ObjInfo.Attributes["width"].Value) / tilewidth,
                                                          float.Parse(ObjInfo.Attributes["height"].Value) / tileheight, 1);

                    ObjTransform.position += new Vector3((ObjTransform.localScale.x * .5f) - .5f,
                                                         -(ObjTransform.localScale.y * .5f + .5f),
                                                         MapTransform.position.z);                     // Model your own space!
                }


                ObjTransform.name   = ObjName.Remove(0, ObjName.LastIndexOf("/") + 1);
                ObjTransform.parent = GrpTransform;

                #region OBJS PROPS

                switch (ObjName.ToLower())
                {
                case "pombero":
                {
                    Managers.Game.PlayerPrefab = ObjPrefab;
                    Managers.Display.cameraScroll.SetTarget(Managers.Game.PlayerPrefab.transform, false);
                    PlayerTransform = Managers.Game.PlayerPrefab.transform;
                    //Debug.Log("setting up position in TileManager");
                    Managers.Register.SetPlayerPos();

                    foreach (XmlNode ObjProp in ((XmlElement)ObjInfo).GetElementsByTagName("property"))
                    {
                        if (ObjProp.Attributes["name"].Value.ToLower() == "zoom")
                        {
                            ((CameraTargetAttributes)ObjPrefab.GetComponent <CameraTargetAttributes>()).distanceModifier =
                                float.Parse(ObjProp.Attributes["value"].Value.ToLower());
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "offset")
                        {
                            ((CameraTargetAttributes)ObjPrefab.GetComponent <CameraTargetAttributes>()).Offset =
                                ReadVector(ObjProp.Attributes["value"].Value.ToLower(), 0);
                        }
                    }
                }
                break;

                case "door":
                    goto case "warp";

                case "warp":
                {
                    Portal portal = (Portal)ObjPrefab.GetComponent <Portal>();
                    portal.SetType((Portal.type)Enum.Parse(typeof(Portal.type), ObjName));

                    if (((XmlElement)ObjInfo).GetElementsByTagName("property").Item(0) != null)
                    {
                        portal.SetTarget(((XmlElement)ObjInfo).GetElementsByTagName("property").Item(0).Attributes["value"].Value);
                    }

                    portal.SetId((ObjInfo.Attributes["name"] != null ? ObjInfo.Attributes["name"].Value : ObjName));
                }
                break;

                case "flyPlatformA":
                    goto case "flyPlatform";

                case "flyPlatformB":
                    goto case "flyPlatform";

                case "flyPlatform":
                {
                    PlatformMove platform = (PlatformMove)ObjPrefab.GetComponent <PlatformMove>();

                    foreach (XmlNode ObjProp in ((XmlElement)ObjInfo).GetElementsByTagName("property"))
                    {
                        if (ObjProp.Attributes["name"].Value.ToLower() == "target")
                        {
                            var target = ReadVector(ObjProp.Attributes["value"].Value, 0);
                            platform.EndPosition = target;
                        }
                        if (ObjProp.Attributes["name"].Value.ToLower() == "speed")
                        {
                            platform.Speed = float.Parse(ObjProp.Attributes["value"].Value);
                        }
                    }
                }
                break;

                case "chat":
                {
                    Conversation chat = (Conversation)ObjPrefab.GetComponent <Conversation>();

                    foreach (XmlNode ObjProp in ((XmlElement)ObjInfo).GetElementsByTagName("property"))
                    {
                        if (ObjProp.Attributes["name"].Value.ToLower() == "file")
                        {
                            chat.ConversationFile = (TextAsset)Resources.Load(ObjProp.Attributes["value"].Value, typeof(TextAsset));
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "oneshotid")
                        {
                            chat.OneShot   = true;
                            chat.oneShotId = ObjProp.Attributes["value"].Value;
                            //chat.NameId = chat.oneShotId ;
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "sound")
                        {
                            chat.soundChat = (AudioClip)Resources.Load(ObjProp.Attributes["value"].Value, typeof(AudioClip));
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "nameid")
                        {
                            chat.NameId = ObjProp.Attributes["value"].Value;
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "zoom")
                        {
                            chat.zoom = float.Parse(ObjProp.Attributes["value"].Value);
                        }
                        //Managers.Dialog.Init(chat.ConversationFile);
                    }
                    Debug.Log("Deploying Conversation");
                }
                break;

                case "camerabound":
                {
                    foreach (XmlNode ObjProp in ((XmlElement)ObjInfo).GetElementsByTagName("property"))
                    {
                        if (ObjProp.Attributes["name"].Value.ToLower() == "zoom")
                        {
                            ((CameraBounds)ObjPrefab.GetComponent <CameraBounds>()).ZoomFactor =
                                float.Parse(ObjProp.Attributes["value"].Value);
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "offset")
                        {
                            ((CameraBounds)ObjPrefab.GetComponent <CameraBounds>()).Offset =
                                ReadVector(ObjProp.Attributes["value"].Value, 0);
                        }
                    }
                }
                break;

                default:
                    foreach (XmlNode ObjProp in ((XmlElement)ObjInfo).GetElementsByTagName("property"))
                    {
                        if (ObjProp.Attributes["name"].Value.ToLower() == "depth")
                        {
                            ObjPrefab.transform.position += Vector3.forward *
                                                            float.Parse(ObjProp.Attributes["value"].Value);
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "rotation")
                        {
                            ObjPrefab.transform.localRotation = Quaternion.Euler(new Vector3(0, 0,
                                                                                             float.Parse(ObjProp.Attributes["value"].Value)));
                        }

                        if (ObjProp.Attributes["name"].Value.ToLower() == "scale")
                        {
                            ObjPrefab.transform.localScale  = ReadVector(ObjProp.Attributes["value"].Value);
                            ObjPrefab.transform.localScale += Vector3.forward;
                        }
                    }
                    break;
                }

                #endregion
            }
            else
            {
                Debug.LogWarning("Object '" + ObjName + "' Was not found at: " + "Resources/Prefabs/");
            }

            yield return(0);
        }
    }
Exemplo n.º 8
0
        /// <summary>
        /// DV-2のボタンを動作イベント関数
        /// このイベントを宣言すると,DV-2のボタンが押された時に,処理できる
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Dv2KeyEventHandle(object sender, DV.KeyEventArgs e)
        {
            bool moved_flg = false;
            //for the test
            int objFinder_index = 0;

            tobeRead.SpeakAsyncCancelAll();
            #region Debug
            if (false)
            {
                codeOutput("************************************************");
                codeOutput("Shift -+-> " + e.Shift);
                codeOutput("Kind -+-> " + e.Kind);
                codeOutput("Value -+-> " + e.Value);
            }
            #endregion

            //DotViewの何かのキーが押された時の処理
            #region フロントキー処理
            // ***************フロントキー処理***************
            if (e.Shift == 128 && e.Kind == 0 && e.Value == 0)
            {
                //親指キー
                tobeRead.SpeakAsync("親指キー");
                int cir_x = 24 + movement.X;
                int cir_y = 16 + movement.Y;

                ObjName.Add("obj11");
                ObjCommand.Add("obj11|=|circle|(|" + cir_x + "|,|" + cir_y + "|,|15|)");
                ObjAnalysis.Add("Circle|Lparen|IntNum|Comma|IntNum|Comma|IntNum|Rparen");

                objFinder_index = ObjectFinder("obj11");
                ParameterChecker(ObjAnalysis[objFinder_index], objFinder_index);
                MakeObjectBraille();
            }

            if (e.Shift == 64 && e.Kind == 0 && e.Value == 0)
            {
                //ステータスキー
                tobeRead.SpeakAsync("ステータスキー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 16)
            {
                //拡大キー
                tobeRead.SpeakAsync("拡大キー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 128)
            {
                //縮小キー
                tobeRead.SpeakAsync("縮小キー");
            }

            if (e.Shift == 0 && e.Kind == 5 && e.Value == 8)
            {
                //方向レバー 上
                //tobeRead.SpeakAsync("方向レバー 上");
                movement.Y -= 1;
                moved_flg   = true;

                if (movement.Y < 0)
                {
                    movement.Y = 0;
                    moved_flg  = false;
                }
            }

            if (e.Shift == 0 && e.Kind == 5 && e.Value == 4)
            {
                //方向レバー 下
                //tobeRead.SpeakAsync("方向レバー 下");
                movement.Y += 1;
                moved_flg   = true;

                if (movement.Y + 0 > picBox.Height)
                {
                    movement.Y = picBox.Height - 0;
                    moved_flg  = false;
                }
            }

            if (e.Shift == 0 && e.Kind == 5 && e.Value == 16)
            {
                //方向レバー 左
                //tobeRead.SpeakAsync("方向レバー 左");
                movement.X -= 1;
                moved_flg   = true;

                if (movement.X < 0)
                {
                    movement.X = 0;
                    moved_flg  = false;
                }
            }

            if (e.Shift == 0 && e.Kind == 5 && e.Value == 2)
            {
                //方向レバー 右
                //tobeRead.SpeakAsync("方向レバー 右");
                movement.X += 1;
                moved_flg   = true;

                if (movement.X + 0 > picBox.Width)
                {
                    movement.X = picBox.Width - 0;
                    moved_flg  = false;
                }
            }

            if (e.Shift == 16 && e.Kind == 0 && e.Value == 0)
            {
                //方向レバー 中心
                tobeRead.SpeakAsync("方向レバー 中心");
            }
            #endregion

            #region サイドキー処理
            // ***************サイドキー処理***************
            if (e.Shift == 0 && e.Kind == 4 && e.Value == 1)
            {
                //上矢印キー
                tobeRead.SpeakAsync("上矢印キー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 2)
            {
                //下矢印キー
                tobeRead.SpeakAsync("下矢印キー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 8)
            {
                //左矢印キー
                tobeRead.SpeakAsync("左矢印キー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 4)
            {
                //右矢印キー
                tobeRead.SpeakAsync("右矢印キー");
            }

            if (e.Shift == 32 && e.Kind == 0 && e.Value == 0)
            {
                //センターキー
                tobeRead.SpeakAsync("センターキー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 64)
            {
                //エンドキー
                tobeRead.SpeakAsync("エンドキー");
            }

            if (e.Shift == 0 && e.Kind == 4 && e.Value == 32)
            {
                //ホームキー
                tobeRead.SpeakAsync("ホームキー");
            }
            #endregion

            // *************** 移動処理 ***************
            if (moved_flg)
            {
                DotDataInitialization(ref forDisDots);

                for (int width = 0; width < 48; width++)
                {
                    for (int height = 0; height < 32; height++)
                    {
                        #region for Test

                        /*
                         * if (movement.X + width >= picBox.Width)
                         * {
                         *  movement.X = picBox.Width - width;
                         * }
                         *
                         * if (movement.Y + height >= picBox.Height)
                         * {
                         *  movement.Y = picBox.Height - height;
                         * }
                         */
                        #endregion
                        forDisDots[width, height] = allDotData[movement.X + width, movement.Y + height];
                    }
                }
                Dv2Instance.SetDots(forDisDots, BlinkInterval);
                label_posX.Text = movement.X.ToString();
                label_posY.Text = movement.Y.ToString();
            }
        }