Exemplo n.º 1
0
        private void copyDialogset(CStorySceneSection storysection)
        {
            // see if it has a change dialog set property
            var dlgset = storysection.GetVariableByName("dialogsetChangeTo") as CName;

            if (dlgset != null)
            {
                // see if we already have a dialog set with this name
                var destdlgset = findDialogset(DestinationFile, dlgset.Value);
                if (destdlgset == null)
                {
                    // we dont so find the one in the source and copy it.
                    var srcdlgset = findDialogset(SourceFile, dlgset.Value);
                    if (srcdlgset != null)
                    {
                        var CStoryScene        = DestinationFile.GetChunkByType("CStoryScene");
                        var dialogsetInstances = (CArray)CStoryScene.GetVariableByName("dialogsetInstances");

                        var copieddialogset = srcdlgset.Copy(this);
                        DestinationFile.CreatePtr(dialogsetInstances, copieddialogset);
                        var placementTag = (CTagList)copieddialogset.GetVariableByName("placementTag");
                        placementTag.tags.Clear();
                        placementTag.tags.Add((CName)DestinationFile.CreateVariable("CName").SetValue("PLAYER"));
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void copyStorySceneCameras(CStorySceneSection storysection)
        {
            var CStoryScene     = DestinationFile.GetChunkByType("CStoryScene");
            var cameraInstances = (CArray)CStoryScene.GetVariableByName("cameraDefinitions");

            var CStorySceneSource     = SourceFile.GetChunkByType("CStoryScene");
            var cameraInstancesSource = (CArray)CStorySceneSource.GetVariableByName("cameraDefinitions");

            foreach (var e in storysection.sceneEventElements)
            {
                if (e != null && e is CVector && e.Type == "CStorySceneEventCustomCameraInstance")
                {
                    var v = (CVector)e;
                    var n = v.GetVariableByName("customCameraName") as CName;
                    if (n != null)
                    {
                        var camera = findCameraInstance(cameraInstances, n.Value);

                        // Doesn't exist yet, copy from source
                        if (camera == null)
                        {
                            var sourceCamera = findCameraInstance(cameraInstancesSource, n.Value);

                            if (sourceCamera != null)
                            {
                                cameraInstances.AddVariable(sourceCamera.Copy(this));
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        public override List <IPtrAccessor> GetConnections()
        {
            var list = new List <IPtrAccessor>();
            CStorySceneSection sceneSection = (CStorySceneSection)Chunk.data;

            CPtr <CStorySceneChoice> choiceObj = sceneSection.Choice;

            if (choiceObj != null)
            {
                if (choiceObj.Reference != null)
                {
                    list.Add(choiceObj);
                }
            }

            CPtr <CStorySceneLinkElement> nextLinkElementObj = sceneSection.NextLinkElement;

            if (nextLinkElementObj != null)
            {
                if (nextLinkElementObj.Reference != null)
                {
                    list.Add(nextLinkElementObj);
                }
            }

            return(list);
        }
Exemplo n.º 4
0
        private static void removeStorySceneAddFacts(CStorySceneSection storysection)
        {
            var factevents =
                storysection.sceneEventElements.FindAll(
                    delegate(CVariable sectionitem) { return(sectionitem.Type == "CStorySceneAddFactEvent"); });

            foreach (var factevent in factevents)
            {
                storysection.sceneEventElements.Remove(factevent);
            }
        }
Exemplo n.º 5
0
        private static void removeUnnessaryTeleportation(CStorySceneSection storysection)
        {
            var placement_x = 0.0f;
            var placement_y = 0.0f;
            var placement_z = 0.0f;

            storysection.sceneEventElements.ForEach(delegate(CVariable sectionvar)
            {
                var sectionitem = ((CVector)sectionvar);

                if (sectionitem.Type == "CStorySceneEventOverridePlacement")
                {
                    var placement = (CEngineTransform)sectionitem.variables.GetVariableByName("placement");

                    if (placement_x == 0 || Math.Abs(placement.x.val) < Math.Abs(placement_x))
                    {
                        placement_x = placement.x.val;
                    }
                    if (placement_y == 0 || Math.Abs(placement.y.val) < Math.Abs(placement_y))
                    {
                        placement_y = placement.y.val;
                    }
                    if (placement_z == 0 || Math.Abs(placement.z.val) < Math.Abs(placement_z))
                    {
                        placement_z = placement.z.val;
                    }
                }
            });

            // Remove Unnessasary teleportation
            storysection.sceneEventElements.ForEach(delegate(CVariable sectionvar)
            {
                var sectionitem = ((CVector)sectionvar);

                if (sectionitem.Type == "CStorySceneEventOverridePlacement")
                {
                    var placement = (CEngineTransform)sectionitem.variables.GetVariableByName("placement");
                    if (placement != null)
                    {
                        placement.x.val -= placement_x;
                        placement.y.val -= placement_y;
                        placement.z.val -= placement_z;
                    }
                }
                else if (sectionitem.Type == "CStorySceneEventCustomCamera")
                {
                    var cameraDefinition = (CVector)sectionitem.variables.GetVariableByName("cameraDefinition");
                    var cameraTransform  = (CEngineTransform)cameraDefinition.GetVariableByName("cameraTransform");

                    cameraTransform.x.val -= placement_x;
                    cameraTransform.y.val -= placement_y;
                    cameraTransform.z.val -= placement_z;

                    var cameraTranslation = (CVector)sectionitem.variables.GetVariableByName("cameraTranslation");
                    if (cameraTranslation != null)
                    {
                        ((CFloat)cameraTranslation.GetVariableByName("X")).val -= placement_x;
                        ((CFloat)cameraTranslation.GetVariableByName("Y")).val -= placement_y;
                        ((CFloat)cameraTranslation.GetVariableByName("Z")).val -= placement_z;
                    }
                }
                else if (sectionitem.Type == "CStorySceneEventCameraLight")
                {
                    var lightMod1 = (CVector)sectionitem.variables.GetVariableByName("lightMod1");
                    if (lightMod1 != null)
                    {
                        var lightOffset = (CVector)lightMod1.GetVariableByName("lightOffset");

                        if (lightOffset != null)
                        {
                            ((CFloat)lightOffset.GetVariableByName("X")).val -= placement_x;
                            ((CFloat)lightOffset.GetVariableByName("Y")).val -= placement_y;
                            ((CFloat)lightOffset.GetVariableByName("Z")).val -= placement_z;
                        }
                    }
                }
            });
            ///
        }
Exemplo n.º 6
0
        public override void UpdateView()
        {
            base.UpdateView();

            if (lines != null)
            {
                foreach (var l in lines)
                {
                    Controls.Remove(l);
                }
            }

            lines = new List <Label>();

            var y    = 21;
            var line = 0;

            CStorySceneSection sceneSection = (CStorySceneSection)Chunk.data;

            CArray <CPtr <CStorySceneElement> > sceneElements = sceneSection.SceneElements;

            if (sceneElements != null)
            {
                foreach (CPtr <CStorySceneElement> element in sceneElements.Elements)
                {
                    if (element != null)
                    {
                        switch (element.GetPtrTargetType())
                        {
                        case "CStorySceneLine":
                            line++;
                            var label = new Label
                            {
                                Width    = Width,
                                Height   = 20,
                                Location = new Point(0, y),
                                AutoSize = false,
                                Text     = GetDisplayString((CStorySceneLine)element.Reference.data)
                            };
                            lines.Add(label);
                            Controls.Add(label);

                            var texts = TextRenderer.MeasureText(label.Text, label.Font, new Size(Width - 6, 100),
                                                                 TextFormatFlags.WordBreak);
                            label.Height    = texts.Height + 5;
                            label.BackColor = (line % 2) == 0 ? Color.LightBlue : Color.Transparent;

                            label.Click += delegate { FireSelectEvent(element.Reference); };

                            y += label.Height;

                            break;

                        default:
                            break;
                        }
                    }
                }
            }

            Height = y;
        }