Пример #1
0
        /// <summary>
        ///		Ejecuta las funciones llamadas desde el explorador
        /// </summary>
        public void ExecuteFromExplorer(string arguments)
        {
            if (!arguments.IsEmpty())
            {
                string[] parameters = arguments.Split('|');

                if (parameters.Length == 2)
                {
                    BlogEntryViewModel entry = Entries.Search(parameters[1]);

                    if (entry != null)
                    {
                        BlogEntriesCollectionViewModel entries = new BlogEntriesCollectionViewModel {
                            entry
                        };
                        EntryAction action = parameters[0].GetEnum(EntryAction.Unknown);

                        switch (action)
                        {
                        case EntryAction.MarkRead:
                            if (entry.Entry.Status == EntryModel.StatusEntry.Read)
                            {
                                SetStatusEntries(entries, EntryModel.StatusEntry.NotRead);
                            }
                            else
                            {
                                SetStatusEntries(entries, EntryModel.StatusEntry.Read);
                            }
                            break;

                        case EntryAction.MarkInteresting:
                            if (entry.Entry.Status == EntryModel.StatusEntry.Interesting)
                            {
                                SetStatusEntries(entries, EntryModel.StatusEntry.Read);
                            }
                            else
                            {
                                SetStatusEntries(entries, EntryModel.StatusEntry.Interesting);
                            }
                            break;

                        case EntryAction.Delete:
                            DeleteEntries(entries);
                            break;

                        case EntryAction.Play:
                            PlayEntry();
                            break;
                        }
                    }
                }
            }
        }
Пример #2
0
        public static ScriptNode Read(Reader reader, Pointer offset, Script script) {
            MapLoader l = MapLoader.Loader;
            ScriptNode sn = new ScriptNode(offset);

            sn.script = script;
            sn.param = reader.ReadUInt32();
            sn.param_ptr = Pointer.GetPointerAtOffset(offset); // if parameter is pointer
            if (Settings.s.platform == Settings.Platform.DC) reader.ReadUInt32();

            if (Settings.s.mode == Settings.Mode.Rayman3GC) {
                reader.ReadByte();
                reader.ReadByte();
                reader.ReadByte();
                sn.type = reader.ReadByte();

                reader.ReadByte();
                reader.ReadByte();
                sn.indent = reader.ReadByte();
                reader.ReadByte();
            } else {
                reader.ReadByte();
                reader.ReadByte();
                sn.indent = reader.ReadByte();
                sn.type = reader.ReadByte();
            }
            sn.nodeType = NodeType.Unknown;
            if (Settings.s.aiTypes != null) sn.nodeType = Settings.s.aiTypes.GetNodeType(sn.type);
			
            if (sn.param_ptr != null && sn.nodeType != NodeType.Unknown) {
				//l.print("ScriptNode " + offset + " - " + sn.nodeType + " (" + sn.type + ") - " + sn.param_ptr);
				if (sn.nodeType == NodeType.WayPointRef) {
					WayPoint waypoint = WayPoint.FromOffsetOrRead(sn.param_ptr, reader);
				} else if (sn.nodeType == NodeType.String) {
					Pointer.DoAt(ref reader, sn.param_ptr, () => {
						string str = reader.ReadNullDelimitedString();
						l.strings[sn.param_ptr] = str;
					});
				} else if (sn.nodeType == NodeType.ObjectTableRef) {
					// In R2 some objects have object tables that aren't listed normally, but are referenced through scripts.
				} else if (sn.nodeType == NodeType.Button) {
					EntryAction.FromOffsetOrRead(sn.param_ptr, reader);
				} else if (sn.nodeType == NodeType.GameMaterialRef) {
                    GameMaterial.FromOffsetOrRead(sn.param_ptr, reader);
                } else if (sn.nodeType == NodeType.VisualMaterial) {
                    VisualMaterial.FromOffsetOrRead(sn.param_ptr, reader);
                }
            }
            return sn;
        }
        private EntryAction CreateEntryAction(User user, EntryState entryState, Entry entry,
                                              ActionTypesEnum actionTypesEnum)
        {
            var entryAction = new EntryAction
            {
                ActionType   = actionTypesEnum,
                Entry        = entry,
                EntryState   = entryState,
                User         = user,
                DateTime     = DateTime.Now,
                IsRestorable = true
            };

            return(entryAction);
        }
        public async Task <Status> GetEntryPassword(int userId, int entryId)
        {
            var userEntries = await _mainDbContext.UsersEntries
                              .Include(x => x.Entry.CurrentEntryState)
                              .Include(x => x.User)
                              .Where(x => x.EntryId == entryId && x.UserId == userId)
                              .FirstOrDefaultAsync();

            if (userEntries == null)
            {
                return new Status {
                           Success = false, Message = "No entry founded"
                }
            }
            ;

            var userOwnerHash = await _mainDbContext.UsersEntries
                                .Include(x => x.User)
                                .Where(x => x.EntryId == entryId && x.IsUserOwner)
                                .Select(x => x.User.PasswordHash)
                                .FirstOrDefaultAsync();

            var password = SymmetricEncryptor.DecryptToString(userEntries.Entry.CurrentEntryState.PasswordE, userOwnerHash);

            EntryAction newEntryAction = CreateEntryAction(userEntries.User, userEntries.Entry.CurrentEntryState,
                                                           userEntries.Entry, ActionTypesEnum.View);

            try
            {
                await _mainDbContext.AddAsync(newEntryAction);

                await _mainDbContext.SaveChangesAsync();

                return(new Status {
                    Success = true, Message = password
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new Status
                {
                    Success = false,
                    Message = "Something went wrong"
                });
            }
        }
Пример #5
0
 public ActivationPreferenceSetter(T[] existingList, T entry, EntryAction entryAction, long maxValue, long defaultMaxInterval)
 {
     if (entryAction == EntryAction.Insert && (existingList == null || existingList.Length == 0) && entry.DesiredValue != 1)
     {
         throw new ArgumentException("DesiredValue has to be 1, when inserting into an empty list.");
     }
     if (existingList == null)
     {
         this.m_existingList = new T[0];
     }
     else
     {
         this.m_existingList = existingList;
         Array.Sort <T>(this.m_existingList);
     }
     this.m_entry              = entry;
     this.m_entryAction        = entryAction;
     this.m_maxValue           = maxValue;
     this.m_defaultMaxInterval = defaultMaxInterval;
 }
Пример #6
0
        public static string EntryActionToCSharpClass(EntryAction action)
        {
            string str = EntryActionToCSharp(action);

            Regex entryActionRegex = new Regex("EntryAction\\{([^,]+), (.+)\\}");
            Match entryActionMatch = entryActionRegex.Match(str);

            if (!entryActionMatch.Success)
            {
                return("");
            }

            string entryActionName = entryActionMatch.Groups[1].Value.Replace("\"", "");

            str = entryActionRegex.Replace(str,
                                           "public class " + entryActionName + " : EntryAction { " + Environment.NewLine +
                                           "public override bool Check() {" + Environment.NewLine +
                                           "return $2;" + Environment.NewLine +
                                           "}" + Environment.NewLine +
                                           "}"
                                           );

            return(str);
        }
Пример #7
0
        public void Read(Reader reader)
        {
            offset = Pointer.Current(reader);
            switch (type)
            {
            case DsgVarInfoEntry.DsgVarType.Boolean:
                valueBool = reader.ReadBoolean(); break;

            case DsgVarInfoEntry.DsgVarType.Byte:
                valueByte = reader.ReadSByte(); break;

            case DsgVarInfoEntry.DsgVarType.UByte:
                valueUByte = reader.ReadByte(); break;

            case DsgVarInfoEntry.DsgVarType.Float:
                valueFloat = reader.ReadSingle(); break;

            case DsgVarInfoEntry.DsgVarType.Int:
                valueInt = reader.ReadInt32(); break;

            case DsgVarInfoEntry.DsgVarType.UInt:
                valueUInt = reader.ReadUInt32(); break;

            case DsgVarInfoEntry.DsgVarType.Short:
                valueShort = reader.ReadInt16(); break;

            case DsgVarInfoEntry.DsgVarType.UShort:
                valueUShort = reader.ReadUInt16(); break;

            case DsgVarInfoEntry.DsgVarType.Vector:
                float x = reader.ReadSingle();
                float y = reader.ReadSingle();
                float z = reader.ReadSingle();
                valueVector = new Vector3(x, y, z);
                break;

            case DsgVarInfoEntry.DsgVarType.Text:
                valueText = reader.ReadInt32(); break;

            case DsgVarInfoEntry.DsgVarType.Graph:
                valuePointer = Pointer.Read(reader);
                valueGraph   = Graph.FromOffsetOrRead(valuePointer, reader);
                break;

            case DsgVarInfoEntry.DsgVarType.WayPoint:
                valuePointer  = Pointer.Read(reader);
                valueWayPoint = WayPoint.FromOffsetOrRead(valuePointer, reader);
                break;

            case DsgVarInfoEntry.DsgVarType.GameMaterial:
                valuePointer      = Pointer.Read(reader);
                valueGameMaterial = GameMaterial.FromOffsetOrRead(valuePointer, reader);
                break;

            case DsgVarInfoEntry.DsgVarType.VisualMaterial:
                valuePointer        = Pointer.Read(reader);
                valueVisualMaterial = VisualMaterial.FromOffsetOrRead(valuePointer, reader);
                break;

            case DsgVarInfoEntry.DsgVarType.ObjectList:
                valuePointer    = Pointer.Read(reader);
                valueObjectList = ObjectList.FromOffsetOrRead(valuePointer, reader);
                break;

            case DsgVarInfoEntry.DsgVarType.List:
                valueList = new List();
                valueList.Read(reader);
                break;

            case DsgVarInfoEntry.DsgVarType.Light:
                valuePointer = Pointer.Read(reader);
                valueLight   = MapLoader.Loader.FromOffsetOrRead <LightInfo>(reader, valuePointer);
                break;

            case DsgVarInfoEntry.DsgVarType.Comport:
                valuePointer = Pointer.Read(reader);
                valueComport = MapLoader.Loader.FromOffsetOrRead <Behavior>(reader, valuePointer);
                break;

            case DsgVarInfoEntry.DsgVarType.Input:
                valuePointer = Pointer.Read(reader);
                valueInput   = EntryAction.FromOffsetOrRead(valuePointer, reader);
                break;

            // Fill these in after loading
            case DsgVarInfoEntry.DsgVarType.Perso:
                valuePointer = Pointer.Read(reader);
                // Don't fill in perso yet
                MapLoader.Loader.onPostLoad.Add(InitPostLoad);
                break;

            case DsgVarInfoEntry.DsgVarType.Action:
                valuePointer = Pointer.Read(reader);
                // Don't fill in state yet
                MapLoader.Loader.onPostLoad.Add(InitPostLoad);
                break;

            case DsgVarInfoEntry.DsgVarType.SuperObject:
                valuePointer = Pointer.Read(reader);
                // Don't fill in SO yet
                MapLoader.Loader.onPostLoad.Add(InitPostLoad);
                break;

            // TODO: Figure these out
            case DsgVarInfoEntry.DsgVarType.Caps:
                valueCaps = reader.ReadUInt32(); break;

            case DsgVarInfoEntry.DsgVarType.SOLinks:
                valueSOLinks = reader.ReadUInt32(); break;

            case DsgVarInfoEntry.DsgVarType.SoundEvent:
                valueSoundEvent = reader.ReadUInt32(); break;

            case DsgVarInfoEntry.DsgVarType.Way:
                valueWay = reader.ReadUInt32(); break;

            // Arrays
            case DsgVarInfoEntry.DsgVarType.ActionArray:
            case DsgVarInfoEntry.DsgVarType.FloatArray:
            case DsgVarInfoEntry.DsgVarType.IntegerArray:
            case DsgVarInfoEntry.DsgVarType.PersoArray:
            case DsgVarInfoEntry.DsgVarType.SoundEventArray:
            case DsgVarInfoEntry.DsgVarType.SuperObjectArray:
            case DsgVarInfoEntry.DsgVarType.TextArray:
            case DsgVarInfoEntry.DsgVarType.TextRefArray:
            case DsgVarInfoEntry.DsgVarType.VectorArray:
            case DsgVarInfoEntry.DsgVarType.WayPointArray:
            case DsgVarInfoEntry.DsgVarType.GraphArray:
            case DsgVarInfoEntry.DsgVarType.Array11:
            case DsgVarInfoEntry.DsgVarType.Array9:
                ReadArray(reader); break;
            }
        }
Пример #8
0
        public string ToString(Perso perso, TranslatedScript.TranslationSettings ts, bool advanced = false)
        {
            MapLoader l    = MapLoader.Loader;
            short     mask = 0;

            AITypes aiTypes = Settings.s.aiTypes;

            Vector3 vector3 = new Vector3 {
                x = 0, y = 0, z = 0
            };

            switch (nodeType)
            {
            case ScriptNode.NodeType.KeyWord:                     // KeyWordFunctionPtr
                if (param < aiTypes.keywordTable.Length)
                {
                    if (ts.exportMode)
                    {
                        if (aiTypes.keywordTable[param] == "Me")
                        {
                            return("this");
                        }
                        if (aiTypes.keywordTable[param] == "MainActor")
                        {
                            return("Controller.MainActor");
                        }
                        if (aiTypes.keywordTable[param] == "Nobody" || aiTypes.keywordTable[param] == "NoInput" || aiTypes.keywordTable[param] == "Nowhere" || aiTypes.keywordTable[param] == "NoGraph" || aiTypes.keywordTable[param] == "NoAction" || aiTypes.keywordTable[param] == "CapsNull")
                        {
                            return("null");
                        }
                    }

                    return(aiTypes.keywordTable[param]);
                }
                return("UnknownKeyword_" + param);

            case ScriptNode.NodeType.Condition:                     // GetConditionFunctionPtr
                if (param < aiTypes.conditionTable.Length)
                {
                    return(aiTypes.conditionTable[param]);
                }
                return("UnknownCondition_" + param);

            case ScriptNode.NodeType.Operator:                     // GetOperatorFunctionPtr
                if (advanced)
                {
                    if (param < aiTypes.operatorTable.Length)
                    {
                        return(aiTypes.operatorTable[param] + " (" + param + ")");
                    }
                }
                if (param < aiTypes.operatorTable.Length)
                {
                    return(aiTypes.operatorTable[param]);
                }
                return("UnknownOperator_" + param);

            case ScriptNode.NodeType.Function:                     // GetFunctionFunctionPtr
                if (param < aiTypes.functionTable.Length)
                {
                    return(aiTypes.functionTable[param]);
                }
                return("UnknownFunction_" + param);

            case ScriptNode.NodeType.Procedure:                     // ProcedureFunctionReturn
                if (param < aiTypes.procedureTable.Length)
                {
                    return(aiTypes.procedureTable[param]);
                }
                return("UnknownProcedure_" + param);

            case ScriptNode.NodeType.MetaAction:                     // meta action
                if (param < aiTypes.metaActionTable.Length)
                {
                    return(aiTypes.metaActionTable[param]);
                }
                return("UnknownMetaAction_" + param);

            case ScriptNode.NodeType.BeginMacro:
                return("BeginMacro");

            case ScriptNode.NodeType.EndMacro:
                return("EndMacro");

            case ScriptNode.NodeType.Field:
                if (param < aiTypes.fieldTable.Length)
                {
                    return(aiTypes.fieldTable[param]);
                }
                return("UnknownField_" + param);

            case ScriptNode.NodeType.DsgVarRef:                     // Dsg Var
                if (perso != null && perso.brain != null && perso.brain.mind != null)
                {
                    Mind mind = perso.brain.mind;
                    if (mind.dsgMem != null && mind.dsgMem.dsgVar != null)
                    {
                        if (param < mind.dsgMem.dsgVar.dsgVarInfos.Length)
                        {
                            return(mind.dsgMem.dsgVar.dsgVarInfos[param].NiceVariableName);
                        }
                    }
                    else if (mind.AI_model != null && mind.AI_model.dsgVar != null)
                    {
                        if (param < mind.AI_model.dsgVar.dsgVarInfos.Length)
                        {
                            return(mind.AI_model.dsgVar.dsgVarInfos[param].NiceVariableName);
                        }
                    }
                }
                return("dsgVar_" + param);

            case ScriptNode.NodeType.Constant:
                if (advanced)
                {
                    return("Constant: " + BitConverter.ToInt32(BitConverter.GetBytes(param), 0));
                }
                return(BitConverter.ToInt32(BitConverter.GetBytes(param), 0).ToString());

            case ScriptNode.NodeType.Real:
                NumberFormatInfo nfi = new NumberFormatInfo()
                {
                    NumberDecimalSeparator = "."
                };
                if (advanced)
                {
                    return("Real: " + BitConverter.ToSingle(BitConverter.GetBytes(param), 0).ToString(nfi));
                }
                return(BitConverter.ToSingle(BitConverter.GetBytes(param), 0).ToString(nfi) + "f");

            case ScriptNode.NodeType.Button:     // Button/entryaction
                EntryAction ea = EntryAction.FromOffset(param_ptr);

                if (ea == null)
                {
                    return("ERR_ENTRYACTION_NOTFOUND");
                }

                string eaName = (advanced ? ea.ToString() : ea.ToBasicString());
                if (advanced)
                {
                    return("Button: " + eaName + "(" + param_ptr + ")");
                }

                if (!ts.expandEntryActions && ea != null)
                {
                    return("\"" + ea.ExportName + "\"");
                }
                return(eaName);

            case ScriptNode.NodeType.ConstantVector:
                return("Constant Vector: " + "0x" + param.ToString("x8"));    // TODO: get from address

            case ScriptNode.NodeType.Vector:
                return("new Vector3");    // TODO: same

            case ScriptNode.NodeType.Mask:
                mask = (short)param;     // TODO: as short
                if (advanced)
                {
                    return("Mask: " + (mask).ToString("x4"));
                }
                if (ts.exportMode)
                {
                    return("\"" + (mask).ToString("x4") + "\"");
                }
                return("Mask(" + (mask).ToString("x4") + ")");

            case ScriptNode.NodeType.ModuleRef:
                if (advanced)
                {
                    return("ModuleRef: " + "0x" + (param).ToString("x8"));
                }
                return("GetModule(" + (int)param + ")");

            case ScriptNode.NodeType.DsgVarId:
                if (advanced)
                {
                    return("DsgVarId: " + "0x" + (param).ToString("x8"));
                }
                return("DsgVarId(" + param + ")");

            case ScriptNode.NodeType.String:
                string str = "ERR_STRING_NOTFOUND";
                if (l.strings.ContainsKey(param_ptr))
                {
                    str = l.strings[param_ptr];
                }
                if (advanced)
                {
                    return("String: " + param_ptr + " (" + str + ")");
                }
                return("\"" + str + "\"");

            case ScriptNode.NodeType.LipsSynchroRef:
                return("LipsSynchroRef: " + param_ptr);

            case ScriptNode.NodeType.FamilyRef:
                if (advanced)
                {
                    return("FamilyRef: " + param_ptr);
                }
                Family f = Family.FromOffset(param_ptr);
                if (f != null)
                {
                    return("GetFamily(\"" + f.name + "\")");
                }
                else
                {
                    return("Family.FromOffset(\"" + param_ptr + "\")");
                }

            case ScriptNode.NodeType.PersoRef:
                Perso argPerso = Perso.FromOffset(param_ptr);
                if (argPerso != null && perso != null && argPerso.offset == perso.offset)
                {
                    if (advanced)
                    {
                        return("PersoRef: this");
                    }
                    return("this");
                }
                string persoName = argPerso == null ? "ERR_PERSO_NOTFOUND" : argPerso.fullName;
                if (advanced)
                {
                    return("PersoRef: " + param_ptr + " (" + persoName + ")");
                }
                if (argPerso?.brain?.mind?.AI_model != null)
                {
                    AIModel aiModel = argPerso.brain.mind.AI_model;
                    // Make sure to add a cast in case the AI Model is accessed
                    return("((" + aiModel.name + ")GetPerso(\"" + argPerso.namePerso + "\"))");
                }
                return("GetPerso(\"" + argPerso.namePerso + "\")");

            case ScriptNode.NodeType.ActionRef:
                State  state     = State.FromOffset(param_ptr);
                string stateName = state == null ? "ERR_STATE_NOTFOUND" : state.ShortName;
                if (advanced)
                {
                    return("ActionRef: " + param_ptr + " " + stateName);
                }
                if (ts.useStateIndex)
                {
                    return("GetAction(" + state.index.ToString() + ")");
                }
                return(stateName);

            case ScriptNode.NodeType.SuperObjectRef:
                if (advanced)
                {
                    return("SuperObjectRef: " + param_ptr);
                }
                SuperObject so = SuperObject.FromOffset(param_ptr);
                if (so != null)
                {
                    return("GetSuperObject(\"" + so.Gao.name + "\")");
                }
                else
                {
                    return("SuperObject.FromOffset(\"" + param_ptr + "\")");
                }

            case ScriptNode.NodeType.WayPointRef:
                if (advanced)
                {
                    return("WayPointRef: " + param_ptr);
                }
                return("WayPoint.FromOffset(\"" + param_ptr + "\")");

            case ScriptNode.NodeType.TextRef:
                if (l.localization == null)
                {
                    return("TextRef");
                }
                if (advanced)
                {
                    return("TextRef: " + param + " (" + l.localization.GetTextForHandleAndLanguageID((int)param, 0) + ")");
                }
                if (ts.expandStrings)
                {
                    return("\"" + l.localization.GetTextForHandleAndLanguageID((int)param, 0) + "\"");    // Preview in english
                }
                else
                {
                    return("new TextReference(" + (int)param + ")");
                }

            case ScriptNode.NodeType.ComportRef:
                Behavior comportRef = Behavior.FromOffset(param_ptr);

                if (comportRef == null)
                {
                    if (advanced)
                    {
                        return("ComportRef: " + param_ptr + " (null)");
                    }
                    return("null");
                }
                else
                {
                    return(comportRef.ShortName);
                    //string type = comportRef.type == Behavior.BehaviorType.Normal ? "normalBehavior" : "reflexBehavior";
                    //return type + "[" + script.behaviorOrMacro.aiModel.GetBehaviorIndex(comportRef) + "]";
                }

            case ScriptNode.NodeType.SoundEventRef:
                if (advanced)
                {
                    return("SoundEventRef: " + (int)param);
                }
                return("SoundEvent.FromID(0x" + ((int)param).ToString("X8") + ")");

            case ScriptNode.NodeType.ObjectTableRef:
                if (advanced)
                {
                    return("ObjectTableRef: " + param_ptr);
                }

                if (ts.useHashIdentifiers)
                {
                    string objectListJson = ObjectList.FromOffset(param_ptr).ToJSON();

                    string objectListHash = HashUtils.MD5Hash(objectListJson);
                    return("ObjectList.FromHash(\"" + objectListHash + "\")");
                }

                return("ObjectTable.FromOffset(\"" + param_ptr + "\")");

            case ScriptNode.NodeType.GameMaterialRef:
                if (advanced)
                {
                    return("GameMaterialRef: " + param_ptr);
                }
                if (ts.useHashIdentifiers)
                {
                    string gmtJson = GameMaterial.FromOffset(param_ptr).ToJSON();

                    string gmtHash = HashUtils.MD5Hash(gmtJson);
                    return("GameMaterial.FromHash(\"" + gmtHash + "\")");
                }
                return("GameMaterial.FromOffset(\"" + param_ptr + "\")");

            case ScriptNode.NodeType.ParticleGenerator:
                return("ParticleGenerator: " + "0x" + (param).ToString("x8"));

            case ScriptNode.NodeType.VisualMaterial:
                if (advanced)
                {
                    return("VisualMaterial: " + param_ptr);
                }

                if (ts.useHashIdentifiers)
                {
                    string vmtJson = VisualMaterial.FromOffset(param_ptr).ToJSON();

                    string vmtHash = HashUtils.MD5Hash(vmtJson);
                    return("VisualMaterial.FromHash(\"" + vmtHash + "\")");
                }

                return("VisualMaterial.FromOffset(\"" + param_ptr + "\")");

            case ScriptNode.NodeType.ModelRef:                     // ModelCast
                if (advanced)
                {
                    return("AIModel: " + param_ptr);
                }
                AIModel model = AIModel.FromOffset(param_ptr);
                return(model != null ? model.name : "null");

            case ScriptNode.NodeType.DataType42:
                if (advanced)
                {
                    return("EvalDataType42: " + "0x" + (param).ToString("x8"));
                }
                return("EvalDataType42(" + "0x" + (param).ToString("x8") + ")");

            case ScriptNode.NodeType.CustomBits:
                if (advanced)
                {
                    return("CustomBits: " + "0x" + (param).ToString("x8"));
                }
                if (ts.exportMode)
                {
                    return("0x" + (param).ToString("x8"));
                }
                return("CustomBits(" + "0x" + (param).ToString("x8") + ")");

            case ScriptNode.NodeType.Caps:
                if (advanced)
                {
                    return("Caps: " + "0x" + (param).ToString("x8"));
                }
                if (ts.exportMode)
                {
                    return("0x" + (param).ToString("x8"));
                }
                return("Caps(" + "0x" + (param).ToString("x8") + ")");

            case ScriptNode.NodeType.SubRoutine:
                if (advanced)
                {
                    return("Eval SubRoutine: " + param_ptr);
                }
                Macro macro = Macro.FromOffset(param_ptr);
                if (macro == null)
                {
                    return("null");
                }
                return("evalMacro(" + macro.ShortName + ");");

            case ScriptNode.NodeType.Null:
                return("null");

            case ScriptNode.NodeType.GraphRef:
                if (advanced)
                {
                    return("Graph: " + "0x" + (param).ToString("x8"));
                }
                return("Graph.FromOffset(\"" + param_ptr + "\")");
            }

            return("unknown");
        }
Пример #9
0
 private void RaiseActionEvent(EntryAction action)
 {
     Action?.BeginInvoke(this, new ActionEventArgs(action), null, null);
 }
Пример #10
0
 public ActionEventArgs(EntryAction action)
 {
     Action = action;
 }
Пример #11
0
        public static string EntryActionToCSharp(EntryAction action)
        {
            string name = "EntryAction_" + action.offset.offset;

            string str = action.ToBasicString();

            Regex entryActionRegex = new Regex("EntryAction\\{([^,]+), (.+)\\}");

            // Check if the EntryAction is not empty
            Match entryActionMatch = entryActionRegex.Match(str);

            if (!entryActionMatch.Success)
            {
                return("");
            }

            // Keyboard
            Regex regexKeyPressed      = new Regex("KeyPressed\\(([^\\)]+)\\)");
            Regex regexKeyJustPressed  = new Regex("KeyJustPressed\\(([^\\)]+)\\)");
            Regex regexKeyReleased     = new Regex("KeyReleased\\(([^\\)]+)\\)");
            Regex regexKeyJustReleased = new Regex("KeyJustReleased\\(([^\\)]+)\\)");

            str = regexKeyPressed.Replace(str, (m) =>
            {
                return("UnityEngine.Input.GetKey(UnityEngine.KeyCode." + ConvertKeyCode(m.Groups[1].Value) + ")");
            });

            str = regexKeyJustPressed.Replace(str, (m) =>
            {
                return("UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode." + ConvertKeyCode(m.Groups[1].Value) + ")");
            });

            str = regexKeyReleased.Replace(str, (m) =>
            {
                return("(!UnityEngine.Input.GetKey(UnityEngine.KeyCode." + ConvertKeyCode(m.Groups[1].Value) + "))");
            });

            str = regexKeyJustReleased.Replace(str, (m) =>
            {
                return("UnityEngine.Input.GetKeyUp(UnityEngine.KeyCode." + ConvertKeyCode(m.Groups[1].Value) + ")");
            });

            // Joystick
            Regex regexJoystickAxeValue = new Regex("JoystickAxeValue\\(([XY]), ([\\-0-9]+), ([\\-0-9]+)\\)");

            str = regexJoystickAxeValue.Replace(str, "Controller.InputManager.JoystickAxeValue(\"$1\", $2, $3)");

            Regex regexJoystickPressed = new Regex("JoystickOrPadPressed\\(([^)]+)\\)");

            str = regexJoystickPressed.Replace(str, "UnityEngine.Input.GetButton(\"$1\")");

            // ActionValidated
            Regex regexActionValidated = new Regex("ActionValidated\\{EntryAction\\{(\\\"[^\\\"]+\\\"), ([^\\}]+)[\\}]+");

            str = regexActionValidated.Replace(str, "Controller.InputManager.IsActionValidated($1)");

            // Sequences
            str = str.Replace("Sequence", "Controller.InputManager.CheckSequence");

            return(str);
        }
Пример #12
0
 public ActivationPreferenceSetter(T[] existingList, T entry, EntryAction entryAction) : this(existingList, entry, entryAction, 2147483647L, 134217727L)
 {
 }
Пример #13
0
 /// <summary>
 ///		Obtiene un vínculo a una llamada de función externa en JavaScript
 /// </summary>
 private string GetJavaScriptExternalFuction(BlogEntryViewModel entry, string title, EntryAction action)
 {
     return($"<a href='' onclick=\"window.external.ExternalFunction('{action.ToString()}|{entry.Entry.URL}');return false;\">{title}</a>");
 }
Пример #14
0
 /// <summary>
 /// Invokes EnterAction event.
 /// </summary>
 /// <param name="symbol"></param>
 public void OnEntryAction(TInSymbol symbol)
 {
     EntryAction?.Invoke(this, new ActionEventArgs(symbol));
 }
Пример #15
0
    EntryAction DrawEntry(PListDictionary dic, int index)
    {
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField(dic.StringValue(DISPLAY_NAME_KEY), GUILayout.MaxWidth(400));
        EditorGUILayout.LabelField(dic.StringValue(SETTING_KEY), GUILayout.MaxWidth(400));
        var type = (SettingType)System.Enum.Parse(typeof(SettingType), dic.StringValue(TYPE_KEY));

        EditorGUILayout.LabelField(type.ToString(), GUILayout.MaxWidth(200));

        switch (type)
        {
        case SettingType.Bool:
            DrawBoolEntry(dic);
            break;

        case SettingType.String:
            DrawStringEntry(dic);
            break;

        case SettingType.Enum:
            DrawEnumEntry(dic);
            break;

        case SettingType.Array:
        case SettingType.StringList:
            DrawArrayEntry(dic);
            break;

        default:
            EditorGUILayout.LabelField("UNKNOWN", GUILayout.MaxWidth(600));
            break;
        }

        EditorGUILayout.Space();
        EditorGUILayout.LabelField(index.ToString(), GUILayout.MaxWidth(40));
        EntryAction action = EntryAction.None;

        if (GUILayout.Button("^", GUILayout.MaxWidth(40)))
        {
            action = EntryAction.MoveUp;
        }

        if (GUILayout.Button("v", GUILayout.MaxWidth(40)))
        {
            action = EntryAction.MoveDown;
        }

        if (GUILayout.Button("e", GUILayout.MaxWidth(40)))
        {
            action = EntryAction.Edit;
        }

        if (GUILayout.Button("-", GUILayout.MaxWidth(40)))
        {
            if (EditorUtility.DisplayDialog("Remove Entry?", "Remove entry: " + dic.StringValue(DISPLAY_NAME_KEY) + " - " + dic.StringValue(SETTING_KEY), "Remove", "Cancel"))
            {
                action = EntryAction.Remove;
            }
        }

        EditorGUILayout.EndHorizontal();
        return(action);
    }
Пример #16
0
    void DrawEntries()
    {
        //populate default fold out state data if requried
        if (_foldoutState.Count != _groups.Length)
        {
            foreach (var group in _groups)
            {
                _foldoutState[group] = true;
            }
        }

        var settings = _plist.Root.ArrayValue(_settingsDicKey);

        if (settings == null)
        {
            EditorGUILayout.LabelField("Error loading settings");
            return;
        }

        int         actionIndex = -1;
        EntryAction action      = EntryAction.None;
        Color       normalColor = GUI.color;
        Color       altColor    = Color.green;
        bool        useAltColor = false;

        //draw the foldouts
        foreach (var group in _groups)
        {
            GUI.color            = normalColor;
            useAltColor          = false;
            _foldoutState[group] = EditorGUILayout.Foldout(_foldoutState[group], group, _style.Foldout());

            if (!_foldoutState[group])
            {
                continue;
            }

            EditorGUI.indentLevel++;

            for (int ii = 0; ii < settings.Count; ++ii)
            {
                var dic = settings.DictionaryValue(ii);

                if (dic.StringValue(GROUP_KEY) != group)
                {
                    continue;
                }

                var a = DrawEntry(dic, ii);

                if (a != EntryAction.None)
                {
                    action      = a;
                    actionIndex = ii;
                }

                useAltColor = !useAltColor;
                GUI.color   = useAltColor ? altColor : normalColor;
            }

            EditorGUI.indentLevel--;
        }

        GUI.color = normalColor;

        switch (action)
        {
        case EntryAction.Edit:
            PopulateEdit(settings.DictionaryValue(actionIndex));
            break;

        case EntryAction.MoveUp:
            if (actionIndex > 0)
            {
                var entry = settings[actionIndex];
                settings.RemoveAt(actionIndex);
                int newIndex = actionIndex - 1;
                settings.Insert(newIndex, entry);
                _plist.Save();
            }

            break;

        case EntryAction.MoveDown:
            if (actionIndex < settings.Count - 1)
            {
                var entry = settings[actionIndex];
                settings.RemoveAt(actionIndex);
                int newIndex = actionIndex + 1;
                settings.Insert(newIndex, entry);
                _plist.Save();
            }

            break;

        case EntryAction.Remove:
            settings.RemoveAt(actionIndex);
            _plist.Save();
            break;

        default:
            break;
        }
    }